; translate.l (setf *english* '(one two three four five)) (setf *french* '(un deux trois quatre cinq)) (setf *german* '(eins zwei drei fier fuenf)) (setf *efd* (mapcar #'list *english* *french*)) (setf *fed* (mapcar #'list *french* *english*)) (setf *egd* (mapcar #'list *english* *german*)) (setf *fgd* (mapcar #'list *french* *german*)) (setf *ged* (mapcar #'list *german* *english*)) (setf *gfd* (mapcar #'list *german* *french*)) (defun translate (nn ol &aux il) (setf il (identify-language nn)) (cond ( (and (eq il 'english) (eq ol 'french)) (efx nn) ) ( (and (eq il 'french) (eq ol 'english)) (fex nn) ) ( (and (eq il 'english) (eq ol 'german)) (egx nn) ) ( (and (eq il 'french) (eq ol 'german)) (fgx nn) ) ( (and (eq il 'german) (eq ol 'english)) (gex nn) ) ( (and (eq il 'german) (eq ol 'french)) (gfx nn) ) ) ) (defun efx (nn) (second (assoc nn *efd*)) ) (defun fex (nn) (second (assoc nn *fed*)) ) (defun egx (nn) (second (assoc nn *egd*)) ) (defun fgx (nn) (second (assoc nn *fgd*)) ) (defun gex (nn) (second (assoc nn *ged*)) ) (defun gfx (nn) (second (assoc nn *gfd*)) ) (defun identify-language (nn) (cond ((member nn *english*) 'english ) ((member nn *french*) 'french ) ((member nn *german*) 'german ) ) )