This repository has the materials for a 25 minute talk on Refinement Types, with LiquidHaskell.
For longer versions, you may be interested in:
- Try Online
- [VM Image][]
- Build Locally
This is also very easy, if you can manage the 2Gb download.
Step 1 Download this VM image
Step 2 Choose your editor. For emacs do:
tar -zxvf liquid-emacs.tgz
and for Spacemacs (a great Vim-Emacs hybrid) do:
tar -zxvf liquid-spacemacs.tgz
Step 3 Grab the source files from Github.
To build rust-style html (in dist/_site)
$ stack exec -- make html
To build reveal.js slides (in dist/_slides)
$ stack exec -- make slides
You can modify the following parameters:
- Server URL: change
liquidserver
inassets/templates/preamble.lhs
- MathJax URL: change the relevant link in
assets/templates/pagemeta.template
- Talk: change the
TALK
field in theMakefile
which builds the src-$(TALK) directory.
- 01-intro [3]
- 02-refinements [6]
- 03-examples [9]
- 04-abstracting [4]
- 05-concl [3]
- Hack in "random access" else really silly
- Choose subset from below
- Add snippets of termination, reflection, synthesis to 01-index
-
01-index
-
02-refinements
-
03-datatypes
-
04-case-study-insertsort
-
05-case-study-eval
-
06-case-study-bytestring
-
07-abstract-refinements
-
08-bounded-refinements
-
09-termination
-
10-abstract-refinements [see 07]
-
11-bounded-refinements [see 08]
-
12-refinement-reflection
-
13-structural-induction
-
14-map-reduce
-
15-security
-
Tagged.lhs
WBL Heaps
Insert Sort