問題タブ [ocaml-core]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ocaml - OCamlに中置関数合成演算子はありますか?
簡単な質問です。標準ライブラリ (または Jane Street の Core または Batteries) で定義されている OCaml に、Haskell の (.) 関数のような中置関数合成演算子があるかどうか疑問に思っています(f . g . h) x
。あまり魅力的ではありませんf (g (h x)))
。
ありがとうございます。
ocaml - コア ライブラリを使用して ocaml でマップ タイプを定義する
OCaml 言語のコア ライブラリには、非常に便利な Map および Table モジュールが付属しています。組み込み型のマップを使用する場合、独自の型を定義する方法を知っています。
また、ポリモーフィック比較を使用してカスタム マップを定義する方法も知っています。
私が知らないのは、自分の型から自分の型への非ポリモーフィックな比較を使用してカスタム マップを定義する方法です。たとえば、私が持っているとします
Int.comparator
3 番目の引数がコンパレータであることは理解していますが、内部に何を入れればよいかわかりませんInt.comparator_witness
。
ocaml - Core の `Fn.const` を理解する
Jane Street の Core lib には次のような機能がありますFn.const
。
https://github.com/janestreet/core_kernel/blob/master/lib/fn.ml
val const : 'a -> 'b -> 'a
は、最初の引数を返すだけの関数を生成します
私は本当にそれを理解していません。
- この関数の目的は何ですか? どのようなシナリオで使用する必要がありますか?
- なぜ
();
最初に置くのですか? - と書いてみません
let const c = fun () -> c
か?これにより、パラメーターとして受け取る関数が提供unit
され、常に initial が返されますc
。 - すると、パラメータとして取る関数になり
let f = const 5
ます。弱いポリモーフィック パラメータを持つ関数を返す目的は何ですか?f
'_a
psFn
モジュール内のいくつかの関数はすべて();
、関数を返す前に持っていることがわかり();
ます。
ocaml - Unix.create_process に相当する ocaml-core
次のコマンドをUnixライブラリから Jane Street のCore.Std.Unixライブラリに移植したいと考えています。
つまり、実行可能ファイルexec
と引数args
があり、現在のプロセスと同じ in/out/error チャネルを使用してプロセスを実行したいと考えています。
に近づくことはできますが、コアからこの関数によって返された を現在のプロセスで使用されるファイル記述子Core.Std.Unix.create_process ~exec:exec ~args:args
に接続する方法がわかりません。stdin,stdout,stderr
ocaml - Core が空白文字のサブセットしか認識しないのはなぜですか?
Char.is_whitespace は、' ','\n','\t','\r' に対してのみ true を返すことが文書化されています。'\f' と '\v' (用紙送りと垂直タブ) を認識しないのはなぜですか? POSIX と C はどちらもこれらを空白と見なすため、Core がそうでないことは非常に驚くべきことです。
ocaml - Core.Std が `close_in` 関数と `close_out` 関数を廃止するのはなぜですか?
I の場合、関数open Core.Std
を使用して an を閉じようとするとエラーが発生します。これは、Core が の型シグネチャを変更して非推奨のエラー メッセージを表示するためです。close_out
out_channel
close_out
最初の質問: Core が deprecated なのにclose_out
deprecated ではないのはなぜclose_out_noerr
ですか?
2 番目の質問: Core は引き続きin_channel
s とout_channel
s を使用することを期待していますか? それとも、IO に別の API を使用することを好みますか?
3 番目の質問:私が見つけた唯一の他の IO API は、read
またはモジュールwrite
内の関数Unix
であり、ファイル ハンドルではなくファイル記述子で動作します。C では、ファイル記述子関数は syscall を直接発行しますが、受信FILE *
する stdio.h からの関数はバッファリングされた IO を行います。これは Ocaml で、syscall を直接発行する Unix モジュールの関数と、in_channel
バッファout_channel
リングされた IO を操作して実行する関数に似ていますか?
ocaml - OCaml - Core で Sys.big_endian の値が見つかりません
を開くと がモジュールval big_endian : bool
から削除されていることに気付きました。Sys
Core.Std
同様の値はどこで見つけることができますか?