Если вы спрашиваете, где вводится идентификатор, он связан с сопоставлением с шаблоном в операторе case
, так же, как идентификатор c
связан с сопоставлением с шаблоном в функцииопределение.
Любое сопоставление с образцом может вводить новый идентификатор для связанного выражения:
(\(Just x) -> x) foo
let (Just x) = foo in x
f (Just x) = x
case foo of
Just x -> x
... все они вводят новый идентификатор с именем x
.На самом деле, все они в значительной степени эквивалентны, потому что компилятор преобразует их все в case
блоки под капотом.