{-# LANGUAGE
  NoImplicitPrelude,
  NoMonomorphismRestriction,
  FlexibleContexts,
  UndecidableSuperClasses,
  FlexibleInstances,
  MultiParamTypeClasses
#-}

module DDF.Int (module DDF.Int, module DDF.Ordering) where

import DDF.Ordering
import qualified Prelude as M

class Ordering r => Int r where
  int :: M.Int -> r h M.Int
  pred :: r h (M.Int -> M.Int)
  intCmp :: r h (M.Int -> M.Int -> M.Ordering)

instance Int r => ObjOrd r M.Int where
  cmp = intCmp

pred1 = app pred