Variante funcional da função 'oneof' no Raquete
Eu escrevi a seguinte função para descobrir se uma e apenas uma das 5 variáveis é verdadeira:
(define (oneof v w x y z)
(or (and v (not w) (not x) (not y) (not z))
(and w (not v) (not x) (not y) (not z))
(and x (not v) (not w) (not y) (not z))
(and y (not v) (not w) (not x) (not z))
(and z (not v) (not w) (not x) (not y)) ))
(xor leva apenas 2 argumentos)
No entanto, é muito imperativo e não funcional. Além disso, quero escrever uma função (uma de N) que será genérica e não específica para 5 variáveis. Como isso pode ser feito? Obrigado.
Edit: Como apontado nos comentários, o código é 'repetitivo' e não 'imperativo', embora a necessidade de sua melhoria permaneça.