For a list starting with something, it’s trivial:
def foo([first | _rest]) when first in ["a", "b"] do
end
For a list ending with something, it’s more involved as the Erlang lists are single-linked lists (in the C lingo) and you have to traverse the entire list to find the ending:
def foo(list) when is_list(list) do
if List.last(list) in ["a", "b"] do
# all good, proceed
else
# report an error
end
end
For this usually people make a public function that does these validations and handles returning errors and then define something like defp do_foo to handle the happy path only.


















