2015-06-01から1ヶ月間の記事一覧

Template Haskell (TH) でデータ定義

列挙型とその文字表現を、データで定義できる TH を書いた。 -- モジュールA defDataConstsType "T_Digit" (map (\x -> "T_" ++ [intToDigit x]) [0..10]) defShowType "T_Digit" (map (\x -> ("T_" ++ [intToDigit x], "'" ++ [intToDigit x] ++ "'")) [0..…

PEG

PEG モドキを Haskell で。データ構造を定義した。Show のインスタンスにする部分は省略。 data PExp nt = Eps -- epsilon | AtomT String -- Terminal symbol | AtomNT nt -- Non-Terminal symbol | PExp nt :. PExp nt -- e1 e2 | PExp nt :/ PExp nt -- e…