<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 3 Apr 2013, at 18:28, James Noble wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Calibri; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">not sure here. I'll accept it for now, but if they really were nominal, I think it breaks your interval example as the two templates would have different nominal types.  But I think I know what you mean - perhaps something like singleton types?? - which is fine.</span></blockquote></div><br><div>What I meant was: the only templates are those generated by the template mechanism in the language.   I can't cons up a new object out of whole cloth and have it be a template, even if it does have all of the right methods.   Maybe "branded" is a better word.</div><div><br></div><div>If you plan to use template types to do type inference, then </div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>template { method a -> Number ; method b -> Done }</div><div><br></div><div>better have the same type as</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>template  template { method a -> Number } + template { method b -> Done }</div><div><br></div><div>I thought of doing this using flow analysis and constant propagation, rather than type checking, but I can see that you could use type checking.</div><div><br></div><div><div></div><blockquote type="cite"><div><span class="Apple-tab-span" style="white-space:pre">       </span>myObject.template or mirrors.templateOf(Object)</div><div><br></div><div>do you think of this as as base-level operation or a metal-level operation -</div><div><br></div></blockquote><br></div><div>Getting a template from an object is clearly a meta-level operation.   But then, so is inheritance.   So I think that's OK.</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>Andrew</div></body></html>