Source (programming language)

During the development of SICP JS, starting in 2008, it became clear that purpose-designed sublanguages of JavaScript would contribute to the learning experience.

[3] Source §1 is a very small purely functional sublanguage of JavaScript, designed for Chapter 1 of SICP JS.

Source §2 adds pairs and a list library, following the data structures theme of Chapter 2.

All Source languages are properly tail recursive, as required by Chapter 1 of SICP and as specified by ECMAScript 2015.

Since the Safari browser is ECMAScript-2015-compliant, including proper tail calls, it can serve as an implementation of all Source languages, provided that the SICP package is loaded.