目前我正在尝试通过在线教程Learn you a Haskell 来学习 Haskell。在“函数中的语法”一章中,作者写道“您也可以使用 where 绑定来进行模式匹配!”。之后是代码示例的一部分,但我不知道在哪里使用模式匹配和新的 where 绑定。因为代码块的第一部分被缩短了(“我们可以将之前函数的 where 部分重写为”),你只能推断它,但我认为我选择了正确的部分。
功能:
bmiTell :: (RealFloat a) => a -> a -> String
bmiTell weight height
| bmi <= skinny = "You're underweight, you emo, you!"
| bmi <= normal = "You're supposedly normal. Pffft, I bet you're ugly!"
| bmi <= fat = "You're fat! Lose some weight, fatty!"
| otherwise = "You're a whale, congratulations!"
where bmi = weight / height ^ 2
skinny = 18.5
normal = 25.0
fat = 30.0
要替换的新 where 部分:
where bmi = weight / height ^ 2
(skinny, normal, fat) = (18.5, 25.0, 30.0)
因为我想了解本教程中讲解的所有 Haskell 代码示例和语法方法,所以希望有人能在这里解释一下模式匹配在哪里使用以及它是如何工作的。对我来说,问题是我只看到了守卫和一种将所有东西与体重和身高联系起来的图案。