SICP を読んだ後、最近streamjsを発見しました。開発者は、構文が異なる代替実装としてlinqjsを参照しましたが、接続できません。streamjs のメソッドは linqjs のメソッドにどのようにマップされますか?
質問する
330 次
3 に答える
1
「スカラー値」の代わりに関数を渡すため、それらは似ていると思います。したがって、遅延評価を行うことができます(従来のjavascriptデータ構造のように各操作ではなく、操作の最後/オンデマンドで結果を評価します)。ストリームやリンクとは関係なく、遅延評価を使用するpimple.jsライブラリでその原則を使用しました。
于 2012-11-29T16:50:23.797 に答える
1
私はどちらのライブラリも使用していませんが、これが私の最初の分析です (私はかなりの量の SICP を読みましたが、確かにすべてではありません)。
stream.js
リストの機能的なスタイルのデータ構造の実装です。関数型言語の多くのデータ構造は、Stream
構造と同様に再帰的である傾向があります。head 要素とStream
、tail 要素 (後続要素) の a で構成されます。ここで、末尾を関数 (つまり、無限シーケンス) にすることで、遅延評価を実現できます。
さて、あなたの質問に答えるために、によって提供されるすべての関数は、linq.js
map、reduce、walk、fold などの他の一般的な高次関数で定義できる必要があります。
確かに、は のメソッドをstream.js
実装していませんが、 でそれを行うことができます。Any()
linq.js
reduce()
于 2012-11-29T17:23:16.273 に答える