Streams.js:Javascriptでの遅延(遅延)計算

javascriptライブラリstream.jsは、数値データの「新しい」 1構造であるストリームを導入します。 これは、配列とリンクリストのように見えるコンテナですが、 遅延計算のメソッドによって実装される要素の数に制限ありません。



var s = Stream.range( 10, 20 ); s.print(); // prints the numbers from 10 to 20
      
      





引数Stream.range( low, high )



は、範囲Stream.range( low )



の最初の境界のみを指定できます。そうすると、ストリームは無制限の数の自然数で構成されます。 デフォルトでは、 Stream.range()



は1から始まります。



おそらく「無限」の範囲のアイデアは、プログラミングを簡素化します。 たとえば、偶数と奇数のリストが表示されます。



 var naturalNumbers = Stream.range(); // naturalNumbers is now 1, 2, 3, ... var evenNumbers = naturalNumbers.map( function ( x ) { return 2 * x; } ); // evenNumbers is now 2, 4, 6, ... var oddNumbers = naturalNumbers.filter( function ( x ) { return x % 2 != 0; } ); // oddNumbers is now 1, 3, 5, ... evenNumbers.take( 3 ).print(); // prints 2, 4, 6 oddNumbers.take( 3 ).print(); // prints 1, 3, 5
      
      





new Stream( head, functionReturningTail )



使用すると、指定されたパラメーターで独自のストリームを作成できます。 たとえば、自然数をリストする簡潔な方法を次に示します。



 function ones() { return new Stream( 1, ones ); } function naturalNumbers() { return new Stream( // the natural numbers are the stream whose first element is 1... 1, function () { // and the rest are the natural numbers all incremented by one // which is obtained by adding the stream of natural numbers... // 1, 2, 3, 4, 5, ... // to the infinite stream of ones... // 1, 1, 1, 1, 1, ... // yielding... // 2, 3, 4, 5, 6, ... // which indeed are the REST of the natural numbers after one return ones().add( naturalNumbers() ); } ); } naturalNumbers().take( 5 ).print(); // prints 1, 2, 3, 4, 5
      
      





PS



CoffeeScript streams.jsライブラリ: coffeestream



All Articles