word 0 = "Zero"
word 1 = "One"
word 2 = "Two"
我會如何將這種模式匹配函數壓縮爲一行?單線模式匹配的語法是什麼?
我試過word 0 = "Zero" word 1 = "One" word 2 = "Two"
,但沒有奏效。
word 0 = "Zero"
word 1 = "One"
word 2 = "Two"
我會如何將這種模式匹配函數壓縮爲一行?單線模式匹配的語法是什麼?
我試過word 0 = "Zero" word 1 = "One" word 2 = "Two"
,但沒有奏效。
使用分號:
word 0 = "Zero"; word 1 = "One"; word 2 = "Two"
你可以使用這樣的事情:
word = (!!) ["Zero", "One", "Two"]
我不知道這是否會比模式匹配更慢,但。
這是一個奇怪的要求,寫一個函數在一行。無論如何,case
也可能有幫助。
word x = case x of {0 -> "Zero"; 1 -> "One"; 2 -> "Two"}
另一種可能性:
data Words = Zero | One | Two deriving (Show, Enum)
word = show . (toEnum :: Int -> Words)
,或者,如果你希望它比Int
其他類型的工作,
word = show . ((toEnum.fromIntegral) :: Integral a => a->Words)