gpt4 book ai didi

haskell - 使用保护和切片

转载 作者:行者123 更新时间:2023-12-05 00:13:06 29 4
gpt4 key购买 nike

我是 Haskell 的初学者,对于我的作业,我必须编写 2 个版本的函数:使用和不使用切片。如果参数大于 100,则此函数之一应返回 True,否则返回 False。

没有切片的功能运行良好:

f5 x | x>100 = True
| otherwise = False

但第二个版本没有:
f5' | (>100) = True
| otherwise = False

你能告诉我如何正确编写这个函数吗?

最佳答案

你没有切片的函数太复杂了,给你带来了麻烦。它应该是

f5 x = x > 100

因为
(>) :: Ord a => a -> a -> Bool

已经产生了 Bool .无需在顶部使用防护装置。想一想:如果 x > 100True ,然后你拿起守卫的第一个分支并返回 True ,如果是 False您选择第二个分支并返回 False .您可以在不丢失任何内容的情况下消除额外的分支。

然后你只需要打出 x :
f5 = (> 100)

你的原件失败了,因为
(> 100) :: (Ord a, Num a) => a -> Bool

是一个最终给出 Bool 的函数,不是 Bool本身。因此,当您尝试将其用于普通 Bool 的守卫中时,它会爆炸。是期待。

关于haskell - 使用保护和切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49078418/

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