如何在haskell中定义一个常量?

时间:2011-06-27 15:30:04

标签: haskell

  

可能重复:
  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定义像宏一样的常量,就像我刚刚看到的那样没有令人惊讶的后果吗?

我可以在功能级别使用警卫,但这不是我要求的。

0 个答案:

没有答案