繁体   English   中英

为什么我的 Haskell function 参数必须是 Bool 类型?

[英]Why is my Haskell function argument required to be of type Bool?

我在 Haskell 中有一个 function ,定义如下:

f2 x y = if x then x else y

在尝试确定y的类型时,我会假设它可以是任何有效的 Haskell 类型,因为评估 if 部分不需要它。 但是,检查类型签名

:type f2

产量

f2 :: Bool -> Bool -> Bool

在这种情况下,为什么y参数需要是Bool类型?

Haskell 值具有类型。 每个值都有一个类型。 一种。 它不能是同一类型中的两种不同类型。

因此,由于x作为if的结果返回,所以整个if... then... else...表达式的类型与x的类型相同。

if表达式有类型。 因此,它的结果表达式和替代表达式都必须具有相同的类型,因为它们中的任何一个都可以返回,具体取决于测试的值。 因此,两者必须具有相同的类型。

由于x也用于测试,它必须是Bool 那么y也必须如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM