diff options
Diffstat (limited to 'testsuite/tests/programs/joao-circular/LrcPrelude.hs')
-rw-r--r-- | testsuite/tests/programs/joao-circular/LrcPrelude.hs | 72 |
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 |