home.social

#liquidhaskell — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #liquidhaskell, aggregated by home.social.

fetched live
  1. Feeling great about my recent post @tweag's software engineering blog!

    It tells the story of how (and why) I implemented qualified identifier support for refinement type aliases in #LiquidHaskell during my participation at #GSoC 2025.

    Check it out!

    tweag.io/blog/2025-09-11-quali

    @haskell_foundation
    #Haskell

  2. Feeling great about my recent post @tweag's software engineering blog!

    It tells the story of how (and why) I implemented qualified identifier support for refinement type aliases in #LiquidHaskell during my participation at #GSoC 2025.

    Check it out!

    tweag.io/blog/2025-09-11-quali

    @haskell_foundation
    #Haskell

  3. Just wrapped up the first half of my GSoC project on improving name resolution in Liquid Haskell (LH)! It’s been lots of fun—long hours of code reading, analysis, testing, and debugging. Not that those were the most exciting parts, but pushing through and gaining a deeper understanding of the system definitely was.

    LH hooks into the compiler pipeline to turn special comment annotations (refining types using logical predicates) into constraints for an external SMT solver to check. My project focuses on a very narrow feature, but along the way I’ve run into all sorts of cool programming concepts—like generic traversals of data structures and strongly connected components in directed graphs—while working through the parsing, name resolution, and definition unfolding implementations.

    I’m deeply grateful to Facundo Domínguez for his generous and thoughtful mentoring, which has made this a rich learning experience and given me valuable engineering insights. I expect new challenges ahead, but I’ll do my best to sneak in some optimizations and give legacy code a proper cleanup.

    summerofcode.withgoogle.com/pr

    #Haskell #GHC #LiquidHaskell #GSoC

  4. Just wrapped up the first half of my GSoC project on improving name resolution in Liquid Haskell (LH)! It’s been lots of fun—long hours of code reading, analysis, testing, and debugging. Not that those were the most exciting parts, but pushing through and gaining a deeper understanding of the system definitely was.

    LH hooks into the compiler pipeline to turn special comment annotations (refining types using logical predicates) into constraints for an external SMT solver to check. My project focuses on a very narrow feature, but along the way I’ve run into all sorts of cool programming concepts—like generic traversals of data structures and strongly connected components in directed graphs—while working through the parsing, name resolution, and definition unfolding implementations.

    I’m deeply grateful to Facundo Domínguez for his generous and thoughtful mentoring, which has made this a rich learning experience and given me valuable engineering insights. I expect new challenges ahead, but I’ll do my best to sneak in some optimizations and give legacy code a proper cleanup.

    summerofcode.withgoogle.com/pr

    #Haskell #GHC #LiquidHaskell #GSoC

  5. As part of our (@[email protected] and yt) research on the usability of interactive theorem provers, we are conducting a study on the usage and state of tools and languages for type-driven development. We are interested in tools that encourage and facilitate type-driven development, especially in cases when they can help us reason about complex problems.

    We are hoping to use your responses to identify the characteristic language features and tool interactions that enable type-driven development, with the eventual goals of enhancing them and bringing their benefits to a wider range of programmers.

    Please fill in our anonymous, 10-minute survey here: https://tudelft.fra1.qualtrics.com/jfe/form/SV_bIsMxYTKUJkhVuS

    You are welcome to participate if you have experience with any type-driven development tool, including dependently-typed languages (e.g., Coq, Lean, Agda), refinement types (e.g., Liquid Haskell), or even other static type systems (e.g., in Rust or Haskell).

    P.S. In case you remember signing up for an interview with us in a previous survey and are now wondering whether that study will still go on, the answer is: yes! We’ve had to revise our schedule, but we are still excited to talk to you and will start inviting people for an interview soon.

    #Agda #Coq #Rocq #Lean #LiquidHaskell #Rust #Haskell #TypeDrivenDevelopment #TyDe #DependentTypes #LiquidTypes #RefinementTypes #ProofAssistants #Survey

  6. As part of our (@[email protected] and yt) research on the usability of interactive theorem provers, we are conducting a study on the usage and state of tools and languages for type-driven development. We are interested in tools that encourage and facilitate type-driven development, especially in cases when they can help us reason about complex problems.

    We are hoping to use your responses to identify the characteristic language features and tool interactions that enable type-driven development, with the eventual goals of enhancing them and bringing their benefits to a wider range of programmers.

    Please fill in our anonymous, 10-minute survey here: https://tudelft.fra1.qualtrics.com/jfe/form/SV_bIsMxYTKUJkhVuS

    You are welcome to participate if you have experience with any type-driven development tool, including dependently-typed languages (e.g., Coq, Lean, Agda), refinement types (e.g., Liquid Haskell), or even other static type systems (e.g., in Rust or Haskell).

    P.S. In case you remember signing up for an interview with us in a previous survey and are now wondering whether that study will still go on, the answer is: yes! We’ve had to revise our schedule, but we are still excited to talk to you and will start inviting people for an interview soon.

    #Agda #Coq #Rocq #Lean #LiquidHaskell #Rust #Haskell #TypeDrivenDevelopment #TyDe #DependentTypes #LiquidTypes #RefinementTypes #ProofAssistants #Survey

  7. ... (restriction types, SMT solver) and the Isabelle proof assistant.

    For example, look at the kind of assurances we can make about data at the type-level. This means the SMT solver can assure that certain logical constraints on types are provably true.

    My code to verify a file ranking algo I made:

    github.com/someodd/bore/blob/m

  8. ... #LiquidHaskell (restriction types, SMT solver) and the Isabelle proof assistant.

    For example, look at the kind of assurances we can make about data at the type-level. This means the SMT solver can assure that certain logical constraints on types are provably true.

    My code to verify a file ranking algo I made:

    github.com/someodd/bore/blob/m

  9. Liquid amortization: Proving amortized complexity with LiquidHaskell (Functional pearl). ~ Jan van Brügge. arxiv.org/abs/2407.13671 #FunctionalProgramming #Haskell #LiquidHaskell

  10. Liquid amortization: Proving amortized complexity with LiquidHaskell (Functional pearl). ~ Jan van Brügge. arxiv.org/abs/2407.13671 #FunctionalProgramming #Haskell #LiquidHaskell

  11. Modular implementation and formalization of dynamic policies (Work in progress). ~ Antonio Zegarelli, Niki Vazou, Marco Guarnieri. fcs-workshop.github.io/fcs2024 #FunctionalProgramming #LiquidHaskell

  12. Modular implementation and formalization of dynamic policies (Work in progress). ~ Antonio Zegarelli, Niki Vazou, Marco Guarnieri. fcs-workshop.github.io/fcs2024 #FunctionalProgramming #LiquidHaskell

  13. I'm going to use for now and ignore at the moment, sadly.

  14. Spending more time on than coding in again. Feel motivated to get working.

  15. It's sad that is broken (liquidpoint marked as broken?) in right now (right?).

    Anyone know what's up with that?

  16. I am yet again starting a project in and having fun getting lost in something fun, but basically causing me to be side-tracked.

    I'm working on a simple pixel art editor, but I am excited by to, I think, use refinement types and prove certain properties about my code.

  17. I am yet again starting a project in #haskell and having fun getting lost in something fun, but basically causing me to be side-tracked.

    I'm working on a simple pixel art editor, but I am excited by #LiquidHaskell to, I think, use refinement types and prove certain properties about my code.

  18. Learning about !

    Have any of you used LiquidHaskell?

  19. Towards a translation from Liquid Haskell to Coq. ~ Lykourgos Mastorou, Niki Vazou, Michael Greenberg. types2023.webs.upv.es/TYPES202 #ITP #LiquidHaskell #Coq

  20. Towards a translation from Liquid Haskell to Coq. ~ Lykourgos Mastorou, Niki Vazou, Michael Greenberg. types2023.webs.upv.es/TYPES202 #ITP #LiquidHaskell #Coq

  21. I was curious how #LiquidHaskell handles integer overflow, and found this blog entry from 2017: ucsd-progsys.github.io/liquidh

    Short answer: by default you get the lie that Haskell Ints are unbounded, but you can introduce a bounded numeric typeclass. It would be interesting to try to re-create some smart-contract bugs this way and see if they are caught.

  22. CW: Advent of Code

    Tonight's #AdventOfCode problem was very doable (even without bitmasks, which I considered), and #LiquidHaskell productively caught off-by-one errors! I managed to get ranks 2474/2332, my best showing yet with Haskell.

    That gave me time to catch up on day 19, which I solved by throwing the problem to GLPK (the Gnu Linear Programming Kit) which has an integer-linear solver.

  23. CW: Advent of Code

    Tonight's #AdventOfCode problem was very doable (even without bitmasks, which I considered), and #LiquidHaskell productively caught off-by-one errors! I managed to get ranks 2474/2332, my best showing yet with Haskell.

    That gave me time to catch up on day 19, which I solved by throwing the problem to GLPK (the Gnu Linear Programming Kit) which has an integer-linear solver.

  24. CW: Advent of Code

    As we get further into #AdventOfCode, my ability to write interesting #LiquidHaskell specifications decreases. But tonight would have been very interesting to prove correctness! This sort of program-transformation should be right up LH's alley.

    github.com/mgritter/aoc-lh/blo

    I think it should be possible to do some proofs with reflection.

    I used the ST monad, unnecessarily as it turned out-- I thought the expression might be a DAG so I cached intermediate values.

  25. @3j0hn Oh my goodness I actually beat you on part 2 today! I got rank 3090, but I was frustrated that there seemed to be very few opportunities to write good #LiquidHaskell specifications, in part because Set size is not part of the LH specification as things stand today. (I declined to rewrite my depth-first search in a way that would permit a termination proof without it.)

    github.com/mgritter/aoc-lh/blo

  26. @3j0hn Oh my goodness I actually beat you on part 2 today! I got rank 3090, but I was frustrated that there seemed to be very few opportunities to write good #LiquidHaskell specifications, in part because Set size is not part of the LH specification as things stand today. (I declined to rewrite my depth-first search in a way that would permit a termination proof without it.)

    github.com/mgritter/aoc-lh/blo

  27. CW: Advent Of Code

    Yesterday's #AdventOfCode went pretty well, thanks to help from @[email protected]! Starting up the livestream for day 10 in #LiquidHaskell a few minutes early to talk about proofs.

    Follow along: twitch.tv/markgritter

    Yesterday's code: github.com/mgritter/aoc-lh/blo

  28. CW: Advent of Code

    #AdventOfCode in #LiquidHaskell day 2 is finally finished, but it includes a lot of specifications!

    github.com/mgritter/aoc-lh/blo

    Today's problems: --max-case-append was needed, strange results without it. Also I kept trying to use things as measures that didn't qualify.

    The trend line so far is 40 minutes for day 1 and 120 minutes for day 2, which doesn't bode well for tomorrow.