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