There is so much more that I have not shown.

Check out the official tutorial that contains more examples, including:

  • how to model insertion sort,
  • how to provide a safe API to pointers and bytestrings.

There are also quite a few features in Liquid Haskell that we have not discussed, such as e.g. abstract refinements.