OCamlの新機能で、OCamlコードをデバッグしようとしています。 OCamlには、JavaのtoString()
関数に相当する関数があります。この関数はほとんどのオブジェクトを出力として出力できますか?OCamlのtoString()と同等
答えて
Pervasivesモジュールにstring_of_int、string_of_float、string_of_boolなどの機能があります(普及しているためPervasivesモジュールを開く必要はありません)。
また、Printfを使用してこのような出力を行うこともできます。
についてはlet output = Printf.sprintf "The string is: %s, num is: %d, float is: %f" str num flt
:たとえば:あなたはちょうどあなたが持つその最後の行を置き換えることができstdoutに代わり、印刷の文字列を作成したいので、もし
let str = "bar" in
let num = 1 in
let flt = 3.14159 in
Printf.printf "The string is: %s, num is: %d, float is: %f" str num flt
のprintfモジュール内のsprintf関数は、もあります独自の定義のより複雑なデータ型を使用する場合は、Derivingという拡張子を使用して、自分のタイプに適したきれいなプリンタ関数を定義する必要はありません。
Sexplibライブラリも便利です。 – Kakadu
Coreと関連するSexplibシンタックス拡張を使用すると、これにはかなり良い解決策があります。本質的に、sexplibはOCaml型からs式への変換器を自動的に生成し、便利な直列化形式を提供します。
ここでは、CoreとUtopを使用した例を示します。あなた自身がコアを使用するように設定取得するため、以下の指示に従っていることを確認してください:http://realworldocaml.org/install
utop[12]> type foo = { x: int
; y: string
; z: (int * int) list
}
with sexp;;
type foo = { x : int; y : string; z : (int * int) list; }
val foo_of_sexp : Sexp.t -> foo = <fun>
val sexp_of_foo : foo -> Sexp.t = <fun>
utop[13]> let thing = { x = 3; y = "hello"; z = [1,1; 2,3; 4,2] } ;;
val thing : foo = {x = 3; y = "hello"; z = [(1, 1); (2, 3); (4, 2)]}
utop[14]> sexp_of_foo thing;;
- : Sexp.t = ((x 3) (y hello) (z ((1 1) (2 3) (4 2))))
utop[15]> sexp_of_foo thing |> Sexp.to_string_hum;;
- : string = "((x 3) (y hello) (z ((1 1) (2 3) (4 2))))"
また、次のインライン引用構文を使用して、名前なしのタイプのためにS式-コンバータを生成することができます。
utop[18]> (<:sexp_of<int * float list>> (3,[4.;5.;6.]));;
- : Sexp.t = (3 (4 5 6))
もっと詳しくここにあります:https://realworldocaml.org/v1/en/html/data-serialization-with-s-expressions.html
- 1. セットと同等と同等
- 2. ワイルドカードと同等
- 3. ToString( "0")とToString(CultureInfo.InvariantCulture)
- 4. ocamlモジュールと同じファイルのプログラム
- 5. Dreamhostと同等のAsp.netホスティング
- 6. jconsoleと同等の.Net?
- 7. Html.EditorFor()と同等のコード
- 8. mysite_num_rowsと同等のSQLite3
- 9. Dockerと同等のカオスモンキー?
- 10. VBメソッドと同等のドットネット
- 11. SetThreadPriorityと同等のLinux(pthreads)
- 12. git mqと同等のgit?
- 13. Javaと同等の.NET System.Net.ServicePointManager
- 14. eth0と同等のWindows
- 15. oracleのsp_refreshviewと同等
- 16. DataGrid.NavigateTo()と同等のDataGridView
- 17. NvOptimusEnablementと同等のAMD
- 18. NoSQLと同等のSQL Server
- 19. Silverlightと同等のNetDataContractSerializer?
- 20. Javaプライオリティキューと同等のインタフェース
- 21. MySQL 5.1と同等のST_CONTAINS
- 22. SQL Serverのハッシュセットと同等
- 23. Railsスクリプトコンソールと同等のCatalyst
- 24. AsyncTaskと同等のBlackBerryクラス?
- 25. WPFのSystem.Windows.Forms.DataFormats.GetFormatと同等
- 26. JavaのNSNotFoundと同等
- 27. CMakeのMakefileと同等
- 28. UNIXと同等のWindows pwd
- 29. CocoaのFileSystemWatcher(.NET)と同等
- 30. Javaカスタムプロトコルハンドラと同等のCocoaTouch
それはOCamlでのアキレスフィートとなっています。答えはおそらく* Core *か* Batteries *のどちらを使うかによって決まります。 – lukstafi