|
Module UnificationThis module is undocumented. This is a list of its definitions. createDefault :: Default a => <Proc> a The default value of the type. createUMap :: <Proc> UMap a b Creates a new empty map. extract :: Default a => Unifiable a -> <Proc> a Like extractWithDefault :: <Proc> a -> Unifiable a -> <Proc> a Extracts the value of the given unifiable value, evaluating deferred computations. Unification variables that are still unbound are bound to the value produced by the given default expression. getUMap :: Default a => UMap b a -> b -> <Proc> a Like getUMapWithDefault :: <Proc> a -> UMap b a -> b -> <Proc> a
putUMap :: UMap a b -> a -> Unifiable b -> <Proc> ()
putUMapC :: UMap a b -> a -> b -> <Proc> () Like uCons :: UTag a b -> b -> Unifiable a
uId :: a -> Unifiable a An already known value as a unifiable value. uPending :: <Proc> a -> Unifiable a Creates a unifiable value whose computation is deferred until the value is needed. Unifications requested before that are checked against the value once it is computed. Fails if the computation depends on the value itself. uTag :: Integer -> (a -> <Proc> b) -> (b -> a) -> UTag b a
uVar :: <Proc> Unifiable a Creates a fresh unification variable, i.e. a completely unknown value. unify :: Unifiable a -> Unifiable a -> <Proc> () Makes the two unifiable values equal, binding unification variables and recursively unifying the components of values built with the same constructor. Fails if the values are built with different constructors. |