akasaka_34の日記

ネトウヨと呼ばれた男の日記。しかし頻度から言えば週報ぐらい。

Haskell

Haskellのポリモーフィズムと型推論

Haskellで main = putStrLn $ show Nothing こうするとエラーになる。 たとえばJust 0ならMaybe IntでJust "one"ならMaybe Stringって分かるけど NothingはMaybeだってことしか分からないから駄目なのだろう。 どのみち結果は"Nothing"なんだからいーじゃね…

遅延評価によるコンパイラの1パス化

Haskellの構文解析 - ヴィアシュビニッヒ!?を考えていたとき 「Haskellで実装されたコンパイラというのは設計上何パスであろうとも 遅延評価のおかげで常に実質1パスになる」 と思っていたのだけど よく考えてみれば、そんなに甘くない。たとえば字句解析…

Haskellの構文解析

Haskellの構文解析のやり方を探してウェブ上を右往左往していると 良さげなページを見つけた。 オフサイドルールの処理 - soutaroブログ そして公式情報はこれらしい。 Haskell 98 Syntax Haskell 98 Syntax(日本語) 空白込みで字句解析して、レイアウトし…

くぱぁ演算子

最近少しParsecで遊んでる。 ところで皆は「」をなんて呼んでる? 異論が無ければ「くぱぁ」でいいと思うんだけど。

Haskellのパターンマッチングにできる事とできない事

main = do putStrLn $ f 0; putStrLn $ f '/'; f :: Show x => x -> String f x = show x これは問題なく動いて 0 '/' を出力する。だけど main = do putStrLn $ f 0; putStrLn $ f '/'; f :: Show x => x -> String f 0 = "zero" f x = show x はコンパイル…

Haskellにできる事とできない事

Haskellは面白いね。 でも難しい。 上手に書かれたコードは唸るほど綺麗なのだけど、 何が出来て何が出来ないのかが判りにくい。 いっぺん真面目に仕様を読んだ方がいいのかね?(コメント希望) main = putStrLn $ show $ f == f f = "hello" ++ f {-無限に…