如何将操作符传递给ML中的函数?例如,考虑这个伪代码:
function (int a, int b, operator op)
return a op b
此处,运营商可以是op +
,op -
等。如何在ML中执行此操作?
答案 0 :(得分:8)
操作符只是函数,一旦用“op”作为前缀。所以你可以像对待任何旧功能一样对待它们:
Standard ML of New Jersey v110.75 [built: Sat Nov 10 05:28:39 2012]
- op+;
val it = fn : int * int -> int
这意味着您可以将它们作为参数传递给高阶函数,就像使用任何其他函数一样。
请注意,如果要获取名称的中缀绑定,可以进行相反的操作:
- val op* = String.^;
val * = fn : string * string -> string
- "foo" * "bar";
val it = "foobar" : string
换句话说,关于中缀运算符的唯一“不寻常”的事情是它们可以通过在'op'前加上神奇地变成常规(前缀)名称。