strictness

    1

    1答えて

    (head . map f) xs = (f . head) xs fが厳格であるときは、すべてのxsリストに適用されます。 誰かが私に例を挙げることができますか?

    3

    2答えて

    無限リスト(例えば、take 5、など)で動作する関数f :: [a] -> bがあります。厳密なモナドアクション(たとえばrandomIO)によって生成された値をこの関数に渡したいと思います。 this questionから が、私はrepeatとsequenceトリックアプローチはショー以下の例のように、厳格なモナドのために動作しないことを学んだ:だから import Control.Mona

    6

    1答えて

    したがって、Haskell seq関数は、最初のパラメータの評価を強制し、3番目のパラメータを返します。したがって、それは中置演算子です。式の評価を強制したい場合、直感的にそのような特徴は単項演算子になります。 bを返し、どのようにbの復帰のために構築するか、なぜ必要な値は、aであれば、代わりに seq :: a -> b -> b のそれは、結果的に seq :: a -> a だろう。

    27

    4答えて

    これは少しばかりではあるかもしれませんが、私はそれをしばらく疑問に思っています。 data Foo = Bar !Int !Float 私はしばしば怠惰は素晴らしいことだと考えている:!と私の知る限りでは、人は必ず値が構築される前にデータコンストラクタのパラメータが評価されていることができます。さて、私がソースを調べると、厳密なフィールドが!のないよりも頻繁に表示されます。 これのメリットは何

    1

    2答えて

    次は(のように:それは毎秒Surely tomorrowを言って続けて)動作するようです。これは、last [0..]が実際にMVarを充填する前にWHFNに強制されていることを確認するためにevaluateを使用しています import Control.Concurrent import Control.Concurrent.MVar import Control.Exception (e

    4

    1答えて

    私はHaskellスレッドを使用していますが、チャネル全体でレイジー評価された値を伝達するという問題に取り組んでいます。たとえば、N個のワーカースレッドと1個の出力スレッドでは、ワーカーは未評価の作業を通信し、出力スレッドはそれらの作業を終了します。 さまざまなドキュメントでこの問題について読んだことがありますが、さまざまな解決策がありましたが、私は1つの解決策しか見つけられず、残りの解決策は見つ

    9

    1答えて

    一つの刺激が原因怠惰なIOに最近 import System.IO import Control.Applicative main = withFile "test.txt" ReadMode getLines >>= mapM_ putStrLn where getLines h = lines <$> hGetContents h 私の注意をキャッチし、上記のプログラムは、