Parsec(Haskell)わからないこといろいろ
- 字句解析の方法がわからん,というかややこしすぎ.http://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tmp/Parsec.htmlのセパレートスキャナってなんだろ.仕方なく spc とかいうあやしい文法をはさんでいる
- JavaでいうtoString の作り方がわからない
show b::BinOp = bLeft b ++ bRight b ++ bOp b
って書いたらおこられた
- 異なるクラスで同名のフィールドが定義できない
data Foo=Foo { a:: Int} data Bar=Bar { a:: Int}
を定義すると「a が2重定義」といわれる.
data Foo = Foo {a::Int} | Bar {a::Int}
ならOK
しかし
data Foo = Foo {a::Int} | Bar {a::String}
は,だめ.
まあ,aはフィールドじゃなくて関数だから仕方ないのはわかるけど,Java人間としてはフィールド的に扱いたい.いっそのこと foo.a とか書かせてほしいぐらい.