Ok, this "immutable restriction" appears to be quite understandable... once we know it ! Maybe the manual should mention it in the section http://julia.readthedocs.org/en/latest/manual/types/#man-parametric-types .
2014-11-28 11:22 GMT+01:00 Keno Fischer <[email protected]>: > You can actually do this if you declare Joker to be immutable (at least in > 0.4, I'm not sure if that change happened before the 0.3 release or not) > > On Fri, Nov 28, 2014 at 5:15 AM, <[email protected]> > wrote: > >> Ok, so the parameter can only be an integer or a type, am I right ? Is it >> specified in the manual ? >> >> Thanks, >> Sébastien >> Le vendredi 28 novembre 2014 01:50:37 UTC+1, [email protected] a écrit : >> >>> The parameter to MyType{} needs to be a type, but Joker() is an >>> instance. Just use MyType{Joker}(4) >>> >>> Cheers >>> Lex >>> >>> On Friday, November 28, 2014 9:50:08 AM UTC+10, >>> [email protected] wrote: >>>> >>>> Hello, >>>> >>>> Say I have a parametric type: >>>> >>>> type MyType{T} >>>> var1 >>>> end >>>> >>>> >>>> >>>> In the most of the case T is a simple integer, and there is no problem >>>> with that. However, sometimes T is an instance of an singleton type, like: >>>> >>>> >>>> type Joker end >>>> >>>> >>>> Thus I would like to instantiate >>>> >>>> MyType{Joker()}(4) >>>> >>>> but I have the following error message: >>>> >>>> ERROR: type: apply_type: in MyType, expected Type{T<:Top}, got >>>> Joker >>>> >>>> >>>> >>>> Reading this message, I understand that the parameters of the types >>>> have to be define "at the top"... This seems true while >>>> MyType{MyType{4}(3)}(2) >>>> throw a similar error message. >>>> >>>> In the documentation : http://julia.readthedocs.org/ >>>> en/latest/manual/types/#man-parametric-types there is no mention of >>>> such a restriction (or I didn't find it!). >>>> >>>> How can I make `MyType{Joker()}(4)` work the way I want ? >>>> >>>> Regards, >>>> Sébastien >>>> >>> >
