根据A Gentle Introduction to Haskell ......
在Haskell中,中缀算子的部分应用称为节。
考虑Haskell表达式filter (\n -> n > 0) [-3,-4,5,6,-7,8]
,其计算结果为[5,6,8]
。
使用***部分***,这可以在Haskell中重写为filter (>0) [-3,-4,5,6,-7,8]
。
在***Julia***中,可以写成filter( n -> n > 0, [-3,-4,5,6,-7,8] )
。
这最后一个能用Julia重写吗?使用 haskell 节(>0)
的等价物?
下面的语句会产生语法错误...
filter( (>0), [-3,-4,5,6,-7,8] )
更新
此外,在 haskell 一个可以重写...filter (\list -> length list > 2) [ [2,3], [5,7,11], [13], [17,19,23,29] ]
...作为...filter ((>2).length) [ [2,3], [5,7,11], [13], [17,19,23,29] ]
在***Julia***中,是否可以使用节和函数组合进行类似的重写?
2条答案
按热度按时间x3naxklr1#
语法上没有。但是一些运算符有部分应用“逻辑”参数的方法,其中包括来自Base的所有比较运算符:
然而,人们可以自由地编写实现一些语法技巧的宏。例如,从Underscores.jl:
iyfamqjs2#
对于第一个示例,您可以编写:
这是因为根据帮助:
因此,如果您希望在第二个示例中使用类似的函数,则可能需要为自己定义一个类似的函数,如下所示:
然后你可以做:
然而,是否为一些简单的语法创建自定义函数是一个好主意将取决于您。您可能最终希望编写宏来简化此任务。