summaryrefslogtreecommitdiff
path: root/testsuite/tests/programs/joao-circular/LrcPrelude.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/programs/joao-circular/LrcPrelude.hs')
-rw-r--r--testsuite/tests/programs/joao-circular/LrcPrelude.hs72
1 files changed, 72 insertions, 0 deletions
diff --git a/testsuite/tests/programs/joao-circular/LrcPrelude.hs b/testsuite/tests/programs/joao-circular/LrcPrelude.hs
new file mode 100644
index 0000000000..84daa7fed8
--- /dev/null
+++ b/testsuite/tests/programs/joao-circular/LrcPrelude.hs
@@ -0,0 +1,72 @@
+--
+-- Lrc Prelude for Haskell/Gofer
+--
+--
+-- by Joćo Saraiva
+-- Mon Mar 5
+--
+
+module LrcPrelude where
+
+
+type INT = Integer
+type BOOL = Bool
+type STR = String
+type CHAR = Char
+type REAL = Float
+
+
+lrc_REALtoSTR r = show r
+lrc_INTtoSTR i = show i
+sf_INTtoSTR i = show i
+
+data BTree a = Fork !a !(BTree a) !(BTree a)
+ | Nil
+ deriving (Show, Eq , Ord)
+
+lrc_tree_insert a b Nil = (Fork (a,b) Nil Nil)
+lrc_tree_insert a b (Fork (c,d) l r)
+ | a < c = (Fork (c,d) (lrc_tree_insert a b l) r)
+ | a == c = (Fork (a,b) l r)
+ | a > c = (Fork (c,d) l (lrc_tree_insert a b r))
+
+type MAP a b = (BTree (a,b),b)
+
+lrc_empty_map :: a -> (MAP b a)
+lrc_empty_map a = (Nil , a)
+
+lrc_map_single_update :: (Eq a , Ord a) => a -> b -> (MAP a b) -> (MAP a b)
+lrc_map_single_update a b (t,d) = ((lrc_tree_insert a b t),d)
+
+lrc_map_application :: (Eq a , Ord a) => a -> (MAP a b) -> b
+lrc_map_application a (Nil, b) = b
+lrc_map_application a ((Fork (b,c) l r),d)
+ | a == b = c
+ | a < b = lrc_map_application a (l,d)
+ | a > b = lrc_map_application a (r,d)
+
+
+lrc_map_in :: (Eq a , Ord a) => a -> (MAP a b) -> Bool
+lrc_map_in _ (Nil, _) = False
+lrc_map_in a ((Fork (b,c) l r),d)
+ | a == b = True
+ | a < b = lrc_map_in a (l,d)
+ | a > b = lrc_map_in a (r,d)
+
+lrc_map_update :: (Eq a , Ord a) => (MAP a b) -> (MAP a b) -> (MAP a b)
+lrc_map_update e1 e2 = e1 -- XXXXXXXXXXXXXXXX
+
+
+lrc_string_index :: String -> Int -> Char
+lrc_string_index s i = s!!i
+
+
+lrc_string_sub :: String -> Int -> Int -> String
+lrc_string_sub s i1 i2 = s
+
+lrc_string_opensub s i = s
+
+lrc_strindex s c = 0
+
+repeatCHAR :: a -> Integer -> [a]
+repeatCHAR c i = replicate (fromIntegral i) c