diff options
| author | bringert <bringert@cs.chalmers.se> | 2005-12-01 17:27:06 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2005-12-01 17:27:06 +0000 |
| commit | 396cc63cfc3658a11bbc76c9b5c4bf32e21cef6a (patch) | |
| tree | 7c82ad66ee5183acf0966a2627991b95c3739ca6 /src/Transfer/SyntaxToCore.hs | |
| parent | 8de44f741e2452cbad73dd1fb467fca888235748 (diff) | |
Added list patterns. Added som simple prelude functions.
Diffstat (limited to 'src/Transfer/SyntaxToCore.hs')
| -rw-r--r-- | src/Transfer/SyntaxToCore.hs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Transfer/SyntaxToCore.hs b/src/Transfer/SyntaxToCore.hs index 586160ebe..b13579293 100644 --- a/src/Transfer/SyntaxToCore.hs +++ b/src/Transfer/SyntaxToCore.hs @@ -381,6 +381,8 @@ desugar = return . map f where f :: Tree a -> Tree a f x = case x of + PListCons p1 p2 -> pListCons <| p1 <| p2 + PList xs -> pList (map f [p | PListElem p <- xs]) EIf exp0 exp1 exp2 -> ifBool <| exp0 <| exp1 <| exp2 EDo bs e -> mkDo (map f bs) (f e) BindNoVar exp0 -> BindVar VWild <| exp0 @@ -407,6 +409,16 @@ desugar = return . map f where g <| x = g (f x) -- +-- * List patterns +-- + +pListCons :: Pattern -> Pattern -> Pattern +pListCons p1 p2 = PCons (Ident "Cons") [PWild,p1,p2] + +pList :: [Pattern] -> Pattern +pList = foldr pListCons (PCons (Ident "Nil") [PWild]) + +-- -- * Use an overloaded function. -- |
