So just thinking out loud.
I was thinking about that too - do we even need the Z7?
The advantage of having an explicit Z7 is that we know immediately that this is an object that needs to be treated specially. On the other side, that seems to be only one removed - we just need to look up the type of Z142, and if it is Function, well, there we are!
The other advantage of using an explicit Z7 is that we could use a Z142 without a Z7 embedding it like a quote in lisp. The Z7 unquotes and evaluates it.
So not sure if Z7 is needed. I would love to hear more thoughts. I have the sense that it would be really useful to keep the Z7, but I have trouble to say exactly why.
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")
Note that the K1 would need to be a local key as there is no global key that could be used, as the function is being created on the fly.
But please correct me if I misunderstood your comment on currying.
Thanks so much for your thoughts!