Je suis un débutant Scheme et j'essaie de donner un sens à mes devoirs. J'ai une fonction que j'ai appelé plus haut fait dupliquer, et il ressemble à ceci:Problème de schéma (en utilisant une fonction en tant que paramètre)
(DEFINE (duplicate lis)
(IF (NULL? lis) '())
((CONS (CAR lis) (CONS (CAR lis) (duplicate (CDR lis))))
))
A i/o typique de ce serait i: (en double « (1 2 3 4)) o: (1 1 2 2 3 3 4 4), si fondamentalement il duplique tout dans la liste. Passant dessus: Maintenant je suis censé faire une fonction qui s'appelle comp. Il est censé être construit comme ceci:
(DEFINE (comp f g) (lambda (x) (f (g (x))))
où je pouvais entrée « (1 2 3 4) et il retournerait (1 1 4 4 9 9 16 16)
donc f = double et g = lambda. Je sais lambda devrait probablement ressembler à ceci:
(lambda (x) (* x x))
Mais ici est là que le problème commence, je l'ai déjà passé plusieurs heures à ce sujet, et comme vous pouvez le voir pas fait beaucoup de progrès.
Toute aide serait appréciée. Cordialement.
1. Dans 'comp()' vous ne pouvez pas avoir '((x)'; 'x' n'est pas une fonction: elle devrait être' (gx) 'au lieu de' (g (x)) '2. Pour utiliser' comp' avec 'lambda', votre (lambda (x ..)) doit fonctionner sur une liste pour être compatible avec 'double '; tel qu'il est, ce «lambda» ne fonctionne que sur un seul nombre. C'est difficile à faire sans boucle. – frayser