News for hackers. Stuff that matters.
Re:Code is Engineering; Types are Science by somewhereoutth on Monday April 06, 2020 @11:02AM (#22794335)
Would I be correct to say that System F, and thus Haskell, has been effectively built on the untyped lambda calculus? If so there are many (very many!) statements in the LC that are illegal under System F. Certainly whole classes of pathological statements have been disqualified, but perhaps some baby has gone out with the bathwater?

To take a much simpler example, the Simply Typed Lambda Calculus precludes non-terminating programs, but is not generally useful.

Re:Code is Engineering; Types are Science by 6gvONxR4sf7o on Monday April 06, 2020 @11:25AM (#22794540)
No I don’t think it’s accurate to say they’re built on untyped lambda calculus, any more than simply typed lambda calculus is built on utyped lambda calculus. They’re very much related, and there’s a strong sense in which they are built on each other, but the kinds of programs available and what can be proved or guaranteed are different.
Re:Code is Engineering; Types are Science by somewhereoutth on Monday April 06, 2020 @11:40AM (#22794667)
but (for the simply typed LC anyway) the 'mechanism of action' is just the untyped LC under beta reduction surely? I mean, the type annotations don't actually do anything when the program is run/reduced?
Re:Code is Engineering; Types are Science by throwaway17_17 on Monday April 06, 2020 @12:01PM (#22794834)
You are essentially identifying the semantic divergence between Church and Curry style types. Church-style or Intrinsically typed Lambda Calculus does not give any meaning to ill-typed expressions and there for beta-reduction can not proceed for these invalid expressions. Where as Curry-style or Extrinsically typed lambda calculus gives meaning to expression that do not consider the type alleged to be possessed by that expression.
Re:Code is Engineering; Types are Science by somewhereoutth on Tuesday April 07, 2020 @07:10PM (#22808457)
The crucial difference between Church and Curry is that Curry allows each term to be ascribed a set of types - perhaps 0, 1 or many - whereas Church insists on each term having exactly one (often annotated). Both are systems for proving type correctness of terms.