-module(foo). -export([verify/1]). -spec verify([atom()]) -> ok | no_return(). verify(Options) -> verify(Options, []). -spec verify([atom()], [atom()]) -> ok | no_return(). verify([foo | Options], Errors) -> verify(Options, Errors); verify([bar | Options], Errors) -> verify(Options, Errors); verify([Option | Options], Errors) -> verify(Options, [Option | Errors]); verify([], []) -> ok; verify([], Errors) -> erlang:error({bad_options, Errors}).