可能重复:
Haskell pattern matching - how to use constants variable
基本上我想要其他语言中的宏:给文字命名。
我尝试用函数模拟它,但case
表达让我感到惊讶:
one = 1
two = 2
three = 3
which n =
case n of
one -> "one"
two -> "two"
three -> "three"
_ -> "unknown"
编译器警告我,模式有重叠。我意识到警告在一段时间后真正意味着什么,并使用警卫修改了实施,其中有效:
one = 1
two = 2
three = 3
which n =
case n of
_ | n == one -> "one"
_ | n == two -> "two"
_ | n == three -> "three"
_ -> "unknown"
但是,仍然有一种方法可以让haskell定义像宏一样的常量,就像我刚刚看到的那样没有令人惊讶的后果吗?
我可以在功能级别使用警卫,但这不是我要求的。