[rb-general] Source code timestamps

Eric Myhre hash at exultant.us
Tue Dec 6 17:06:55 CET 2016


> They are [pure functions], if you model them that way.

> [...] set up fully isolated build environments such
> that, by construction, we get close to the model of a pure function.

I think we agree vigorously :) My only reason for commenting is for that 
"getting close" part: I think it's important to choose language so that 
we acknowledge the labor that it is.

Even as we seek to reduce the number of inputs that matter (e.g. 
standardizing "LC_ALL", which I have no opinion on, but was an example 
mentioned), it is useful to continue capturing the function `(a, b, c) 
-> d` even if we believe `(a, _, _) -> d` for all values in the blanks, 
simply so we can describe that system completely, and indeed verify it.

This is why I think it might be useful to call a pure, predictable `(a, 
b, c) -> d` "reproducible", and perhaps choose another name entirely 
("robust" or "portable" are the only things that come to mind; any other 
words resonate for anyone?) for the quest towards an (also pure, but 
smaller output domain relative to input domain) `(a, _, _) -> d`.

Then when things fail to be pure functions, we can call them bad names 
all the more easily :)  Because pursuing the function of "less" inputs 
may be quite hard, whereas pursing the basic purity should (!) be quite 
easy.



More information about the rb-general mailing list