如何实现或是否有Clojure-like threading macros的实现,即线程优先(->
)和线程最后(->>
)?
示例:
# equivalent of sum(1, 2)
@thread-first 1 sum(2)
# equivalent of any(map(isequal(1), [1,2,3]))
@thread-last [1,2,3] map(isequal(1)) any
答案 0 :(得分:1)
Julia具有流水线功能,但通常|>运算符仅允许使用一个参数的函数。在Clojure中,thread-first和thread-last参数将参数插入函数中多个参数的开头或结尾。
您在Lazy.jl中确实有@>和@ >>宏:
https://github.com/MikeInnes/Lazy.jl#macros
这些执行线程优先和线程最后的操作,但是语法不同。请参阅Lazy.jl文档。线程最后的示例:
@>> 1:10 collect filter(isodd) square.() reduce(+)
165
线程优先的示例:
@> 6 div(2)
3