Como verifico elegantemente muitas condições em Erlang?

Então, quando um usuário envia uma solicitação para registrar uma conta, ele envia seu nome de usuário, senha, email e outras informações. A função de registro deve verificar todos os seus dados. Um exemplo seria:

verify email in useverify nome de usuário não em usoverify nome de usuário é alfanuméricoverify todos os campos têm mais de X caracteresverify todos os campos têm menos de Y caracteres de comprimento

Agora não quero ter uma declaração if ou case de 5 níveis de profundidade, mas que outras opções tenho? Dividi-lo em funções separadas parece uma boa ideia, mas só preciso verificar o valor de retorno das funções em algum tipo de condição e voltar ao problema original.

Eu poderia separá-los em funções e, em seguida, chamar uma instrução if com todos os condicionais OR'd juntos, mas isso não me daria o que eu quero, porque preciso poder informar ao usuário o erro específico, se houver um .

Como lidar com esse tipo de situação em erlang? Existe um equivalente de uma declaração de retorno ou precisa ser a última linha executável de uma função para ser um valor de retorno?

questionAnswers(3)

yourAnswerToTheQuestion