1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- module RTP where
- import RTS
- import qualified RTN
- import qualified Prelude
- -- import qualified RTS
- undefined = Prelude.undefined
- data Bool = False | True
- type Float = Prelude.Double
- -- newtype Float = FloatT { unboxFloat :: Prelude.Float}
- newtype Char = CharT { unboxChar :: Prelude.Char }
- _Int = ()
- _Float = ()
- _String = ()
- _Char = ()
- _primShowBool :: Bool -> Prelude.String
- _primShowBool False = "False"
- _primShowBool True = "True"
- _primShowInt :: Prelude.Int -> Prelude.String
- _primShowInt = Prelude.show
- _primIntZero :: Prelude.Int
- _primIntZero = (0::Prelude.Int)
- _primIntOne :: Prelude.Int
- _primIntOne = (1::Prelude.Int)
- _primIntAdd :: Prelude.Int -> Prelude.Int -> Prelude.Int
- _primIntAdd = (Prelude.+)
- _primIntSub :: Prelude.Int -> Prelude.Int -> Prelude.Int
- _primIntSub = (Prelude.-)
- _primIntMul :: Prelude.Int -> Prelude.Int -> Prelude.Int
- _primIntMul = (Prelude.*)
- _primIntDiv :: Prelude.Int -> Prelude.Int -> Prelude.Int
- _primIntDiv = (Prelude.div)
- _primIntMod :: Prelude.Int -> Prelude.Int -> Prelude.Int
- _primIntMod = (Prelude.mod)
- _primIntEquals :: Prelude.Int -> Prelude.Int -> Prelude.Bool
- _primIntEquals = (Prelude.==)
- _primIntLess :: Prelude.Int -> Prelude.Int -> Prelude.Bool
- _primIntLess = (Prelude.<)
- _int = _primNatToInt
- _primNatToInt RTN.C2 = (0::Prelude.Int)
- _primNatToInt (RTN.C3 n) = ( _primIntAdd (1::Prelude.Int) ( (_primNatToInt(cast n))))
- _primIntToNat 0 = zero
- _primIntToNat n | (Prelude.>) n (0 :: Prelude.Int) = suc (cast (_primIntToNat ( _primIntSub n (1::Prelude.Int))))
- | Prelude.otherwise = _primIntToNat (_primIntSub 0 n)
- _abs = _primIntToNat
- _primShowFloat :: Float -> Prelude.String
- _primShowFloat f = Prelude.show f
- -- _primShowFloat (FloatT f) = Prelude.show f
- _primShowChar c = [ unboxChar c]
- _primStringAppend :: Prelude.String -> Prelude.String -> Prelude.String
- _primStringAppend = (Prelude.++)
- _primStringReverse = Prelude.reverse
- _primStringToList s = Prelude.map CharT s
- _primStringFromList s = Prelude.map unboxChar s
- _primNatPlus m n = _abs (_primIntAdd (_int m) (_int n))
- _primNatMinus m n = _abs (_primIntSub (_int m) (_int n))
- _primNatTimes m n = _abs (_primIntMul (_int m) (_int n))
- _primNatDivSuc m n= _abs (_primIntDiv (_int m) (_int n))
- _primNatModSuc m n = _abs (_primIntMod (_int m) (_int n))
- _primNatLess m n = _primIntLess (_int m) (_int n)
- _primNatEquals m n = _primIntEquals (_int m) (_int n)
- -- For tests
- zero = RTN.C2
- suc = RTN.C3
- one = suc zero
- two = suc one
|