あどけない話スマートフォン用の表示で見るあどけない話インターネットに関する技術的な話など2019-02-15さようなら遅延評価HaskellHaskellがとっつきにくい原因の一つに遅延評価がある。入門書では、無限リストと遅延評価がことさら強調される。Haskellを業務で使ってみると、遅延評価が煩わしくなってくる。遅延評価なしでもほとんどのことは実現できるし、メモリーの使用量は推測できないし、あまりいいことはない。Haskellの評価戦略が、他の言語と同じように正格評価だったらよかったのに。今まで、このようなセリフを何度聞いたか分からない。そもそも遅延評価が役立つことはあるのだろうか?ある。お世辞抜きに、少なくとも以下の3つでは本当に役立つ。純粋性に対する暗黙のテスト効率的なCAS1.はよいだろう。2.は純粋さを守るために必要だが、コンパイラを開発する人にとって重要なのであり、ユーザには関係ない。3.は、並行プログラミングの奥義である。成功させ、後からその仕事を片付けられる。私は、これ以外で遅延評価が役に立った事例を寡聞にして知らない。実はHaskellでも、正格評価を利用できる。!(バンと読む)を使う。1この問題点は、コードのいたるところがバンバンして、読みにくくなることである。実際、コードを書いてみると嫌になってくる。この二つを使えば、デフォルトの評価戦略が正格評価となる。用いると正格評価となる。1ちなみに、この言語拡張が有効な範囲は指定されたモジュール内のみである。デフォルトの評価戦略を正格評価にすると、今度は遅延評価を明示的に書けるようにする必要がある。Haskellを読んでほしい。純粋関数型データ構造を読んだ諸君、Haskellではデフォルトが遅延評価だからイマイチ例題をうまく実装できないと思ったことだろう。8.0.1がリリースされたのは、2016年5月。