Skip to content
0:00 / 0:00

#impredicativity#typeinference#ghc

A Quick Look at Impredicativity (Simon Peyton Jones)

Chalmers Functional Programming Seminar Series

1.6K subscribers • 2 videos on Hallway

YouTube
  • Recommended by 4 people: 4 in engineering communities.
  • Presented by Simon Peyton Jones, researcher at Microsoft Research

Advanced. Deep dive for people who know the field.

8.2K views6 years ago4 recommendations

Programming languagesComputer scienceLanguage design and type systemsFunctional programmingComputation and complexity

Simon Peyton Jones presents Quick Look, a practical and deployable design for impredicative type inference in GHC.

Type inference for parametric polymorphism is wildly successful, but has always suffered from an embarrassing flaw: polymorphic types are themselves not first class. I’ve been trying to fix this flaw for over 15 years , but every time I ended up with a system that was unusably complicated. But now I think we have it! Quick Look is a practical, implemented, and deployable design for impredicative type inference. It is simple to explain (although you can be the judge of that), and crucially it can be implemented with modest, localised changes that are fully compatible with GHC’s myriad other type system extensions. Bio: Simon Peyton Jones, FRS, graduated from Trinity College Cambridge in 1980. After two years in industry, he spent seven years as a lecturer at University College London, and nine years as a professor at Glasgow University, before moving to Microsoft Research (Cambridge) in 1998. Simon’s main research interest is in functional programming languages, their implementation, and their application. He was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages. He is particularly motivated by direct application of principled theory to practical language design and implementation — that is one reason he loves functional programming so much. Simon is chair of Computing at School, the grass-roots organisation that was at the epicentre of the 2014 reform of the English computing curriculum. audience: Anyone interested in statically-typed functional programming. Link: microsoft.com/en-us/research/publication/a-quick-look-at-imp…

Why it's here

4 people recommend this

Moments people linked to

u/serrasin r/haskell • Recommends

Video for "A Quick Look at Impredicativity" (Simon Peyton Jones)

u/mttdin r/ProgrammingLanguages • Recommends

A Quick Look at Impredicativity - Simon Peyton Jones - Chalmers Functional Programming Seminar Series

u/thatplguyin r/ProgrammingLanguages • Recommends

Chalmers Online Functional Programming Seminar Series -- PL, type theory, and formal methods every Monday morning Looks like the Chalmers functional programming group is putting together an online seminar series with a pretty exciting lineup: * 11/5 - Simon Peyton Jones - "A quick look at impredicativity" * 18/5 - Benjamin Pierce - "Backtracking Generators for Random Testing" * 25/5 - Nadia Polikarpova - "Liquid resource types for verification and synthesis" * 1/6 - Kathleen Fisher - "Using Formal Methods to Eliminate Exploitable Bugs" * 8/6 - Phil Wadler - "Featherweight Go" * 15/6 - Robby Findler - "Higher-order concolic testing" * 22/6 - Stephanie Weirich - "Strongly Typed System…

u/MaoStevemaoin r/functionalprogramming • Recommends

Video for "A Quick Look at Impredicativity" (Simon Peyton Jones)

u/Iceland_jackin r/haskell • Mentions

On “Does Haskell support Impredicative Polymorphism by now?”

There is a talk by Simon PJ from last month along with a paper It is implemented on a branch but I don't know that status, if it will be included in the upcoming GHC release * talk: link to this video * reddit: https://www.reddit.com/r/haskell/comments/gjni4q/video_for_a_quick_look_at_impredicativity_simon/ * pdf: https://www.microsoft.com/en-us/research/uploads/prod/2020/01/quick-look.pdf * branch: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3220

u/gallaisin r/haskell • Mentions

On “Does Haskell support Impredicative Polymorphism by now?”

SPJ's talk gives good introductory examples of the kind of problems you have with impredicativity. After that it goes into the technical details of the proposed solution & it went over my head but the examples were still enlightening.

u/ysangkokin r/haskell • Mentions

On “A quick look at impredicativity”

It has been implemented, just not merged. The branch 18126 is referenced in SPJs talk. Viewers were invited to try it out.
6View on Reddit

u/holysmearin r/haskell • Mentions

On “Reminder: The Chalmers Online Functional Programming Seminar Series starts today with a presentation by Simon Peyton Jones”

'link to this video

u/Labbekakin r/haskell • Mentions

On “Reminder: The Chalmers Online Functional Programming Seminar Series starts today with a presentation by Simon Peyton Jones”

Here you go: link to this video

u/Iceland_jackin r/haskell • Mentions

On “Monthly Hask Anything (May 2020)”

yeah basically, because like `Foo` is a monotype and GHC has no problem inferring `f @Foo` but it can't infer `f @(forall x. x -> x)` type Foo :: Type newtype Foo = F (forall x. x -> x) so during unification the type checker can produce basic equality constraints (better explained by Simon link to this video while a polymorphic type `forall x. x -> x` is a lot more complicated (spj: "falls apart"). Even in the upcoming implementation unification only works on monotypes, the polytypes are filled in before unification starts.
2View on Reddit

u/george_____tin r/haskell • Mentions

On “Impredicativity and existential quantifiers”

I've been wondering about this as well. I'd love to hear SPJ's thoughts on the matter now that proper impredicative types are on the way.

u/Noughtmarein r/haskell • Mentions

On “[Question] Reasoning about higher-ranked types' interactions with the standard prelude.”

Watch this: link to this video the relevant part is around the 8:30 mark. The $ operator currently has a hard coded rule for impredicativity. This is going to change soon.

u/Noughtmarein r/haskell • Mentions

On “A quick look at impredicativity”

There are two talks about it on Youtube. By SPJ: link to this video And by Alejandro Serrano Mena: link to this video