有没有可能重载{}运算.
MyType{MyExpr}
这设计到是否能实现无开销且不需要用户写宏的parametric module.
参考见 Ocaml Functor
if not, 想用functor module只能让用户写lisp了.
(@List 1, 2, 3)
(@List.map fn collection)
julia> struct Ty{T} end
julia> (::Type{Ty})(x...) = collect(x)
julia> Ty(1,2,3)
3-element Array{Int64,1}:
1
2
3
julia> (::Type{Ty{T}})(x...) where T = T(x...)
julia> Ty{map}(abs, [-1, 0, 1])
3-element Array{Int64,1}:
1
0
1
这样吗?应该不是你想要的,不过至少看起来像
(@List 1, 2, 3)
(@List.map fn collection)
233
不是。。。我的目的是生成parametric的module。。
{}
算符应该没有办法重载。。。
所以我已经放弃了parametic module,我觉得让用户写 @List{T}.map
是反人类的。