Julia 0.4- has different behavior ...
First, with 0.3.9
julia> versioninfo()
Julia Version 0.3.9
Commit 31efe69 (2015-05-30 11:24 UTC)
Platform Info:
System: Darwin (x86_64-apple-darwin13.4.0)
CPU: Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Penryn)
LAPACK: libopenblas
LIBM: libopenlibm
LLVM: libLLVM-3.3
julia> type Foo
x::Int
end
julia> import Base: ==
julia> ==(f1::Foo, f2::Foo) = f1.x == f2.x
== (generic function with 80 methods)
julia> foos = [Foo(4), Foo(4)]
2-element Array{Foo,1}:
Foo(4)
Foo(4)
julia> unique(foos)
2-element Array{Foo,1}:
Foo(4)
Foo(4)
julia> unique(foos)[1] == unique(foos)[2]
true
And now 0.4-dev
julia> versioninfo()
Julia Version 0.4.0-dev+5587
Commit 78760e2 (2015-06-25 14:27 UTC)
Platform Info:
System: Darwin (x86_64-apple-darwin13.4.0)
CPU: Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Penryn)
LAPACK: libopenblas
LIBM: libopenlibm
LLVM: libLLVM-3.3
julia> type Foo
x::Int
end
julia> import Base: ==
julia> ==(f1::Foo, f2::Foo) = f1.x == f2.x
== (generic function with 108 methods)
julia> foos = [Foo(4), Foo(4)]
2-element Array{Foo,1}:
Foo(4)
Foo(4)
julia> unique(foos)
1-element Array{Foo,1}:
Foo(4)
julia> unique(foos)[1] == unique(foos)[2]
ERROR: BoundsError: attempt to access 1-element Array{Foo,1}:
Foo(4)
at index [2]
in getindex at array.jl:292
On Thursday, July 16, 2015 at 9:36:21 AM UTC-4, Stefan Karpinski wrote:
>
> You need to also define a hash method for this type.
>
>
> On Jul 16, 2015, at 9:16 AM, Marc Gallant <[email protected]
> <javascript:>> wrote:
>
> The unique function doesn't appear to work using iterables of custom
> composite types, e.g.,
>
> julia> type Foo
> x::Int
> end
>
> julia> import Base: ==
>
> julia> ==(f1::Foo, f2::Foo) = f1.x == f2.x
> == (generic function with 85 methods)
>
> julia> unique(foos)
> 2-element Array{Foo,1}:
> Foo(4)
> Foo(4)
>
> julia> unique(foos)[1] == unique(foos)[2]
> true
>
>
> Is this the intended behaviour?
>
>