Sebastian Graf's Avatar

Sebastian Graf

@fixpt.de

Likes Lean, Haskell, static analysis, PL design and theory, general CS, and his trumpet

127
Followers
189
Following
33
Posts
22.12.2023
Joined
Posts Following

Latest posts by Sebastian Graf @fixpt.de

Preview
β€ŽGemini - direct access to Google AI Created with Gemini

Wow, Gemini-level AI would have been *so useful to learn* when I was starting my PhD. It gives a clearer explanation to the ties between Logical Relations, Parametricity and Abstract Interpretation than I have ever been able to peer from a single source anywhere: gemini.google.com/share/6ef829...

04.02.2026 14:29 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Would at least need syntax like `case x of (PSyn 42 |) -> ...`, where `|` delimits the "parameters" (visible version of "required constraints") from the "match variables" (visible versions of "provided constraints")

11.10.2025 07:59 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

At least in Haskell, there's a semantic difference, though. You can't "parameterize" a pattern synonym. So `case x of ((==) 42 -> True) -> ...` where 42 is supposed to be a parameter of the pattern synonym is not really expressible in Haskell.

11.10.2025 07:57 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

How about pair syntax? Or a more general record destructing syntax (that's how it works in Lean)

08.10.2025 16:05 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I would make that depends on whether macro expansion (_) happens before ANFisation in your language. Is there some precedent? It would be important to decide coherently.

In Lean, it would be A), I think.

25.08.2025 16:34 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

As to <<loop>>: this is just the runtime detecting that a thunk that is already under evaluation is evaluated again. The first eval overwrites the thunk tag with a special tag for a "black hole". Evaluating a black hole crashes with the panic.

20.08.2025 13:06 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
RecursiveLet by ocharles Β· Pull Request #401 Β· ghc-proposals/ghc-proposals This is a proposal to allow Haskell developers to distinguish bindings that are self-referentially recursive from non-recursive bindings through the new RecursiveLet/NoRecursiveLet language extensi...

A classic... I keep losing hours to this as well. Solution is to implement a linter as described here: github.com/ghc-proposal...

20.08.2025 13:04 πŸ‘ 2 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Effekt Language: Language Evolution A language with lexical effect handlers and lightweight effect polymorphism

Apparently they do support first class functions since 2022: effekt-lang.org/evolution

15.08.2025 22:17 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Effekt Language: Home A language with lexical effect handlers and lightweight effect polymorphism

You might enjoy effekt-lang.org#intro-polymo.... I think their notion of implicit effect polymorphism is pretty usable

15.08.2025 14:18 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Paulette Koronkevich, William J. Bowman
One Weird Trick to Untie Landin's Knot
https://arxiv.org/abs/2507.21317

30.07.2025 04:27 πŸ‘ 3 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
Preview
GHC LTS Releases | The Haskell Programming Language's blog

GHC will start maintaining an LTS release – blog.haskell.org/ghc-lts-rele... by @andreaspk.bsky.social

#Haskell

15.07.2025 16:56 πŸ‘ 17 πŸ” 8 πŸ’¬ 0 πŸ“Œ 0

Haskell is a great language if you follow all the same software engineering practices as in any other language. If you believe that Haskell is fundamental different from other languages, you ignore all the past decades' lessons learned about design and you write unmaintainable shit.

11.07.2025 22:31 πŸ‘ 19 πŸ” 4 πŸ’¬ 1 πŸ“Œ 1

Have you tried Lean's InfoView? :)

13.07.2025 10:07 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

Incredibly grateful to @sigplan.bsky.social and @sigplan-pldi.bsky.social for awarding #LeanLang the Programming Languages Software Award 2025 at #PLDI2025!

#LeanProver #FormalMethods #ProgrammingLanguages #Mathematics #SoftwareVerification

20.06.2025 04:04 πŸ‘ 24 πŸ” 9 πŸ’¬ 1 πŸ“Œ 0

(Even after stack alloc it will be far slower to call an unknown function in tailRec than to jump to it's address directly, so I'm not sure whether this idea is practical)

11.07.2025 11:51 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

If it really is primitive (so can't inline it), then the compiler needs special support for the closure passed to tailRec. It will never escape and hence its fvs can be allocated on the stack.

But how do you mutually recursive tail calls with tailRec?

11.07.2025 11:49 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

I had assumed that the goal here is to implement tail call opt for this one special case. If you inline it, how can you still detect the special case? Or do you mean that your compiler can still spot tail recursion after inlining tailRec? In that case, what is so primitive about tailRec?

11.07.2025 11:47 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

But it's not really efficient unless the compiler inlines it for you

09.07.2025 17:41 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
HOMEWORK MACHINE

The Homework Machine, oh the Homework Machine
Most perfect contraption that's ever been seen. 
Just put in your homework, then drop in a dime,
Snap on the switch, and in ten seconds' time,
Your homework comes out, quick and clean as can be.
Here it is β€” "nine plus four?" and the answer is "three."
Three?
Oh me ...
I guess it's not as perfect
As I thought it would be.

HOMEWORK MACHINE The Homework Machine, oh the Homework Machine Most perfect contraption that's ever been seen. Just put in your homework, then drop in a dime, Snap on the switch, and in ten seconds' time, Your homework comes out, quick and clean as can be. Here it is β€” "nine plus four?" and the answer is "three." Three? Oh me ... I guess it's not as perfect As I thought it would be.

shel silverstein on the LLM, 1981

10.06.2025 19:34 πŸ‘ 1855 πŸ” 690 πŸ’¬ 10 πŸ“Œ 15

Your contributions to the community are amazing. Badly socialized people will always be assholes 🀷🏻 Though I suspect your point is rather that we should call out this behaviour for the health of our community. Fair point...

02.06.2025 22:27 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

This is a really cool new #LeanLang project with some substantial pedagogical value! @teorth.bsky.social has put out a call looking for volunteers to "playtest" the WIP!

terrytao.wordpress.com/2025/05/31/a...

31.05.2025 22:03 πŸ‘ 14 πŸ” 4 πŸ’¬ 1 πŸ“Œ 0

I would very much like to be liked or loathed like this

29.05.2025 22:31 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

πŸ“£ TWO EXCITING NEW LEAN LECTURES!

Just released: Two Strachey Lectures from @compscioxford.bsky.social featuring Leo de Moura (Chief Architect, Lean FRO) and Kevin Buzzard (Professor, Imperial College). A thread on these must-see talks πŸ§΅πŸ‘‡

#LeanLang #LeanProver

16.05.2025 19:10 πŸ‘ 9 πŸ” 2 πŸ’¬ 1 πŸ“Œ 0
Post image

A record increase in atmospheric CO2 according to data released by NOAA gml.noaa.gov/ccgg/trends/..., much higher than projected in the Global Carbon Budget essd.copernicus.org/articles/17/....

This occurred in the presence of an El NiΓ±o (red bars, data also from NOAA!).

What does this mean?

1/

15.04.2025 07:08 πŸ‘ 449 πŸ” 213 πŸ’¬ 15 πŸ“Œ 21
Post image

This is quite fun.

β€œAmerica would be better off if more people worked in manufacturing.”

β€’ 80% of Americans agree
β€’ 20% disagree

β€œI would be better off if I worked in a factory.”

β€’ 25% of Americans agree
β€’ 73% disagree
β€’ 2% currently work in a factory

t.co/ycnHVZ1gT1

13.04.2025 17:40 πŸ‘ 1175 πŸ” 448 πŸ’¬ 62 πŸ“Œ 57
Post image

Check out these great UX improvements in Lean 4.18!

βœ… New gutter decorations for errors/warnings
πŸ”§ "Unsolved goals" markers to guide your proof
πŸ™ "Goals accomplished!" celebrations

▢️ Try these now in the Lean4 VSCode extension: marketplace.visualstudio.com/items?itemNa...

#LeanLang #LeanProver

08.04.2025 21:32 πŸ‘ 4 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

What notion of "type-level fixpoint" do you have in mind? Strong normalization of System F seems difficult to reconcile with the ability to encode general fixpoints, type-level or not.

30.03.2025 20:59 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Post image

πŸ‘©β€πŸ’»Lean users: Lean 4.17 adds inlay hints for automatically-inserted implicit parameters: With autoImplicit enabled you’ll see in-editor visual feedback for parameters that Lean has automatically inferred, improving readability and making code less error-prone!

#LeanLang #LeanProver #DeveloperTools

13.03.2025 18:45 πŸ‘ 16 πŸ” 5 πŸ’¬ 3 πŸ“Œ 0
Recursive subtyping for all | Journal of Functional Programming | Cambridge Core Recursive subtyping for all - Volume 35

Litao Zhou, Yaoda Zhou, Qianyong Wan and Bruno C.D.S. Oliveira present a new core calculus that extends F_≀ (a well known polymorphic calculus with bounded quantification) with isorecursive types, tackling the tricky combination of subtyping, recursive types, and bounded quantification.

01.03.2025 10:33 πŸ‘ 2 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Post image

Mathlib is a community-built library of mathematics in Lean with nearly 1.8MM lines of code and 190K mathematical theorems! Over 500 contributors have helped drive Mathlib forward at an incredible pace! Learn more at: leanprover-community.github.io/index.html

#leanlang #leanprover #community

27.02.2025 21:14 πŸ‘ 8 πŸ” 5 πŸ’¬ 0 πŸ“Œ 0