2013-02-01から1ヶ月間の記事一覧

Haskell 遅延評価と即時評価

必要になるまで評価されない、という遅延評価の理解だけでは、 一見、以下の実行例は不可解。Prelude> :m Control.MonadPrelude Control.Monad> liftM3 maybe (fail "$$$$") (return id) (return (Just 3.14))*** Exception: user error ($$$$)Prelude> :m C…

Haskell read 例外処理

read 関数の Exception をどう扱ってよいか迷ってたところ、クールなわざを見つけた。 How to catch a no parse exception from the read function in Haskell? - Stack Overflow maybeRead = fmap fst . listToMaybe . reads 関数の重ね方とか勉強になるな…

Text.ParserCombinators.Parsec.Prim.many: combinator 'many' is applied to a parser that accepts an empty string.

many p の p が空文字列でも成功する場合、例外を起こす。*Main Text.Parsec> parseTest (many (many (char '*'))) ""*** Exception: Text.ParserCombinators.Parsec.Prim.many: combinator 'many' is applied to a parser that accepts an empty string.*Ma…

Haskell 改行コード自動変換

関数型プログラミング言語Haskell Part1165 GHC-6.12.1からSystem.IOが内部エンコーディングローカルエンコーディングと改行コードの自動変換をするらしい。 ttp://ghcmutterings.wordpress.com/2009/09/30/heads-up-what-you-need-to-know-about-unicode-io…

Haskell で固定小数点数

こちらを読まれたし。 [haskell]Haskellで任意精度小数を扱う - think and errorData.Fixed は、固定されるのは小数部の桁数だけで、整数部の桁数は固定されない。 リンク先は固定小数点数という用語は使っていないし、正確には固定小数点数ではないかも。リ…

many の仕様

many の仕様は次のようなものと考えられる。many p は、入力へのパーサ p の適用が続けて n回(n≧0、many1 p ならn≧1)成功し、その時点で、入力が空となっているか、 またはn+1回目で p が入力を消費せずに失敗する場合、成功する。many の実装に使わ…