Ответ 1
Используйте точки с запятой:
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"
Это странное требование написать функцию в одной строке. В любом случае, case
тоже может быть полезен.
word x = case x of {0 -> "Zero"; 1 -> "One"; 2 -> "Two"}
Вы можете использовать что-то вроде этого:
word = (!!) ["Zero", "One", "Two"]
Я не знаю, будет ли это медленнее, чем сопоставление шаблонов.
Другая возможность:
data Words = Zero | One | Two deriving (Show, Enum)
word = show . (toEnum :: Int -> Words)
или, если вы хотите, чтобы он работал с типами, отличными от Int
,
word = show . ((toEnum.fromIntegral) :: Integral a => a->Words)