F#用のYAMLライブラリです。
F#の型(レコードやリストなど)との親和性が高く、YAMLをF#で定義した型に直接マッピングできます。
FsYamlは、設定ファイルを手軽に読み込むという目的に特化しています。 そのため、パフォーマンスなどは優先順位としては低くなっています。 また、フルスペックのYAMLが扱えるわけではなく、あくまで設定ファイルに有用そうなものから実装しています。
例えば、以下のYAML文字列を考えます。
Name: bleis-tift Languages: - 'F#' - 'C#' - Java - Scala
この文字列がstrという変数に入っているとして、それを読み込むために、例えば以下の型を定義します。
type t = { Name: string; Languages: string list }
そして、FsYamlを使用して以下のように読み込むことができます
let x = Yaml.load<t> str
たったこれだけで、xにはYAML文字列を読み込んだt型の値である、
{ Name = "bleis-tift"; Languages = [ "F#"; "C#"; "Java"; "Scala" ] }
が格納されます。
以下の型の組み合わせに対応しています。
YAMLの!!nullの代わりに、'a optionに対応しています。 これにより、nullになりうる項目には'a optionを用います。 項目がnullの場合、Noneに、非nullの場合はその値がSomeに包まれた値になります。
レコードと判別共用体は、YAMLの!!mapの特別な形です。 !!mapをF#のMapにマッピングすることも可能ですが、キーが固定的なものとなる場合はレコードにマッピングした方が使いやすいでしょう。
!!mapを判別共用体にマッピングする場合、ケース識別子をキーに持つマップのマップとなる点に注意してください。 判別共用体へのマッピングは実験的な機能です。
フィードバックは義務ではなく権利です。 なので、絶対にフィードバックしろ、とは言いません。 もしフィードバックしていただけるのであれば、どのような手段でも構いません。 例えば、
などなど、伝われば方法はなんだっていいです。が、対応するかどうかは分かりません。
NYSLです。 自己責任のもとに自由に使い、改造、配布などなどを行ってください。