通过操作员在ML中运行

Chi*_*hin 4 ml

如何将操作符传递给ML中的函数?例如,考虑这个伪代码:

function (int a, int b, operator op)
    return a op b
Run Code Online (Sandbox Code Playgroud)

在这里,运营商可以op +,op -等我怎样才能在ML做到这一点?

cre*_*hen 8

一旦用"op"作为前缀,操作符就是函数.所以你可以像对待任何旧函数一样对待它们:

Standard ML of New Jersey v110.75 [built: Sat Nov 10 05:28:39 2012]
- op+;
val it = fn : int * int -> int
Run Code Online (Sandbox Code Playgroud)

这意味着您可以将它们作为参数传递给高阶函数,就像使用任何其他函数一样.

请注意,如果要获取名称的中缀绑定,可以执行以下操作:

- val op* = String.^;
val * = fn : string * string -> string
- "foo" * "bar";
val it = "foobar" : string
Run Code Online (Sandbox Code Playgroud)

换句话说,关于中缀运算符的唯一"不寻常"的事情是,它们可以通过在'op'前加上神奇地变成常规(前缀)名称.