【发布时间】:2011-02-16 13:53:24
【问题描述】:
我刚刚开始使用 Haskell,但是从我发现的所有在线教程中,我似乎无法找到是否有一种可接受的方式来执行条件控制语句。我见过 if-else、guards 和模式匹配,但它们似乎都完成了同样的事情。有没有一种普遍接受/更快/更有效的方法?
【问题讨论】:
-
所有这些技术都编译为“案例”。 'case' 是基本的控制机制——基于模式的调度。守卫、模式等只是糖。
-
@Don Stewart:甚至
if...then...else?我真的很想知道这一点。在没有内置形式的情况下编写布尔条件显然需要case(至少忽略可怕的不安全事物),但我不知道编译器是否无论如何都会以这种方式去糖。 -
case x of True -> ... ; False -> ...? -
@jrockway:我认为 camccann 知道您如何将这样编写布尔条件 - 问题是编译器是否真的确实执行那个转变。 (作为另一个例子:乘法本质上是重复加法的糖,但我认为没有任何编译器实际上是这样对待它的。)
-
但“真”和“假”并不是特别硬连线,它们只是另一种类型。
标签: haskell conditional guard if-statement