- 418 名前:413 mailto:sage [2006/12/04(月) 01:51:46 ]
- >>417
>評価と違って「値の要求があって初めて」実行したりはしない。 >だから >r <- mapM hoge $ lines cs >とあったら、rが必要とされるか否かにかかわらずmapMは最後まで実行される。 あぁ、なるほど。なんでうまくいかなかったのか、やっとすっきりした。 結果が必要かどうか関係ないのね・・・。 自分が作りたかったのは、ハッシュテーブルに入力されたものを入れて、そのときのハッシュテーブルの中身を返すという関数。 ↓こんな感じなのを作ったのだが、入力が終わらないと処理が先に進まなくて困ってる次第。 import Data.HashTable as HashTable main = do cs <- getContents hash <- new (==) hashString r <- mapM (hoge hash) $ lines cs putStr $ unlines r hoge :: (HashTable String Int) -> String -> IO String hoge _ [] = return [] hoge hash key = do insert hash key 1 h <- toList hash return $ show h
|

|