Spotted this string of binary in a game, so #IoLanguage to the rescue:

Io> list("01010100", "01001000", "01000101", "00100000", "01010010", "01000101", "01010010", "01010100", "01001001", "01000010", "01010101", "01010100", "01001001", "01001111", "01001110", "00100000", "01001001", "01010011", "00100000", "01000011", "01001111") map(fromBase(2) asCharacter) join
==> THE RERTIBUTION IS CO

https://hulvr.com/media/8D4Sgo9143YBwOEaVm8

Without the data, that's:

list(...) map(fromBase(2) asCharacter) join

which is how I like to think about these kinds of operations.

You don't need to specify the object within map and similar methods, but you can bind if needed, like map(x, x fromBase...)

It's a fluent OO language, feels like programming with superior shell pipes. And its powers of introspection are so good you can write DSLs without using a meta-language.

@rook It's rarely done (there's not a lot of a performance benefit), but if you're especially clever with how you manipulate the message hierarchy, you can replace code on-the-fly -- in essence simulating macros. Functions "expand" to their implementations upon first run, then stay that way in memory afterwards.