能否重载类型修饰<type>{<cond>, ...}


#1

有没有可能重载{}运算.

MyType{MyExpr}

这设计到是否能实现无开销且不需要用户写宏的parametric module.

参考见 Ocaml Functor


#2

if not, 想用functor module只能让用户写lisp了.

(@List 1, 2, 3)
(@List.map fn collection)

#3
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


#4

不是。。。我的目的是生成parametric的module。。


#5

{} 算符应该没有办法重载。。。


#6

所以我已经放弃了parametic module,我觉得让用户写 @List{T}.map是反人类的。