Re:Lisp is not based on the Lambda Calculus
by Mathnerd314 on Wednesday August 14, 2019 @04:00PM
(#20699371)
It's valid Haskell 98 with a type constructor: http://r6.ca/blog/20060919T084800Z.html. But in GHC I think the first code snippet without NOINLINE still crashes, it's a perma-bug: https://downloads.haskell.org/~ghc/latest/docs/html/users_gu...
Some type systems do support equi-recursive types without the type constructor, e.g. Whiley (http://whiley.org/2013/04/21/iso-recursive-versus-equi-recur...). Maybe there you could implement Y without a type signature and have the recursive type inferred.
The main problem is speed. Using the Y combinator is going to mess up whatever code flow analysis the compiler has, unless it's using some cutting edge optimization research that I haven't been able to find.
Re:Lisp is not based on the Lambda Calculus
by carlehewitt on Wednesday August 14, 2019 @07:09PM
(#20700948)
There is a strongly-typed definition of Y here:
Re:Lisp is not based on the Lambda Calculus
by ProfHewitt on Thursday August 15, 2019 @11:24PM
(#20711919)
Some enterprising hacker should research who should be credited for the strongly-typed recursive def of Y.
I think the 'typed' bit is key. You can't implement Y in plain old Haskell because it would need to recurse infinitely during type-checking.