{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE UnicodeSyntax #-}

module Abt.Class.Monad where

import Control.Applicative

class (Ord v, Eq v, Show v, Monad m, Applicative m)  MonadVar v m | m  v where
  -- | Generates a fresh variable
  fresh  m v

  -- | Generates a fresh variable tagged with a name
  named  String  m v