gpt4 book ai didi

haskell - 函数中的非穷尽模式-Haskell

转载 作者:行者123 更新时间:2023-12-02 21:43:29 25 4
gpt4 key购买 nike

我编写了一个函数,它将一个元素插入二叉树中,但每次我尝试运行它时,我都会得到函数中的非详尽模式。

type Eintrag = (Person, Anschrift, SozNr)

data Tree = Nil | Node Eintrag Tree Tree deriving (Eq, Show)

singleton :: Eintrag -> Tree
singleton x = Node x Nil Nil

genTree :: Eintrag -> Tree-> Tree
genTree x (Node e l r)= if ((Node e l r)==Nil)
then (singleton x)
else if (soznr x) < (soznr e )
then (Node e (genTree x l) r)
else if (soznr x) > (soznr e )
then (Node e l (genTree x r))
else (Node e l r)

你能给我一些提示吗?谢谢

最佳答案

您还没有包含当您插入的树为 Nil 时会发生什么的定义,大概看起来像

genTree x Nil = singleton x

您尝试使用该行执行此操作

genTree x (Node e l r) = if (Node e l r == Nil)
then singleton x
else ...

但是如果你仔细想想,你就会发现这是行不通的。模式匹配确保您正在查看的树的形式为Node _ _ _,因此它永远不会Nil。也就是说,if 表达式中的测试的计算结果始终为 False

关于haskell - 函数中的非穷尽模式-Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19940024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com