Как сделать сопоставление с образцом через литерал и назначить ему переменную одновременно? - PullRequest
1 голос
/ 04 марта 2020

Как мне объединить эти два, чтобы иметь возможность сопоставления с образцом и в то же время иметь этот совпадающий литерал в переменной?

fun1 :: Int -> String

fun1 1 = -- ..... how to bind 1 to a variable in the function declaration?
fun1 55 = -- ..... how to bind 55 to a variable in the function declaration?
fun1 123 = -- ..... how to bind 123 to a variable in the function declaration?

fun1 a = -- ...........   all is OK

1 Ответ

12 голосов
/ 04 марта 2020

Первое связывание a, затем сопоставление с образцом, так что оно находится в пределах видимости во всех ветвях.

fun a = case a of
  1 -> ...
  55 -> ...
  123 -> ...
  _ -> ...

Или используйте as-узоры.

fun a@1 = ...
fun a@55 = ...
fun a@123 = ...
fun a = ...

См. Также например https://www.haskell.org/tutorial/patterns.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...