¿En qué se diferencia Racket de Scheme?

Resuelto mudgen asked hace 14 años • 6 respuestas

Racket es descendiente de Scheme. ¿En qué se diferencia Racket del R6RS? ¿Qué añadió, qué quitó o simplemente es diferente?

Entiendo que Racket es más que un idioma, es una plataforma para idiomas. Pero me refiero al dialecto principal de Racket.

mudgen avatar Jul 27 '10 22:07 mudgen
Aceptado

En última instancia, Racket se basa en R5RS, no en R6RS ni en un superconjunto estricto de ninguno de los dos. No creo que pueda llamarse 'Scheme' porque no es compatible con ningún estándar de Scheme.

La mayoría de las implementaciones ofrecen extensiones, pero por lo demás son compatibles con versiones anteriores; por supuesto, el compilador que viene con Racket también puede ejecutarse en modo R5RS o R6RS. El esquema R5/6RS válido que se ejecuta en modo raqueta puede rechazarse, causar errores de tiempo de ejecución o comportarse de manera diferente a lo que debería. Dicho esto, los puntos principales en los que no es compatible con versiones anteriores son:

  • Racket no tiene set-cdr!y set-car!, sino set-mcar!que solo funciona en pares creados específicamente como mutables.
  • Lo que llama Racket letrecse llama letrec*en R6RS y no existe en R5RS, lo que llaman R5RS y R6RS letrecno existe en Racket.
  • En Racket, muchas cosas se autoevalúan, lo que generaría un error en R5RS, la más importante es la lista vacía .
  • Racket distingue entre mayúsculas y minúsculas, aunque R6RS también distingue entre mayúsculas y minúsculas
  • Golosinas de raqueta ( ... )y, [ ... ]como equivalente, R5RS no, pero R6RS sí.

Probablemente haya más, pero en la mayoría de las otras partes la raqueta es un superconjunto de Scheme.

Zorf avatar Jul 29 '2010 00:07 Zorf

Contiene listas inmutables, como se mencionó anteriormente. También contiene un sistema de estructura que es un poco más limpio que el sistema de registro R6RS. Tiene una clase orientada a objetos y un sistema de objetos. Tiene soporte nativo para diseño por contrato. Tiene un sistema de unidades que recuerda al sistema de módulos ML, así como un sistema de módulos muy parecido al sistema de módulos R6RS. Estoy seguro de que he olvidado tantas cosas como he mencionado.

No estoy seguro de que el cambio de nombre haya sido útil como algo más que un truco de marketing, pero el escándalo es definitivamente un dialecto distinto del esquema.

deinst avatar Jul 27 '2010 16:07 deinst

El motivo del cambio de nombre de PLT Scheme a Racket se analiza en el sitio de Racket .

Norman Gray avatar Jul 29 '2010 22:07 Norman Gray