Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是'$';在OCaml synax中是什么意思?_Ocaml - Fatal编程技术网

什么是'$';在OCaml synax中是什么意思?

什么是'$';在OCaml synax中是什么意思?,ocaml,Ocaml,我是OCaml的新手。我看到的代码是这样的 let main_t = Term.(pure main $ address $ port $ pid_file $ log_file $ dbConf) “$”符号是什么意思 在标准ocaml中,$没有特殊含义。在您的例子中,这是来自术语模块,其中可以定义特定的语法。(顺便说一句,它是哪个模块?-我是说你是如何安装的)在OCaml中,$没有预定义的含义。它可以定义为中缀运算符;含义必须来自您正在使用的库 如果我不得不猜测的话,我会说$被定义为一个低

我是OCaml的新手。我看到的代码是这样的

let main_t = Term.(pure main $ address $ port $ pid_file $ log_file $ dbConf)

“$”符号是什么意思

在标准ocaml中,$没有特殊含义。在您的例子中,这是来自术语模块,其中可以定义特定的语法。(顺便说一句,它是哪个模块?-我是说你是如何安装的)

在OCaml中,
$
没有预定义的含义。它可以定义为中缀运算符;含义必须来自您正在使用的库


如果我不得不猜测的话,我会说
$
被定义为一个低优先级的函数应用操作符。它在Haskell中用于此目的,通常非常方便。

在OCaml中,可以定义自己的中缀和前缀运算符。在
cmdliner
库中,运算符
$
定义为:

  val ( $ ) : ('a -> 'b) t -> 'a t -> 'b t
  (** [f $ v] is a term that evaluates to the result of applying
      the evaluation of [v] to the one of [f]. *)

实际上是
apply
函数的中缀形式(在Cmdliner中命名为
app
)。它用于累积参数。基本上,形式为
纯f$a$b$c$d
的构造接受一个函数
f
,该函数具有
a
b
c
d
,假设
a
a项类型的值。t
b
b项类型的值,一般来说,这是一种用于构建类型安全变量函数的模式。有关模式的更多信息,请阅读本文。

不是语法,它是来自
cmdliner
的函数,如果您有merlin,则可以轻松检查它的类型。特别是中缀函数。它是由cmdliner库定义的中缀运算符:是的,它看起来像函子应用程序。但是,Haskell中的
$
不是典型的常规应用程序吗?
是(应用性的)函子应用程序?毫无疑问,你是对的,我忘记了我以前对应用性的了解:-)