タグ

+haskellに関するpneumasterのブックマーク (1)

  • 【まとめ】Haskellでの正格評価とWHNF

    Haskellは遅延評価を特徴とする言語ですが、seq関数や!パターンを使うことで正格評価をさせることもできます。 ただし、最終的な値まで完全に評価(deepseq)されるわけではなく、WHNF(Week Head Normal Form)に簡約されるまでの評価です。 WHNFとは、簡単にいうと、以下のいずれかの形をもつ式です。 プリミティブである 式の一番左にデータコンストラクタがある 式の一番左にλがある 正格評価を使ったときにコードの挙動がどう変わるのか、具体的には以下のようになります。 ケース1(遅延評価)$ cat case1.hs loop 0 i = i loop n i = loop (n-1) (i+1) n = 100000000 main = let x = loop n 0 in putStrLn "1" $ ghc --make -O case1.hs $ tim

    【まとめ】Haskellでの正格評価とWHNF
    pneumaster
    pneumaster 2014/05/28
    WHNF(Weak Head Normal Form)について.名前呼び戦略で内部の簡約をする色々な段階.
  • 1