如果我有三種數據類型,分別爲Expr
,Op
和Fu
。將自定義數據類型轉換爲字符串
data Expr = Num Double
| X
| Operator Op Expr Expr
| Function Fu Expr
deriving (Eq)
data Op = Add | Mul
deriving (Eq)
data Fu = Sin | Cos
deriving (Eq)
我應該做的是後來創建一個基於數據類型的表達式。例如
let anExpr = Add (Num 3.0) (Num 4.0)
而且打印出相應的表達式,在這種情況下,它應該只是「3.0 + 4.0」。
我面臨的問題是創建另一種類型或數據類型來識別它是否應該打印出來的加法或乘法符號。我想要做的就是這樣的僞代碼
printOut (Num n) = show n
printOut X = "x"
printOut (Op a b) = printOut a ++ 'printOutRightOp' ++ printOut b
printOut (Fu a) = 'printOutRightFu' ++ printOut a
我該如何做到這一點? 。
但是'Op'和'Fu'在'Expr'是建設者的** **的名字。 –
對不起,修正了這個問題 – Salviati
@Salviati你剛開始有一個拼寫錯誤,應該是「如果我有三種數據類型** Expr **,Op和Fu」...... – jkeuhlen