Que se passe-t-il lorsque je fais ce qui suit?Implémentation de fonctions cariées dans le schéma
(define ((func x) y)
(if (zero? y)
((func x) 1)
12))
Je comprends que je peux le faire:
(define curried (func 5))
Et maintenant, je peux utiliser cari. Ce qui m'intéresse, c'est la définition de la fonction. Est-ce que la ligne
((func x) 1)
crée un nouveau lambda avec x comme argument, puis invoque-le sur 1? Ou est-ce plus intelligent que cela et il réutilise juste celui existant. (Par exemple, si je fais (curried 0)
, la ligne ((func x) 1)
équivaudrait à (curried 1)
- ne PLAI Scheme fait cela?)
gotcha. pour répondre à ma question maintenant - cette expansion se produira même dans la fonction 'f', non? – Claudiu
De quoi parlons-nous maintenant? – soegaard