これらのデータ型を定義しました:
data Term = Symbol [Char] | Number [Int]
data Exp = Fun (String, Term) | Exp (String, [Exp])
そして、いくつかの Show ルールを書きました:
instance Show Term where
show (Symbol [x]) = [x]
show (Symbol (x:xs)) = [x]++", "++(show (Symbol xs))
show (Number [x]) = (show x)
show (Number (x:xs)) = (show x)++", "++(show (Number xs))
instance Show Exp where
show (Fun (name, args)) = name++"("++(show args)++")"
show (Exp (name, args)) = name++"("++(show args)++")"
今私がさせたら:
bt = Exp("z", [Fun("f", Number [1,2,3]), Fun("g", Symbol ['a', 'b', 'c'])])
私が得るそれを示す:
z([f(1, 2, 3),g(a, b, c)])
私はこの表現をしたいと思います:
z(f(1, 2, 3),g(a, b, c))
つまり、内部に角括弧はありません。
誰かが私を助けることができますか?
これらのステートメントを追加しようとしました:
instance Show [Exp] where
show [x] = show x
show (x:xs) = (show x)++(show xs)
しかしghci
、それは法的コードに注意すると主張しています。