Tutorial for LiquidHaskell
Clone or download
Latest commit e918b69 Oct 4, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
filters Migrade Pandoc 2.X Nov 22, 2017
img ads Feb 11, 2015
liquidhaskell @ 91e1074 Update liquidhaskell-0.8.2.2 Jan 9, 2018
pdf Update book Feb 2, 2018
src Merge pull request #65 from waddlaw/update-ch09 Feb 21, 2018
templates add tracker Sep 19, 2017
.gitignore Update gitignore Nov 22, 2017
.gitmodules Add submodule (liquidhaskell) Nov 22, 2017
LICENSE stackification Apr 3, 2016
Main.hs stackification Apr 3, 2016
Makefile update makefile Oct 4, 2018
README.md update makefile Oct 4, 2018
feedback.md fixed typo Aug 10, 2015
package.yaml Use hpack Nov 22, 2017
stack.yaml update makefile Oct 4, 2018
sync.sh adding sync file Mar 5, 2015

README.md

LiquidHaskell Tutorial

TODO: UPDATE the website with the new code

$ stack install pandoc pandoc-citeproc template

NOTE The PDF/HTML are sometimes not up-to-date with the latest LiquidHaskell release. Please clone the github repository and run locally for best results.

Contents

Part I: Refinement Types

  1. Introduction
  2. Logic & SMT
  3. Refinement Types
  4. Polymorphism
  5. Refined Datatypes

Part II: Measures

  1. Boolean Measures
  2. Numeric Measures
  3. Elemental Measures

Part III : Case Studies

  1. Case Study: Okasaki's Lazy Queues
  2. Case Study: Associative Maps
  3. Case Study: Pointers & Bytes
  4. Case Study: AVL Trees

Get Started

$ git clone --recursive https://github.com/ucsd-progsys/liquidhaskell-tutorial.git
$ cd liquidhaskell-tutorial/

$ stack install
$ export PATH=~/.local/bin:$PATH

$ stack exec -- liquid ./src/01-intro.lhs
$ stack exec -- liquid ./src/02-logic.lhs
$ stack exec -- liquid ./src/03-basic.lhs
$ stack exec -- liquid ./src/04-poly.lhs
$ stack exec -- liquid ./src/05-datatypes.lhs
$ stack exec -- liquid ./src/06-measure-bool.lhs
$ stack exec -- liquid ./src/07-measure-int.lhs
$ stack exec -- liquid ./src/08-measure-sets.lhs
$ stack exec -- liquid ./src/09-case-study-lazy-queues.lhs
$ stack exec -- liquid ./src/10-case-study-associative-maps.lhs
$ stack exec -- liquid ./src/11-case-study-pointers.lhs
$ stack exec -- liquid ./src/12-case-study-AVL.lhs

Update

$ git pull origin master
$ git submodule update --recursive

Building

Deploy on Github

Dependencies

$ stack install pandoc
Prerequisites
$ cd ../ && git clone https://github.com/ucsd-progsys/liquid-client.git
Actual deployment
$ git checkout master
$ make html
$ cp -r _site ~/tmp/
$ git checkout gh-pages
$ cp -r ~/tmp/* .
$ git commit -a
$ git push origin gh-pages

Compiling .pdf

Dependencies

$ stack install pandoc pandoc-citeproc template

Prerequisites

  • Install LaTeX dependencies:
    • Texlive
    • texlive-latex-extra
    • texlive-fonts-extra

To install LaTeX dependencies on Ubuntu 17.10, following them:

$ sudo apt install -y texlive-latex-base texlive-latex-extra texlive-fonts-extra

Producing .pdf Book

$ make pdf
$ evince dist/pbook.pdf

Solutions to Exercises

Solutions are in separate private repo

TODO

A work list of TODO items can be found in the bug tracker

Feedback and Gotchas

Editing feedback and various gotchas can be found in feedback.md