我在Haskell中使用二叉搜索树.
这是我写的代码
data BinaryTree a = Leaf | Node (BinaryTree a) a (BinaryTree a) deriving (Show, Eq) insert :: (Ord a, Eq a) => a -> BinaryTree a -> BinaryTree a insert e (Leaf)= (Node Leaf e Leaf) insert e (Node n1 a n2) | e所以基本上这段代码在BST中插入元素,如果第二个参数被锁定在括号内(例如
insert 5 (Node Leaf 2 Leaf)
),它可以正常工作,但为了获得我想要的东西,我需要我的程序在两种情况下工作,当括号内的第二个参数,当它不是时(例如insert 5 Node Leaf 2 Leaf
)你能否就如何重写这段代码提出建议,以获得上述内容
1> sepp2k..:
insert 5 Node Leaf 2 Leaf
insert
用5个参数调用函数,而不是两个.如果你想让它工作,唯一的方法是定义insert
5个参数.有没有办法使双方
insert 5 Node Leaf 2 Leaf
和insert 5 (Node Leaf 2 Leaf)
工作也没有办法让与更小或更大的树5参数版本的工作,所以会非常少点吧.如果你想避免使用括号,你可以
$
改用:insert 5 $ Node Leaf 2 Leaf