Almost finished support for 'map'
[matthijs/master-project/cλash.git] / GlobalNameTable.hs
index 6317ebcee9a5125ef01519728edc8f8de05d700f..8d38f6c34bc2bbe72d21e2b58427af1c70828c17 100644 (file)
@@ -12,15 +12,24 @@ import VHDLTypes
 import Constants
 import Generate
 
-mkGlobalNameTable :: [(String, (Int, [AST.Expr] -> AST.Expr ) )] -> NameTable
+mkGlobalNameTable :: [(String, (Int, Builder) )] -> NameTable
 mkGlobalNameTable = Map.fromList
 
 globalNameTable :: NameTable
 globalNameTable = mkGlobalNameTable
-  [ ("!"              , (2, genExprFCall exId                             ) )
-  , ("head"           , (1, genExprFCall headId                           ) )
-  , ("hwxor"          , (2, genExprOp2 AST.Xor                            ) )
-  , ("hwand"          , (2, genExprOp2 AST.And                            ) )
-  , ("hwor"           , (2, genExprOp2 AST.Or                             ) )
-  , ("hwnot"          , (1, genExprOp1 AST.Not                            ) )
+  [ ("!"              , (2, Left $ genExprFCall exId                      ) )
+  , ("replace"        , (3, Left $ genExprFCall replaceId                 ) )
+  , ("head"           , (1, Left $ genExprFCall headId                    ) )
+  , ("last"           , (1, Left $ genExprFCall lastId                    ) )
+  , ("tail"           , (1, Left $ genExprFCall tailId                    ) )
+  , ("init"           , (1, Left $ genExprFCall initId                    ) )
+  , ("take"           , (2, Left $ genExprFCall takeId                    ) )
+  , ("drop"           , (2, Left $ genExprFCall dropId                    ) )
+  , ("+>"             , (2, Left $ genExprFCall plusgtId                  ) )
+  , ("map"            , (2, Right $ genMapCall                            ) )
+  , ("empty"          , (0, Left $ genExprFCall emptyId                   ) )
+  , ("hwxor"          , (2, Left $ genExprOp2 AST.Xor                     ) )
+  , ("hwand"          , (2, Left $ genExprOp2 AST.And                     ) )
+  , ("hwor"           , (2, Left $ genExprOp2 AST.Or                      ) )
+  , ("hwnot"          , (1, Left $ genExprOp1 AST.Not                     ) )
   ]