2016-09-04 1 views
1

Voici une fonction I défini dans le schéma:Comment définir une fonction qui renvoie une fonction dans clisp

(define (multn n) (lambda (x) (* x n))) 

et quand je tape

((multn 7) 5) 

lui donne 35.

Cependant , quand j'ai utilisé Clisp:

(defun multn (n) (lambda (x) (* x n))) 

il me donne l'erreur: 'EVAL: (MULTN 7) n'est pas un nom de fonction; essayez d'utiliser un symbole à la place '

Comment puis-je le faire fonctionner? Merci d'avance.

+0

http://dept-info.labri.u-bordeaux.fr/~strandh/Teaching/Langages-Enchasses/Common/Strandh-Tutorial/diff-scheme.html –

+0

https: //people.eecs.berkeley. edu/~ bh/ssch27/appendix-cl.html –

Répondre

2

Vous devez utiliser funcall en raison des espaces de noms séparés en Common Lisp:

[1]> (defun multn (n) (lambda (x) (* x n))) 
MULTN 
[2]> (funcall (multn 7) 5) 
35 

Voir par exemple the Common Lisp cookbook pour une explication en profondeur.