Reputation: 1359
There is an as-pattern in Haskell, which allows us referencing the whole variable while in pattern matching:
foo wholeList@(head:tail) = wholeList ++ head
The variable wholeList
represents the original variable.
Assuming that head
is ["Hello"]
, and tail
is ["World"]
, then wholeList
is ["Hello", "World"]
.
Using as-pattern, we can avoid constructing the variable again by concatenating head
and tail
.
Does such feature exist in Elixir?
Upvotes: 5
Views: 219
Reputation: 136
Yes, this is possible. Just use =
in your pattern:
def foo(list = [h|t]), do: list ++ h
Upvotes: 8