Differences between R4RS and R5RS

From SchemePunks

Jump to: navigation, search

[edit] What is different in R5RS?

Source: http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-11.html#%_sec_Temp_7

Feel free to discuss pro's and con's here.

  • The empty list is now required to count as true.
  • The classification of features as essential or inessential has been removed. There are now three classes of built-in procedures: primitive, library, and optional. The optional procedures are load, with-input-from-file, with-output-to-file, transcript-on, transcript-off, and interaction-environment, and - and / with more than two arguments. None of these are in the IEEE standard.
  • Programs are allowed to redefine built-in procedures. Doing so will not change the behavior of other built-in procedures.
  • Port has been added to the list of disjoint types.
  • The macro appendix has been removed. High-level macros are now part of the main body of the report. The rewrite rules for derived expressions have been replaced with macro definitions. There are no reserved identifiers.
  • Syntax-rules now allows vector patterns.
  • Multiple-value returns, eval, and dynamic-wind have been added.
  • The calls that are required to be implemented in a properly tail-recursive fashion are defined explicitly.
  • `@' can be used within identifiers. `|' is reserved for possible future extensions.
  • 'Load', 'with-input-from-file' and 'with-output-to-file' were made optional.
Personal tools