6 ms·
Show HN: As a dwarf on the shoulders of giants
- martyalain 8y agoHi, your opinion will help me to improve this work. Take a few minutes to browse this paper. Please, don't be evil. Thanks in advance. Alain Marty
- speedplane 8y agoWhy do you have a fancy house as your main starting piece? Shouldn't you clearly explain what you're trying to do (in large font)?
- martyalain 8y agoThis house is the Barcelona Pavilion buit by Mies van der Rohe in the thirties. It's often compared to the Maxwell's equations of architecture. As are the rules defining the λ-calculus:[ e := v | λv.e | ee ] written upon the picture. I must admit it's a little "cryptic". What I'm trying to do is quickly explained in the Abstract below the picture. and in deep in the rest of the paper. Probably it's not clear enough. Sorry.
- luckylion 8y agoYou might want to put some content width limits on it so people don't end up with extreme line widths on UW screens. Rule of thumb is to aim for 60-80 characters per line for optimal readability - without zooming, I get about 480 characters per line in your layout.
- martyalain 8y agoThanks, I agree with you, even if it's always possible to reduce the width of the browser's window to adjust lines to the desired display. So I defined the limit to 700px which looks good for me.
- chewxy 8y agoIn general, I like it. I think the syntax is a bit messy though. λx.x is much cleaner than {lambda {x} x} Don't want to use λ? Consider \x.x For your special cases of multiple args, consider λx,y,z.(x z)(y x) // S combinator For nullary functions: λ().M Last, this is really more a lisp than a λ-calculus. Difference is subtle.
- martyalain 8y agoShorter it is, obviously, but when things become more convoluted, I don't think so, you have to memorize priorities, add parenthesis to change them and things like this. The great strength of the prefixed parenthesed Lisp-like notation is to be systematic. IMHO. I think that using lambda instead of λ or even \ helps eyes to read convoluted code, to find the most important element of the language. And when I replace well known names like "true, false, cons, car, cdr, nil, isnil?] by such cryptic characters "|, ø, □, [, ], ?" it's to reduce long lines to short sequences of signs getting a chance to be viewed as a whole picture easy to memorize. A matter of choice. Maybe it's inconsistent. You say "this is really more a lisp than a λ-calculus." Long time I thought that {lambda talk) was a lisp and today I think it is not. Lisps use to begin with several primitives, (cons, car, cdr, ...) and never go down to the reduced set [word, abstraction, application]. I found useful to start from this infrastructure, I think I can better understand concepts. And later will come several superstructures to reach the level of a usable programming language.
- chewxy 8y agoyeah, it took me a while to realize you were trying to go for something more lisp than λ-calculus.
- kazinator 8y agoIs it cleaner? What does this mean? λy.λx.xy Is it: {lambda {y} {lambda {x} {x y}}} or is it {lambda {y} {{lambda {x} x} y}} We need to know the relative precedence of the "<function> <arg>" phrase versus the "λ <arg> . <body>" phrase. (I honestly do not know, even though I had studied Lambda Calculus.) If mathematics, that sphere of pure precision of thought, robes itself in ambiguity, isn't that a bit ironic? Of course, "precedence" is a mathematical concept. We establish it, thereby asserting a kind of axiom that governs the syntax we are using, and then everything is precise, as it should be. The only problem is that these distracting concepts are from a different field; they don't speak to the semantics of Lambda Calculus. Why do I have to think about "precedence", when I want to think about Lambda Calculus? Mathematics should be not only precise, but it should separate concerns. We can condense the syntax without introducing ambiguity, e.g.: (λy.(λx.(xy)) (λy.((λx.x)y)