OCamlの新機能です。
let main_t = Term.(pure main $ address $ port $ pid_file $ log_file $ dbConf)
「$」記号の意味は何ですか?
OCamlの新機能です。
let main_t = Term.(pure main $ address $ port $ pid_file $ log_file $ dbConf)
「$」記号の意味は何ですか?
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]. *)
、実際に(Cmdlinerにapp
命名)apply
機能の中置形です。引数を累積するために使用されます。基本的に、フォームpure f $a $b $c $d
の構築物は、一般的に、このなど、タイプa
、b
4つの引数を取る関数f
を受け入れc
とd
、所与、a
タイプa Term.t
の値であること、b
型b Term.t
の値でありますタイプセーフな可変関数を構築するためのパターンです。詳細については、パターンについてはApplicative Programming with Effects用紙をお読みください。
標準的なocamlには特別な意味はありません。あなたの場合、これは、特定の構文が定義される用語モジュールから来ています。 (どのモジュールですか?)
これは、cmdlinerライブラリによって定義された中置演算子です。http://erratique.ch/software/cmdliner/doc/Cmdliner .Term.html#VAL($) – antron
$
のOCamlには定義済みの意味はありません。これは中置演算子として定義できます。意味はあなたが使っている図書館から来なければなりません。
私が推測しなければならないのは、$
が低優先順位関数アプリケーション演算子として定義されていると思います。これはHaskellでこれに使用されており、しばしば非常に便利です。
はい、ファンクターアプリケーションのようです。しかし、Haskellの通常のアプリケーションでは '$'ではありません。 '<$>'は(適用可能な)関数アプリケーションです。 –
あなたが正しいかどうかは間違いありませんが、私が覚えていたことを忘れてしまったApplicative :-) –
文法ではなく、 'cmdliner'の関数です。もしあなたがメルリンを持っていれば、それを簡単にチェックすることができます。 –
特に、中置関数です。 http://erratique.ch/software/cmdliner/doc/Cmdliner.Term.html#VAL($) – antron