unique-logic-tf-0.4.1.2: Solve simple simultaneous equations

Safe HaskellSafe
LanguageHaskell98

UniqueLogic.ST.TF.System

Contents

Synopsis

Preparation

data Variable w s a Source

globalVariable :: (C w, Value w a) => SimpleUpdater w s a -> ST s (Variable w s a) Source

Handle duplicates

class C w => C w where Source

Methods

update :: Value w a => Updater w s a Source

Instances

C IdentityT Source 
C Track Source 
Inconsistency e => C (ExceptionalT e) Source 
Monoid w => C (WriterT w) Source 

simpleUpdate :: (C w, Value w a) => SimpleUpdater w s a Source

updateIfNew :: C w => Updater w s a Source

updateAndCheck :: C w => (a -> a -> Wrap w (ST s) ()) -> Updater w s a Source

class C t => Fragile t where Source

Methods

break :: Monad m => Wrap t m a Source

Instances

Inconsistency e => Fragile (ExceptionalT e) Source 

class C w => Value w a where Source

Associated Types

data ValueConstraint w a :: * Source

Methods

valueConstraint :: STRef s (Updates w s) -> STRef s (Maybe a) -> ValueConstraint w a Source

Instances

Value IdentityT a Source 
ToTrackedNumber tn => Value Track tn Source 
(Inconsistency e, Eq a) => Value (ExceptionalT e) a Source 
Monoid w => Value (WriterT w) a Source 

Posing statements

data T w s a Source

Instances

Monad (T w s) Source 
Functor (T w s) Source 
Applicative (T w s) Source 

localVariable :: (C w, Value w a) => T w s (Variable w s a) Source

constant :: (C w, Value w a) => a -> T w s (Variable w s a) Source

assignment2 :: C w => (a -> b) -> Variable w s a -> Variable w s b -> T w s () Source

assignment3 :: C w => (a -> b -> c) -> Variable w s a -> Variable w s b -> Variable w s c -> T w s () Source

data Apply w s a Source

Instances

arg :: Variable w s a -> Apply w s a Source

This function allows to generalize assignment2 and assignment3 to more arguments. You could achieve the same with nested applications of assignment3 (,).

runApply :: C w => Apply w s a -> Variable w s a -> T w s () Source

runApplyMaybe :: C w => Apply w s (Maybe a) -> Variable w s a -> T w s () Source

Solution

solve :: C w => T w s a -> w (ST s) a Source

solveDepthFirst :: C w => T w s a -> w (ST s) a Source

solveBreadthFirst :: C w => T w s a -> w (ST s) a Source

query :: Variable w s a -> ST s (Maybe a) Source