sure, i understand the reasoning, i just didn't know it was actually 
implemented / verified in any way.  rewriting the code now...  cheers, 
andrew

On Thursday, 9 July 2015 12:03:57 UTC-3, Yichao Yu wrote:
>
> On Thu, Jul 9, 2015 at 10:59 AM, andrew cooke <and...@acooke.org 
> <javascript:>> wrote: 
> > 
> > ah!  thank-you.  i had no idea about that. 
> > 
> > is there any kind of isbits container?  will a tuple work? 
>
> The type system uses === to compare the parameters (and it has to be 
> this way since it should be simple) so having a reference to a mutable 
> should never work. If you want an array of `isbits` as parameter, an 
> tuple of it should work on 0.4 
>
>
> Another way to see why a vector should never work is that e.g. you have 
>
> a = [1, 2] 
> T1 = A{a} 
> push!(a, 3) 
> T2 = A{an} 
> T3 = A{[1, 2]} 
> T4 = A{[1, 2]} 
>
> Should any of the T*'s be equal? 
>
>
> > 
> > thanks again, 
> > 
> > andrew 
> > 
> > 
> > On Thursday, 9 July 2015 11:56:45 UTC-3, Yichao Yu wrote: 
> >> 
> >> On Thu, Jul 9, 2015 at 10:52 AM, andrew cooke <and...@acooke.org> 
> wrote: 
> >> > I want to do what I wrote, I think!  In particular, the type 
> parameter 
> >> > is 
> >> > itself a value, the polynomial x.  It's immutable and a subclass of 
> >> > Integer. 
> >> > So I have no idea why the code should not work. 
> >> 
> >> It's not `isbits` though. 
> >> 
> >> > 
> >> > It's unusual to have a complex value like that in a type, I know, but 
> it 
> >> > makes logical sense here - it's the type of values in the quotient 
> ring 
> >> > with 
> >> > that ideal. 
> >> > 
> >> > Andrew 
> >> > 
> >> > 
> >> > 
> >> > On Thursday, 9 July 2015 11:44:42 UTC-3, Tom Breloff wrote: 
> >> >> 
> >> >> I'm not 100% sure I understand what you want, but here's a stab for 
> >> >> line 
> >> >> 16: 
> >> >> 
> >> >> ZField{T1.parameters[1],T2}(x) 
> >> >> 
> >> >> 
> >> >> On Thursday, July 9, 2015 at 10:32:28 AM UTC-4, andrew cooke wrote: 
> >> >>> 
> >> >>> 
> >> >>> Before I raise an issue I wondered if I've made some stupid mistake 
> >> >>> here. 
> >> >>> The code is about as simple as I can make it.  The idea behind 
> things 
> >> >>> is 
> >> >>> that you have a field of integers module 2 (GF2).  Then over that 
> you 
> >> >>> define 
> >> >>> polynomials.  And then you can define a Quotient Ring with the 
> >> >>> polynomials, 
> >> >>> which is analogous to the initial field, and so you can use the 
> same 
> >> >>> type as 
> >> >>> the rogiinal field.  But you don't need to understand that! 
> >> >>> 
> >> >>> Here's the code: 
> >> >>> 
> >> >>> immutable ZField{N, I<:Integer} <: Integer 
> >> >>>     i::I 
> >> >>> end 
> >> >>> 
> >> >>> immutable ZPoly{I<:Integer} <: Integer 
> >> >>>     a::Vector{I} 
> >> >>> end 
> >> >>> 
> >> >>> T1 = ZField{2,Int} 
> >> >>> o = T1(1) 
> >> >>> 
> >> >>> T2 = ZPoly{T1} 
> >> >>> x = T2([o, o]) 
> >> >>> 
> >> >>> ZField{x,T2}(x) 
> >> >>> 
> >> >>> And this is the error (from the last line, which is line 16) 
> >> >>> 
> >> >>> andrew@laptop:~> julia-trunk IntModN.jl 
> >> >>> ERROR: LoadError: TypeError: apply_type: in ZField, expected Int64, 
> >> >>> got 
> >> >>> ZPoly{ZField{2,Int64}} 
> >> >>>  in include at ./boot.jl:254 
> >> >>>  in include_from_node1 at loading.jl:133 
> >> >>>  in process_options at ./client.jl:305 
> >> >>>  in _start at ./client.jl:405 
> >> >>> while loading /home/andrew/IntModN.jl, in expression starting on 
> line 
> >> >>> 16 
> >> >>> 
> >> >>> In short - I have no idea where the Int64 comes from. 
> >> >>> 
> >> >>> Thanks, 
> >> >>> Andrew 
> >> >>> 
> >> > 
>

Reply via email to