@jmoenig jmoenig released this May 1, 2015 · 1498 commits to master since this release

Assets 2

Snap is Scheme disguised as Scratch, a web browser based visual programming language aiming to support a technically rigorous introductory CS curriculum at the college and high school level.

v4.0 completes Snap's core language features supporting, among others

  • user-defined procedures ("Build Your Own Blocks")
  • lambda, incl. full closures ("Rings")
  • first-class continuations (call/cc)
  • tail-call optimization

Snap borrows from Scratch its graphical LEGO blocks grammar and its 2D cartoon themed microworld around a stage with sprite actors, costumes, events, and parallelism, combining it with Scheme’s dynamically typed and lexically scoped variables, first-class lists, lambda (closures), first-class continuations and proper tail recursion, encouraging programmers to create their own control structures (loops, catch/throw, higher-order functions such as map/filter/reduce) tail recursively without having to worry about stack overflows. Snap supports nested sprites and lets programmers turn arbitrary JavaScript code into graphical blocks. Its “codification” mechanism can transcompile graphical scripts into arbitrary textual code, offering a two-way transition between blocks and text.