This would also allow to use @which, `methods` and other reflection 
functions.

El lunes, 4 de enero de 2016, 23:25:29 (UTC-6), Ismael Venegas Castelló 
escribió:
>
> I feel we should either differentiate them or integrate them better, they 
> are not listed anywhere, Steffan provided a complicated way of getting a 
> list of those:
>
> function builtins()
>    nams = filter(s -> isdefined(Base, s), names(Base, true, true))
>    objs   = map(s -> Base.(s), nams)
>    funcs = filter(x -> isa(x, Function) && isa(x.env, Symbol), objs)
>    convert(Vector{Symbol}, sort!(map(symbol, unique(funcs))))
> end
>
> julia> builtins()
> 22-element Array{Symbol,1}:
> :_apply
> :_expr
> :applicable
> :apply_type
> :arrayref
> :arrayset
> :arraysize
> :fieldtype
> :getfield
> :invoke
> ⋮
> :isdefined
> :issubtype
> :kwcall
> :nfields
> :setfield!
> :svec
> :throw
> :tuple
> :typeassert
> :typeof
>
> Here: https://groups.google.com/forum/#!topic/julia-users/m_5t0-bIJ8c
>
> I think that it would be possible to change the names of those builtins to 
> __<name> instead of <name>, and then in boot.jl, have the julian 
> definitions like <name>(args::types) = __<name>(args). So it would be 
> possible to extend such functions.
>
>
> El lunes, 4 de enero de 2016, 23:08:52 (UTC-6), Ismael Venegas Castelló 
> escribió:
>>
>>
>>    - What exactly are these SimpleVectors?
>>    - Why show them as svec?
>>    - What's their purpose? 
>>    - How to use SimpleVector constructor manually, without using 
>>    Core.svec? 
>>    
>>
>> They are not documented at all. All I understand is that they are svec is 
>> not generic but "intrinsic" / "builtin", I think they are used earlier in 
>> bootstrap?
>>
>> Since they don't work with @which, an @whereis kinda macro would be nice 
>> to give a link to their source code in github, even if it's in C or 
>> whatever. IMHO we should really differentiate all this "anonymous" (that's 
>> what typeof tell you) functions and document them.
>>
>> Couldn't we just wrap them in Julia functions and treat them as the rest?
>>
>> julia> svec(args...) = Core.svec(args...)
>> svec (generic function with 1 method)
>>
>> julia> svec(1)
>> svec(1)
>>
>

Reply via email to