ここに私が取り組んでいるコードの簡略化されたバージョンがあります
data ArithExp = Con Int
| Add ArithExp ArithExp
instance Show ArithExp where
show (Con i) = show i
show (Add e1 e2) = show "( " ++ show e1 ++ " + " ++ show e2 ++ " )"
したがって、コマンドを実行すると
Add (Con 6) (Con 0)
私が望む出力は次のとおりです。
( 6 + 0 )
しかし、上記のコードは以下を出力します:
"( "6 + 0 )
私が知る限り、show 関数は最初の文字列の引用符を文字として出力していますが、その後の連結ではそれらを正しく使用しています。振る舞いは私には本当に矛盾しているようです。適切な出力を得るのに役立つ洞察をいただければ幸いです。前もって感謝します!