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?
Yes, this is possible. Just use =
in your pattern:
def foo(list = [h|t]), do: list ++ h
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With