{-# LANGUAGE NoImplicitPrelude, NoMonomorphismRestriction #-} module DDF.Double (module DDF.Double, module DDF.Bool) where import DDF.Bool import qualified Prelude as M class Bool r => Double r where double :: M.Double -> r h M.Double doubleZero :: r h M.Double doubleZero = double 0 doubleOne :: r h M.Double doubleOne = double 1 doublePlus :: r h (M.Double -> M.Double -> M.Double) doubleMinus :: r h (M.Double -> M.Double -> M.Double) doubleMult :: r h (M.Double -> M.Double -> M.Double) doubleDivide :: r h (M.Double -> M.Double -> M.Double) doubleExp :: r h (M.Double -> M.Double) doubleEq :: r h (M.Double -> M.Double -> M.Bool) doublePlus1 = app doublePlus doublePlus2 = app2 doublePlus doubleMinus2 = app2 doubleMinus doubleMult2 = app2 doubleMult doubleDivide2 = app2 doubleDivide doubleExp1 = app doubleExp doubleEq2 = app2 doubleEq