这是我生命中第三次尝试学习 Haskell,这次是通过Learn you a Haskell ...。
当作者解释守卫时,他展示了这个例子:
bmiTell :: (RealFloat a) => a -> String
bmiTell bmi
| bmi <= 18.5 = "You're underweight, you emo, you!"
| bmi <= 25.0 = "You're supposedly normal. Pffft, I bet you're ugly!"
| bmi <= 30.0 = "You're fat! Lose some weight, fatty!"
| otherwise = "You're a whale, congratulations!"
并说
这很容易让人想起命令式语言中的一个大 if else 树,只有这个更好,更易读。虽然大的 if else 树通常不受欢迎,但有时问题的定义如此离散,以至于您无法绕过它们。守卫是一个很好的选择。
我可以看到警卫更具可读性,但我不明白为什么该语法“好得多”
它更灵活?它更强大?后卫的最大优势是什么?
我的大问题可能是句子
虽然大的 if else 树通常不受欢迎,但有时问题的定义方式如此离散,以至于您无法绕过它们
谁能举个例子?