関数型プログラミング言語Haskell Part15
■ このスレッドは過去ログ倉庫に格納されています
0349デフォルトの名無しさん
2011/08/09(火) 20:28:00.00実際に手続き型言語でパーサコンビネータを組んでみたけど、Parsecほど使いやすくはならなかったよ。
とくに順次処理をして自分の使いたい型のデータを返すのが、面倒な問題を引き起こす。
例えば、"000 - 000"という文字列を解析して、整数のペアを返したい。
厳密にコンビネータだけ使うなら、例えば seq(seq(number, string(" - ")), number)みたいなやり方をするわけだけど、
これは読みにくいし、せいぜい配列かリストを返すことになって自由な型のデータを返せない
他方、
x = number();
string(" - ")();
y = number();
return (x, y)
みたいにパーサーを実際に副作用させる構文で、自由な型のデータを返すことはできるけど、
最後の()を良く忘れるが必ずしも型検査に引っかからず、バグが見つけにくかった。
まぁ、実際に試してみれば分かると思うけど。
■ このスレッドは過去ログ倉庫に格納されています