関数型プログラミング言語Haskell Part19
■ このスレッドは過去ログ倉庫に格納されています
0710デフォルトの名無しさん
2012/09/11(火) 10:46:08.58main = getContents >>= (return . length . lines) >>= (putStrLn . show)
自分は、これは各行が短い場合はlengthがすぐlinesのリストの要素を捨ててくれるので何とかなるが、
数GBとかの長大な行の入力が合った場合、その分、つまり一行分のメモリを食ってしまうのではないかと思いました。
というのも、linesとlengthが別個にコンパイルされてオブジェクトコードになっているなら、
lengthがリストの要素を捨てられるのはlinesが一つの要素を確定してからになるのではないかと思ったからです。
しかし、そんなことはないようです。ghcはどんな仕組みでメモリ消費量を抑えているのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています