word 0 = "Zero"
word 1 = "One"
word 2 = "Two"
我如何将像这样的模式匹配函数压缩成一行?
我尝试了word 0 = "Zero" word 1 = "One" word 2 = "Two"
,但这没效果。
答案 0 :(得分:30)
使用分号:
word 0 = "Zero"; word 1 = "One"; word 2 = "Two"
答案 1 :(得分:30)
在一行中编写函数是一个奇怪的要求。无论如何,case
也可以在那里提供帮助。
word x = case x of {0 -> "Zero"; 1 -> "One"; 2 -> "Two"}
答案 2 :(得分:10)
您可以使用以下内容:
word = (!!) ["Zero", "One", "Two"]
我不知道它是否比模式匹配慢。
答案 3 :(得分:3)
另一种可能性:
data Words = Zero | One | Two deriving (Show, Enum)
word = show . (toEnum :: Int -> Words)
或者,如果您希望它使用Int
以外的其他类型,
word = show . ((toEnum.fromIntegral) :: Integral a => a->Words)