回答:
TL; DR:ミランダはそれseqをそれと呼びました、それはsequence(おそらく)すでにモナドのためのものであり、短い間($!)知られstrictていたときに導入されました。
それが呼び出されseq、それが呼ばれたので、seq中にミランダ少なくともによると、以前の言語ビーイングレイジー持つクラス:ハスケルの歴史ポール・ハダック、ジョン・ヒューズ、サイモンペイトンジョーンズとフィリップ・ワドラーによります。
seqデータ構造の両方と厳密なコンポーネントは同じ理由ですでにミランダに存在しており(Turner、1985)、seq1980年代初頭以降、遅延プログラムでのスペースリークの修正に実際に使用されていました(Scheevel、1984、Hughes、1983)。
ターナーは1985年の論文で厳密なコンポーネントのみを紹介し、seqそれ自体は紹介していないことに注意してください。Schevelの「NORMA Saslマニュアル」は失われているか、少なくともインターネットでは入手できないようです。ヒューズの論文(上記の「ヒューズ、1983」)ではseqどちらも紹介されていません。
どちらにしてもseq、Mirandas標準環境の一部であり、それが呼び出された理由のヒントも含まれていますseq。
2つの値に適用された `seq 'は2番目の値を返しますが、最初の値が完全に未定義ではないことを確認します。対話型プログラムでの正しい同期を保証するためなどに必要な場合があります。
正しい同期または配列の uencing。
さて、なぜstrictHaskellでそれが単に呼び出されなかったのですか?それともsequence?
さて、導入したHaskell 1.3seqも導入Monadしたことがわかりましたsequence :: Monad m => [m a] -> m ()。したがって、sequence名前として使用できませんでした。
これで問題sequenceは解決しました。次に、を見てみましょうstrict。strict1.3 はEvaltypeclassを導入して以来、1.3に含まれていました:
seq :: Eval a => a -> b -> b
strict :: Eval a => (a -> b) -> (a -> b)
strict f = \x -> seq x (f x)
また、Haskell98をそのままカットすることEvalもstrictしなかった。代わりに、Evalすべてのタイプに適用され、strict名前がに変更されたため、完全に削除されました($!)。
seq、1.3には適切な.psHTMLリリースが手元にあります。モナドI / Oが祝われた理由を知りたい場合は、古い[Request] -> [Response]ベースのIOモデルを調べてください。古い会議の議事録は別として、クラスで怠惰であることは、おそらくさらに検討するのに最適なリソースです。