Regarding the Currying: that should not be a problem either way, though, if I understand right. So assume that we have a function curry Z78 and the concatenate function Z142.
Z1K1: Z1K1: Z7 Z7K1: Z1K1: Z78 Z78K1: Z142 Z78K2: "Wiki" K1: "data"
So here we use curry(concatenate, "Wiki"), which results in a function that takes a single string and prepends "Wiki" to it, so that would be read as curry(concatenate, "Wiki")("data")
Is there need for an explicit currying function? Can currying fall out naturally out of the implementation? i.e. Z142("Wiki") might itself return a Z-object which is a Z8?
Subbu.