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. Pythonと同等で同等の関数
- 3. Rと同等
- 4. ワイルドカードと同等
- 5. ドッカーコマンドと同等
- 6. ocamlモジュールと同じファイルのプログラム
- 7. ToString( "0")とToString(CultureInfo.InvariantCulture)
- 8. NUnitのと同等の
- 9. Wordpressと同等のASP.NET
- 10. Firebase Swiftと同等のpush()
- 11. Find({})と同等のDynamoDB
- 12. MySQL 5.1と同等のST_CONTAINS
- 13. プロトタイプコードと同等のJQuery
- 14. Knockout.js hollaと同等の例
- 15. ExecutorのThread.join()と同等
- 16. jQueryのFlashアニメーションと同等
- 17. oracleのsp_refreshviewと同等
- 18. LINQ ToList()のRubyと同等
- 19. AsyncTaskと同等のBlackBerryクラス?
- 20. PostgreSQLと同等のフラッシュバック
- 21. Fedoraのpackages.ubuntu.comと同等
- 22. ヤフーと同等のGoogleボス
- 23. glBlendFunc(............)と同等のDirectX
- 24. UNIXと同等のWindows pwd
- 25. SQL Serverのハッシュセットと同等
- 26. eth0と同等のWindows
- 27. SetThreadPriorityと同等のLinux(pthreads)
- 28. WPFのSystem.Windows.Forms.DataFormats.GetFormatと同等
- 29. linuxのSYSTEMTIMEと同等
- 30. AWSのTaskQueueと同等
それはOCamlでのアキレスフィートとなっています。答えはおそらく* Core *か* Batteries *のどちらを使うかによって決まります。 – lukstafi