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
>>>>
>>>
>

Reply via email to