当 a 和 b 都为真或它们都为假时,我试图得到真。有人能告诉我我做错了什么吗?
imply :: (a -> Bool, b -> Bool) -> Bool
a = False
b = True
imply (a, a) = True
imply (b, b) = True
imply _ = False
Run Code Online (Sandbox Code Playgroud)
我将猜测您想要什么,因为您似乎正在努力学习 Haskell 语法的基础知识。如果您还没有,请考虑学习教程。
我同意@bradrn你正在寻找的功能可能是这个:
imply :: (Bool, Bool) -> Bool
imply (True, True) = True
imply (False, False) = True
imply _ = False
Run Code Online (Sandbox Code Playgroud)
我可以解释关于你所做的各种事情,但我认为你只需要看一个例子来说明它的外观。我很高兴在评论中回答您对此的任何问题。
要使用此功能,例如,在 中加载文件后ghci,您键入:
ghci> imply (True, False)
False
ghci> imply (False, False)
True
Run Code Online (Sandbox Code Playgroud)
请注意,在 Haskell 中,约定是定义函数curried,因此我们会看到
imply :: Bool -> Bool -> Bool
imply True True = True
...
ghci> imply True False
False
Run Code Online (Sandbox Code Playgroud)
但是这两个版本(几乎)是等效的。