私は、HaskellとPerl6の両方の最も興味深い機能の1つは、計算値が実際に必要になるまで計算を延期できることです。Perl 5での遅延評価手法の例は?
Perl5はすぐにすべてを行うのが好きですが、私が知る限り、遅延評価に必要なすべてのプリミティブが含まれています。それらは以下のとおりです。サブルーチン内@_
への参照を取る
- は、これらの識別子のいくつかは、まだ値が含まれていない場合でも、その引数リスト内の識別子にエイリアスされ、配列の参照を作成します。
- 内部で
\@_
を保持しているサブルーチンから過負荷の/縛られたオブジェクトを返し、必要に応じて逆参照します。 (とネクタイ/過負荷の詳細抽象化の様々なCPANモジュールがあります)
私は(私はHaskellのの公平なビットを実装した作品でモジュールを持っているPerlで様々な怠惰なプログラミング技術を実験してきましたPerl5のプレリュード(共回帰のようなもの:$_ = list 0, 1, zipWith {&sum} $_, tail $_ for my $fibs;
はフィボナッチシーケンスを定義するために既に働いています))。しかし、私は、関数が大きな式/プログラムで使用されるときに現れるかもしれないコードに隠れている微妙なバグがあると感じています。
誰かがPerl5でHaskell/Perl6を使っていることを知っている良い例があれば(CPAN /ブログ/書籍)、私は疑問に思いますか?特に、私はこのタイプの怠惰を採用している相当なサイズのコードを読みたいと思っています。
私も、誰もが、私は最大の問題は、「Magicsはのクラッシュ」だと思います
私はあなたがHigher Order Perlを読んだことを前提としています。イテレータ、無限のストリーム、および怠惰については、多くの素材があります。 –