Edison APIおよびコアモジュールは、純粋に機能的なデータ構造のHaskell実装です。
F#とネイティブの.Netデータ構造は、Edison APIとCoreのユースケースを十分にカバーしていますか?
APIとCOREHaskellモジュールをF#に移植しようとすることに何か利点はありますか?
Edison APIおよびコアモジュールは、純粋に機能的なデータ構造のHaskell実装です。
F#とネイティブの.Netデータ構造は、Edison APIとCoreのユースケースを十分にカバーしていますか?
APIとCOREHaskellモジュールをF#に移植しようとすることに何か利点はありますか?
私はエジソンに関する論文を読んでいませんが、それが純粋に機能的なデータ構造のHaskell実装にすぎないのであれば、本/論文にあるSMLコードを移植する方が理にかなっていますか?厳密さのために注釈を付ける必要があるHaskellコードを移植するよりも簡単なはずですが、F#は怠惰のために注釈を付ける必要があります。
この本で使用されている言語は、遅延評価用の構文拡張機能を備えたSMLです。F#は、これらの拡張機能の半分をネイティブに提供します。
> let x = lazy 12;;
val x : Lazy<int> = <unevaluated>
> match x with
| Lazy(n) -> n;;
val it : int = 12
> x;;
val it : Lazy<int> = 12
fun lazy
本の表記を変換するには、次のように変更します。
fun lazy plus ($m, $n) = $m + n
これに:
let plus (m',n') = lazy (
match (m',n') with
| (Lazy(m), Lazy(n)) -> (lazy (m + n)).Force())
(本の33ページを参照)。SMLとF#の違いはマイナーな構文であるため、変換は簡単です。
価値があるかどうかについては、岡崎の本のほとんどのデータ構造は非常に特殊化されているため、F#の不変のセットとマップであっても、.NETにすでに存在する可能性はほとんどありません。これらのデータ構造を必要とする人々にとっては価値があります。
数か月後にこの質問を再検討すると、私は次のことに注意します。
http://lepensemoi.free.fr/index.php/tag/purely-functional-data-structures
誰かがそのブログにそれらの多くを実装しました。
私はリンクをたどりませんでしたが、少なくとも作品や岡崎については少しは知っています。したがって、この答え全体は非常に推測的です(Edison APIの内容についての私の仮定では、ベースから外れている可能性があります)。
新しい言語の学習に役立つ「新しい言語」での「一般的なFPデータ構造のリファレンス実装」が好きな人がいるという意味で、「いくつかの利点」があると思います。
(教育学ではなく)実際の使用に関しては、多くのシナリオで同じくらい役立つか、より役立つF#および.Net APIがいくつかありますが、それらのいくつかは役立つと思います。重複する機能の主なカップルの「バッチ」は、F#の不変コレクション(SetとMap)と、.Net 4.0同時コレクション(ConcurrentQueueなど)です。
もちろん、Jomoの不変キューのように、Web上にもいくつかのスニペットがあります。