什么是'$';在OCaml synax中是什么意思?
我是OCaml的新手。我看到的代码是这样的什么是'$';在OCaml synax中是什么意思?,ocaml,Ocaml,我是OCaml的新手。我看到的代码是这样的 let main_t = Term.(pure main $ address $ port $ pid_file $ log_file $ dbConf) “$”符号是什么意思 在标准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中的$
不是典型的常规应用程序吗?
是(应用性的)函子应用程序?毫无疑问,你是对的,我忘记了我以前对应用性的了解:-)