布尔作为函数并构造if-then-else

时间:2018-06-18 07:29:03

标签: functional-programming boolean

我已经开始学习函数式编程。我经历了John Hughes的演讲,我对此表示怀疑。你能帮我吗?

他说不需要布尔值作为数据类型。它们可以表示为如下函数:

true x y = x
false x y = y

然后他构造if-then-else,它需要三个参数:boolean,then branch和else:

if-then-else bool x y =
    bool x y

在实际情况下如何运作?我们来看下面的例子:

if (age > 18) then {
     issue_ticket
} else {
     dont_issue_ticket
}

表达"年龄> 18",可以包含在以下函数中:

isAgeAboveThreshold age threshold = 
    ???????????????????

我不知道如何在没有" if"的情况下定义函数。如何定义它以返回" true"如果年龄大于阈值?你能帮忙吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

这是在讨论Church encoding。在其中,您可以在定义age > thresholdisZero (minus (succ threshold) age)后将minus(对于自然数字)表示为isZero

但对于实际例子,这并不是特别预期。仅仅因为可以用这种方式表示不同的数据类型,并不意味着它们应该是。

  

我不知道如何在没有“if”的情况下定义函数。

你不应该认为你需要;一旦你知道如何表示if,你就可以用它来定义更多的函数。