Forgive my pseudocode (based on Neil's example):
function A: search ":" = [0], scope (before [0]), count [a-z] = [1], format [1] [TWO-DIGIT ZERO-PADDED HEXADECIMAL NUMBER] /* :-P */, format [1] [lowercase], move [1] [0].
Breakdown: function A: search ":" = [0], // search for ":" and set it to the 0 parameter scope (before [0]), // set the scope for the next operation as before 0 (":") count [a-z] = [1], // count anything a-z within the scope and set it to another parameter 1 format [1] [TWO-DIGIT ZERO-PADDED HEXADECIMAL NUMBER], format [1] [lowercase], // shouldn't affect numbers, and hex = A-F anyway, so "A-F distinction = unnecessary move [1] [0]. // put the results of 1 in the 0 position, period (.) ambiguously = stop symbol
I'm not sure this gets all of it. IANAP
Me: "Compromising between efficiently terse syntax and efficiently expressive natural language gets... " .. a functional language? Haskell?
-Steven