spry is an actively used programming language created in 2015. Spry borrows homoiconicity from Rebol and Lisp, free form syntax from Forth and Rebol, the word of different types from Rebol, good data structure literal support from JavaScript and the general coding experience and style from Smalltalk. It also has a few ideas of its own, like an interesting argument passing mechanism and a relatively novel take on OO.

5Years Old 384Users ?Jobs

Example code from the web:

# Let's add a method to:do: that works as in Smalltalk.
# Methods take the first argument, the "receiver", from the left
# and binds it to "self".
to:do: = method [:to :block
  n = self
  [n <= to] whileTrue: [
    do block n
    ..n = (n + 1)]]

# Then we can loop in Smalltalk style echoing 1 to 5!
1 to: 5 do: [echo :x]

# We can similarly implement select: from Smalltalk
select: = method [:pred
  result = ([] clone)
  self reset
  [self end?] whileFalse: [
    n = (self next)
    do pred n then: [result add: n]]

# Then use it to produce [3 4]
echo ([1 2 3 4] select: [:x > 2])

Last updated June 22nd, 2020

Edit spry on GitHub