Le meilleur moyen de savoir réellement ce est sûr, c'est si vous la mettre en œuvre. J'ai utilisé 3 étés de créer Zozotez qui est un McCarty-ish LISP en cours d'exécution sur Brainfuck.
J'ai essayé de trouver ce dont j'avais besoin et sur un forum, vous trouverez un thread qui dit que Vous avez seulement besoin de lambda. Ainsi, vous pouvez prendre un ensemble de LISP dans le lambda calcul, je vous le désirez. J'ai trouvé ça intéressant, mais ce n'est pas la voie à suivre si vous voulez quelque chose qui finalement a des effets secondaires et fonctionne dans le monde réel.
Pour une Turing LISP j'ai utilisé Paul Grahams explication de McCarthy papier et tous vous avez vraiment besoin est:
- symbole-évaluation
- la forme spéciale de devis
- forme spéciale si (ou (cond)
- forme spéciale lambda (similaire à la citation)
- la fonction eq
- la fonction de l'atome
- la fonction cons
- la fonction de voiture
- la fonction cdr
- la fonction de répartition (liste-lambda)
C'est 10. En plus de cela, d'avoir une application que vous pouvez tester et pas seulement sur une planche à dessin:
- fonction de lecture
- la fonction d'écriture
C'est 12. Dans mon Zozotez j'ai mis en oeuvre ensemble et flambda (anonyme macroes, comme la lambda). J'ai pu nourrir une bibliothèque mise en œuvre de toute dynamique lié lisp (Elisp, picoLisp), à l'exception d'e/S de fichier (parce que le sous-jacent BF ne prend pas en charge d'autres que stdin/stdout).
Je recommande à quiconque de mettre en œuvre un LISP1-interprète dans les deux LISP (et non pas LISP) afin de mieux comprendre comment une langue est mis en œuvre. LISP est très simple syntaxe c'est donc un bon point de départ pour un analyseur. Je suis actuellement en train de travailler sur un schéma compilateur écrit en scheme, avec des objectifs différents (comme Staline est pour cible C), espérons-le, BF comme l'un d'eux.