首页 > 解决方案 > 当 a 和 b 具有相同值时暗示为真的函数

问题描述

当 a 和 b 都为真或它们都为假时,我试图使之为真。有人可以告诉我我做错了什么吗?

imply :: (a -> Bool, b -> Bool) -> Bool
a = False
b = True
imply (a, a) = True
imply (b, b) = True
imply _ = False

标签: haskell

解决方案


我将猜测您想要什么,因为您似乎在努力学习 Haskell 语法的基础知识。如果您还没有,请考虑阅读教程。

我同意@bradrn,您正在寻找的功能可能是这个:

imply :: (Bool, Bool) -> Bool
imply (True, True)   = True
imply (False, False) = True
imply _ = False

我可以解释你所做的各种事情,但我认为你只需要看看这个看起来如何的例子。我很高兴在评论中回答您对此提出的任何问题。

要使用这个函数,比如说,在加载文件之后ghci,你输入:

ghci> imply (True, False)
False
ghci> imply (False, False)
True

请注意,在 Haskell 中,约定是定义函数curried,所以我们会看到

imply :: Bool -> Bool -> Bool
imply True True = True
...

ghci> imply True False
False

但是这两个版本(几乎)是等效的。


推荐阅读