メモ
削除
Clean Parser
//モナドパーサで括弧 nestingM = (open &> nestingM <& close) <&> (\x -> nestingM <@ (\y -> (max (x+1) y) )) <|> yield 0 //Start = parse nestingM ['()'] "" "" //ints = (number` <&> \i -> number` <&> \j -> number <@ \k -> (i,j,k,i*j*k)) //モナドパーサで足し算 ints = number <&> \i -> symbol '+' <&> \_ -> number <@ \k -> (i+k)
liner logic
についてお勉強しようとこの人のページにいった
http://homepages.inf.ed.ac.uk/wadler/
なんかdivとps形式だったのでtex関連のソフトをインストールする必要にせまられた。
cygwinsetupで簡単にptexがインストールできるアドレス
以下をsetupを起動したときダウンロードするサイトに指定する
http://www.misojiro.t.u-tokyo.ac.jp/
ps2pdfよりdvipdfの方が綺麗にPDFに変換できるな…
数字変換
//digit は型エラーでだめだった natural :: Parser Char Int a natural = (<*> (number)) <@ foldl nextDigit 0 where nextDigit x y = x * 10 + y integer = ( (symbol '-') (\min temp -> ~temp) id) <++> natural //ちゃんとマイナスがつく Start = parse integer ['-132423'] "" ""
括弧の照合テスト 3
foldparens f e = p where p = (open &> p <& close) <&&> p <@ f <|> yield e
括弧の照合テスト 2
nesting = (open &> nesting <& close) <&&> nesting <@ (\(x,y) -> max (x+1) y) <|> yield 0 Start = parse nesting ['(()(()))'] "" ""