<div dir="ltr"><div class="gmail_extra">2016-07-22 1:34 GMT+03:00 Dmitri Gribenko <span dir="ltr">&lt;<a href="mailto:gribozavr@gmail.com" target="_blank">gribozavr@gmail.com</a>&gt;</span>:<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span class="">&gt; Mirror.DisplayStyle contains optional and set as special cases, but does not<br>&gt; contain function<br>&gt; Mirror collects all information possible at initialization, while for true<br>&gt; reflection we want laziness<br>&gt; Mirror allows customization. For example, Array&lt;T&gt; is represented with a<br>&gt; field for each of its elements. Do we want this for “true” reflection we<br>&gt; want to add in the future?<br><br></span>Why can&#39;t we add these features to Mirror in future?</blockquote><div><br></div><div>Reflection in some other languages works as follows: we have a type (let&#39;s name it &#39;Reflection&#39;). Each instance of it contains ID of one type and can, for example, retrieve an array of its static or normal methods.<br></div><div>&#39;Mirror&#39;, on the other hand, serves as a container for information about a single instance. Moreover, types can completely customize contents of their &#39;Mirror&#39;s. This is incompatible with laziness and with how reflection should work, based on experience from other languages.</div></div></div>