トップ «前の日記(2014-06-07 (Sat)) 最新 次の日記(2014-06-10 (Tue))» 編集

uDiary

海野秀之(うんのひでゆき)の外部記憶

Twitter (twilog) / RSS / アンテナ / ぶくま

2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|

2014-06-08 (Sun)

[Haskell] Monadic Parser 練習

https://github.com/unnohideyuki/monadic_parser_sample/tree/master/ex4

Haskell のレイアウト規則で、

If the indentation of the non-brace lexeme immediately following a where, let, do or of is less than or equal to the current indentation level, then instead of starting a layout, an empty list “{}” is inserted, ...

とある部分に未対応だった。

foo = let
      in
        putStrLn "foo"

main = foo

現在の版で、上記のコードを ex4/Parser に食わせると、こうなる:

 foo = let
{ in putStrLn "foo" } main = foo

let と in の間に、空の {} が挿入されるべき。

いまから直す。→ と思ったけど、もう少しまじめに grammar 書かないといけなさそう。今日はやめておこう。

let {} in hoge は Parser で普通にできそうだが、現状の ex4/Parser は in をキーワードと認識してない。

Empty 'do' block は ghc はエラーにしているようだ。

※やっぱり、まだレイアウトルールがいまいちわかってないかも。
10.3を読むべきらしい。)

その他

Tiger Book chap6 については、Semant.hs での Temp.newLabel, TL.newLevel, TL.allocLocal 追加はやった。つぎは、findEscape を書いて、テストしたら、6章おわり。

Git for Windows は 1.9.2 にバージョンアップした。


2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|
Categories 3imp | Card | Cutter | Dalvik | Euler | Football | GAE/J | Hand | Haskell | Re:View | Ruby | Scheme | TQD | Tiger | TigerBook読 | UikiTeXi | Verilog | Violin | Web | parconc | tDiary | お勉強 | エントロピー | ツン読 | | 将棋 | 政治について | | 模写してみよう | 確率論 | 設定など | 雑文 | 音声