Hmm, tried my luck ... but If I add this to bitarray.jl
find(B::BitArray) = find(Int[], B::BitArray) function find(indexes, B::BitArray) l = length(B) nnzB = countnz(B) # I = Array(Int, nnzB) I = similar(indexes, nnzB) it works but I also get these strange warnings when rebuilding. And I say strange because I don't even find any *findbitarray.jl* in my Julia instalation Warning: New definition findbitarray.jl could not show value of type Tupleintset.jl at bitarray.jl:1330dict.jl is ambiguous with: findset.jl could not show value of type Tuplehashing.jl at array.jl:1052iterator.jl . To fix, define findinference.jl could not show value of type Tupleosutils.jl before the new definition. char.jl Warning: New definition findascii.jl could not show value of type Tupleutf8.jl at bitarray.jl:1330utf16.jl is ambiguous with: findutf32.jl could not show value of type Tupleiobuffer.jl at array.jl:1077string.jl . To fix, define findutf8proc.jl could not show value of type Tupleregex.jl Domingo, 13 de Julho de 2014 19:52:48 UTC+1, Tim Holy escreveu: > > But actually your point is a good one, and is one more argument for > https://github.com/JuliaLang/julia/issues/1115 > Over time more and more functions have been modified to have this type of > interface, so certainly there is room for a > find!(indexes, testf::Function, x) > function. `find` could then be written as > find(testf::Function, x) = find!(Int[], testf, x) > > Since this matters to you, care to prepare a pull request for this and any > others that annoy you? > > --Tim > > On Sunday, July 13, 2014 11:38:46 AM J Luis wrote: > > Thanks. That's what I intend to do but I confess that I find the default > to > > Int64 a bit annoying (for example when writing wrappers to C functions > whre > > the Int(s) arguments are almost never Int64) > > > > Domingo, 13 de Julho de 2014 10:50:12 UTC+1, Tim Holy escreveu: > > > If this really matters to you, check out the implementations of find > in > > > base/array.jl. It's so short, you can trivially implement whatever > > > behavior > > > you want. For example, you could pass in an empty output array and > have it > > > push! the indexes into it. > > > > > > --Tim > > > > > > On Saturday, July 12, 2014 12:43:29 PM J Luis wrote: > > > > > julia> find(x->x>5,a) > > > > > > > > > > 5-element Array{Int64,1}: > > > > > 1 > > > > > 2 > > > > > 7 > > > > > 8 > > > > > > > > > > 10 > > > > > > > > which very very sadly are Int64. When dealing with large matrices > this > > > > > > may > > > > > > > lead to a large memory waste. These almost mandatory 64 bits issue > is > > > > > > one > > > > > > > the things that annoyed me more in Matlab for many times it was the > > > > difference between having something work ... or not > >