如果我有一個代數資料型別,如下圖所示
data BinaryTree a = Leaf
| Node a (BinaryTree a ) (BinaryTree a)
deriving (Eq,Ord)
這里Leaf是指空,a是指節點,另外兩個引數是指來自節點的子樹。
我是否有辦法指定引數a應該派生出Show
我試圖為BinaryTree給出我自己的Show的實作,我開始時很簡單:
instance Show (BinaryTree a) where
顯示 Leaf = "x"/span>
show (Node node left right) = show node "
" 顯示左邊 " " 顯示右邊
但是show node不起作用-> 沒有實體用于(Show a)產生于'show'的使用
uj5u.com熱心網友回復:
你只能使用show node,如果node的型別是Show型別類的成員。因此,你應該在instance宣告的頭部添加一個型別約束:
-- ↓ type constraint
instance Show a => Show (BinaryTree a) where
顯示 Leaf = "x"/span>
show (Node node left right) = show node '
':顯示左邊 " " 顯示右邊
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329814.html
標籤:
