Functional programming 布尔函数与构造if-then-else

Functional programming 布尔函数与构造if-then-else,functional-programming,boolean,Functional Programming,Boolean,我已经开始学习函数式编程。我看了约翰·休斯的演讲,我有点怀疑。你能帮帮我吗 他说布尔值作为数据类型是不需要的。它们可以表示为以下函数: true x y = x false x y = y 然后他构造if-Then-else,其中包含三个参数:boolean,然后branch和else-branch: if-then-else bool x y = bool x y 它在实际情况下如何工作?让我们举一个例子: if (age > 18) then { issue_ti

我已经开始学习函数式编程。我看了约翰·休斯的演讲,我有点怀疑。你能帮帮我吗

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

true x y = x
false x y = y
然后他构造if-Then-else,其中包含三个参数:boolean,然后branch和else-branch:

if-then-else bool x y =
    bool x y
它在实际情况下如何工作?让我们举一个例子:

if (age > 18) then {
     issue_ticket
} else {
     dont_issue_ticket
}
表达式“age>18”可以用如下函数包装:

isAgeAboveThreshold age threshold = 
    ???????????????????
如果没有“if”,我不知道如何定义函数。如果年龄大于阈值,我如何定义它以返回“true”?你能帮忙吗

非常感谢。

这是在说什么。在它中,定义
减号
为零后,您可以将
年龄>阈值
(对于自然数)表示为
为零(减去(成功阈值)年龄)

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

如果没有“if”,我不知道如何定义函数


你不应该认为你需要这样做;一旦您知道如何表示if
,就可以使用它来定义进一步的函数。

谢谢。但是isZero是如何工作的呢?它里面应该有基于if语句的东西,对吧?不太对。链接页面有
为零的定义,但您应该先了解数字的编码方式。