Portability | semi-portable (Rank2Types, MPTCs,...) |
---|---|

Stability | experimental |

Maintainer | wren@community.haskell.org |

This module defines an implementation of unification variables
using the `ST`

monad.

- data STVar s a
- data STBinding s a
- runSTBinding :: (forall s. STBinding s a) -> a

# Documentation

Unification variables implemented by `STRef`

s. In addition to
the `STRef`

for the term itself, we also track the variable's
ID (to support visited-sets).

A monad for handling `STVar`

bindings.

Monad (STBinding s) | |

Functor (STBinding s) | |

Applicative (STBinding s) | |

Unifiable t => BindingMonad (STVar s) t (STBinding s) |

runSTBinding :: (forall s. STBinding s a) -> aSource