module DDF.UnHOAS where
import DDF.Lang
newtype UnHOAS repr h x = UnHOAS {runUnHOAS :: repr h x}
instance DBI repr => DBI (UnHOAS repr) where
z = UnHOAS z
s (UnHOAS x) = UnHOAS $ s x
abs (UnHOAS x) = UnHOAS $ abs x
app (UnHOAS f) (UnHOAS x) = UnHOAS $ app f x
instance Bool r => Bool (UnHOAS r) where
bool = UnHOAS . bool
ite = UnHOAS ite
instance Lang repr => Lang (UnHOAS repr) where
mkProd = UnHOAS mkProd
zro = UnHOAS zro
fst = UnHOAS fst
double = UnHOAS . double
doublePlus = UnHOAS doublePlus
doubleMinus = UnHOAS doubleMinus
doubleMult = UnHOAS doubleMult
doubleDivide = UnHOAS doubleDivide
doubleExp = UnHOAS doubleExp
fix = UnHOAS fix
left = UnHOAS left
right = UnHOAS right
sumMatch = UnHOAS sumMatch
unit = UnHOAS unit
exfalso = UnHOAS exfalso
nothing = UnHOAS nothing
just = UnHOAS just
ioRet = UnHOAS ioRet
ioBind = UnHOAS ioBind
nil = UnHOAS nil
cons = UnHOAS cons
listMatch = UnHOAS listMatch
optionMatch = UnHOAS optionMatch
ioMap = UnHOAS ioMap
writer = UnHOAS writer
runWriter = UnHOAS runWriter
float = UnHOAS . float
floatPlus = UnHOAS floatPlus
floatMinus = UnHOAS floatMinus
floatMult = UnHOAS floatMult
floatDivide = UnHOAS floatDivide
floatExp = UnHOAS floatExp
float2Double = UnHOAS float2Double
double2Float = UnHOAS double2Float
state = UnHOAS state
runState = UnHOAS runState