Dans le paradigme fonctionnel, une fonction est une "structure de contrôle" primaire. Par exemple, le +
est également traité comme une fonction et vous pouvez le faire circuler comme n'importe quel autre "objet". Je me demandais si, dans le cas où je devais implémenter un langage fonctionnel jouet, j'implémenterais les fonctions simples comme de vraies fonctions (c'est-à-dire que je traduirais +
en une routine appelable) ou les traduire en instructions normales qui seraient placées "en ligne" dans le code traduit. Mais alors, avec la seconde stratégie, serais-je capable de les passer et de les appliquer partiellement comme en haskell ? Que pensez-vous de l'implémentation/traduction des fonctions en tant qu'idée centrale dans un langage fonctionnel ?
Réponse
Trop de publicités?Je peux vous recommander le livre de PJL. J'ai écrit un compilateur avec l'aide de ce livre (en 1989-90, en Prolog) et le livre est une très bonne introduction au sujet.
Il est peut-être dépassé (il a été écrit en 1987, il y a 30 ans), mais il couvre encore très bien l'essentiel. Il est cependant complètement axé sur les langages paresseux comme Haskell. À l'époque, Haskell n'existait pas et le livre utilise LML ou Miranda, un langage prédécesseur, mais les langages sont très proches.