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.

questionAnswers(3)

yourAnswerToTheQuestion