Haskell-Tips

Existential Types

Existential typeとは、(1)のようにforallがデータコンストラクタの前について定義されるデータ型のことをいう*1。(2)とは違って、forallで修飾された型変数ができあがった型のパラメータになっていないことに注意して欲しい。 (1) data Proc i o = forall b…

DeepSeq

問題 f_leak :: Int -> [Int] -> [Int] f_leak 0 xs = xs f_leak n xs = f_leak (n - 1) $! take 2 (xs ++ xs) -- f_good = ?Main> f_leak 100000 [0,1] ERROR - Garbage collection fails to reclaim sufficient space Main> f_good 100000 [0,1] [0,1] 説…