operators - 有没有办法在 SML/NJ 中获得二元运算符的柯里化(Currying)形式?

标签 operators sml currying smlnj

例如,而不是

- op =;
val it = fn : ''a * ''a -> bool

我宁愿拥有

- op =;
val it = fn : ''a -> ''a -> bool

用于

val x = getX()
val l = getList()
val l' = if List.exists ((op =) x) l then l else x::l

显然我可以自己做到这一点,例如,

val l' = if List.exists (fn y => x = y) l then l else x::l

但我想确保我没有错过更优雅的方式。

最佳答案

您可以编写一个辅助函数来柯里化(Currying)函数:

fun curry f x y = f (x, y)

然后你可以做类似的事情

val curried_equals = curry (op =)
val l' = if List.exists (curried_equals x) l then l else x::l

关于operators - 有没有办法在 SML/NJ 中获得二元运算符的柯里化(Currying)形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1387038/

相关文章:

functional-programming - 从 sml 中的整数对列表返回偶数列表

SML 如何检查变量类型?

Javascript 嵌套函数评估

c++ - 可能会使花括号过载吗?

java - 如何改变java中算术运算符的优先级?

javascript - 解释 >= 和 <= 运算符在以下情况下的行为

functional-programming - 在 ML 中导出类型表达式

parsing - 有没有办法在解析后使用关联性和优先级表来修复其中包含运算符的表达式?

scala - 实现在 scala 中执行柯里化(Currying)的高阶函数

scala - scala 中的柯里化(Currying)语法