Added builtin foldl function
[matthijs/master-project/cλash.git] / GlobalNameTable.hs
index cf585ea50a88607ef146f7654f2510a7ace02765..9a6122778e91aee8a11a5d6180769c71f1208366 100644 (file)
@@ -12,22 +12,28 @@ 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                             ) )
-  , ("replace"        , (3, genExprFCall replaceId                        ) )
-  , ("head"           , (1, genExprFCall headId                           ) )
-  , ("last"           , (1, genExprFCall lastId                           ) )
-  , ("tail"           , (1, genExprFCall tailId                           ) )
-  , ("init"           , (1, genExprFCall initId                           ) )
-  , ("take"           , (2, genExprFCall takeId                           ) )
-  , ("drop"           , (2, genExprFCall dropId                           ) )
-  , ("+>"             , (2, genExprFCall plusgtId                         ) )
-  , ("hwxor"          , (2, genExprOp2 AST.Xor                            ) )
-  , ("hwand"          , (2, genExprOp2 AST.And                            ) )
-  , ("hwor"           , (2, genExprOp2 AST.Or                             ) )
-  , ("hwnot"          , (1, genExprOp1 AST.Not                            ) )
+  [ (exId             , (2, Left $ genExprFCall exId                      ) )
+  , (replaceId        , (3, Left $ genExprFCall replaceId                 ) )
+  , (headId           , (1, Left $ genExprFCall headId                    ) )
+  , (lastId           , (1, Left $ genExprFCall lastId                    ) )
+  , (tailId           , (1, Left $ genExprFCall tailId                    ) )
+  , (initId           , (1, Left $ genExprFCall initId                    ) )
+  , (takeId           , (2, Left $ genExprFCall takeId                    ) )
+  , (dropId           , (2, Left $ genExprFCall dropId                    ) )
+  , (plusgtId         , (2, Left $ genExprFCall plusgtId                  ) )
+  , (mapId            , (2, Right $ genMapCall                            ) )
+  , (zipWithId        , (3, Right $ genZipWithCall                        ) )
+  , (foldlId          , (3, Right $ genFoldlCall                          ) )
+  , (emptyId          , (0, Left $ genExprFCall emptyId                   ) )
+  , (singletonId      , (1, Left $ genExprFCall singletonId               ) )
+  , (copyId           , (2, Left $ genExprFCall copyId                    ) )
+  , (hwxorId          , (2, Left $ genExprOp2 AST.Xor                     ) )
+  , (hwandId          , (2, Left $ genExprOp2 AST.And                     ) )
+  , (hworId           , (2, Left $ genExprOp2 AST.Or                      ) )
+  , (hwnotId          , (1, Left $ genExprOp1 AST.Not                     ) )
   ]