|
|
|
|
|
by Zillion
4243 days ago
|
|
The choice of 0 for true and 1 for false is _wrong:_ On the Curry-Howard correspondence (and above) a type corresponds to a false sentence when it is not inhabited, like 0, and to a true sentence when it is. The Curry-Howard correspondence is fundamental, and so that is the. correct way to go, absent evidence in the other direction. I don't know whether Nock is a better foundation for a programming language than the Lambda Calculus, but it is at least as elegant—I'm glad someone is seeing where it leads I'm a fan of internet freedom, which often requires anonymity, and so I have my doubts about an OS that preserves exerything as a feature of the design. |
|
If you look at where lambda comes from, it comes out of this same project of metamathematics that originates in the 19th century with people like Frege - how do you describe math in terms of math? Then it was discovered that this project could be repurposed as a definition of computing. Reusing old standards is a thing that happens, but sometimes you'd come up with a different approach if you were starting from scratch. As I've pointed out elsewhere on this thread, the shared theoretical foundation of lambda does not lead to a family of languages that are compatible in any meaningful sense.
It was probably a bad decision to make 0 true and 1 false, but not for mathematical reasons. There is always a lot of C coupled to Urbit, and what ends up happening is that the easiest way to handle this problem is to write C in a sort of dialect in which 0 is true and 1 is false. This is slightly cumbersome, and the perceived elegance of 0 == true isn't at all worth it. However, it's also nowhere near awful enough to revisit the question, which would be quite tricky considering the self-compiling nature of the system!