2011-08-22 5 views
20

Je suppose que la raquette #lang est un dialecte de schéma avec beaucoup plus de structures et de fonctions communes et serait peut-être plus pédagogique. Quels sont les avantages d'une raquette #lang contre le schéma #lang?Différences entre le schéma #lang et #lang racket

Est-il préférable (ou même possible) d'utiliser le schéma #lang dans la raquette pour suivre tout le contenu de «Structure et interprétation des programmes informatiques» ou même «Comment concevoir des programmes». HtDP est spécifique à la raquette #lang?

Quel que soit le code écrit dans le schéma #lang, tant que les bibliothèques ne sont pas incluses, peuvent être utilisées dans un système de poulet ou un interpréteur principal?

Merci d'avance.

Répondre

30
  1. Oui, #lang racket est le dialecte par défaut de la raquette, avec beaucoup d'extensions.

  2. Deux endroits où il n'est pas une extension: if doit avoir une branche d'autre, et les paires sont immuables (pas set-car! et set-cdr!).

  3. #lang scheme a été utilisé pendant un certain temps avant le changement de nom, et maintenant #lang racket est utilisé de manière cohérente. Mais nous avons gardé #lang scheme autour pour la compatibilité (ainsi que diverses bibliothèques scheme/--- qui sont conservées et peuvent parfois être différents de racket/--- homologues). Il n'y a aucune raison d'utiliser #lang scheme dans un nouveau code. Pour suivre SICP, n'utilisez pas l'un de ceux-ci - il y a un langage agréable que Neil Van Dyke a écrit, voir web page pour plus de détails.

  4. Pour suivre HtDP, n'utilisez aucun de ces éléments, utilisez les langues de l'étudiant. Il y a aussi de nouvelles variantes basées sur #lang comme #lang htdp/bsl mais elles ne sont pas encore complètes. (Et HTDP est pas#lang racket spécifique.)

  5. Non, Racket est très différent du schéma de poulet. Vous pourriez être en mesure d'exécuter du code dans les deux, mais ceux-ci ne seraient probablement que de minuscules exemples de jouets.

+0

Merci beaucoup pour l'info Eli, étant pour le but pédagogique je vais aller totalement avec la raquette, ce qui était très cool de régime de poulet est la compilation à la partie C. – orlybg

+0

Avec Racket, il n'y a pas vraiment besoin de compiler en C - il utilise un compilateur just-in-time qui fonctionne plutôt bien. Si vous êtes préoccupé par la création d'exécutables autonomes plutôt que par la vitesse, alors il existe des moyens de le faire aussi - voir 'raco exe' et' raco distribute'. –

+4

Juste pour souligner une chose ici: '#lang scheme' est presque exactement le même que' #lang racket' - il n'est plus semblable à Chicken Scheme, ou à SICP ou HtDP que '#lang racket' est. –

Questions connexes