]> hydra-www.ietfng.org Git - dyna2/commitdiff
On second thought...
authorNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Fri, 28 Jun 2013 03:48:43 +0000 (23:48 -0400)
committerNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Fri, 28 Jun 2013 03:48:43 +0000 (23:48 -0400)
Make [,,,] unpack to cons/2 and nil/1 as per timv's request.

src/Dyna/ParserHS/Parser.hs
src/Dyna/ParserHS/Selftest.hs

index 9b188911e43941b622cecc9f070340c2ddc63f15..bd82186ff1fca36dff3f5de9085f52131b067449 100644 (file)
@@ -326,14 +326,21 @@ term = token $ choice
                         <* (notFollowedBy $ char '(')
 
         , try $ nullaryStar
-        ,       spanned $ nakedbrak
+        ,       nakedbrak
         ,       spanned $ parenfunc
         ]
  where
   parenfunc = TFunctor <$> parseFunctor
                        <*> parens (tlexpr `sepBy` symbolic ',')
 
-  nakedbrak = TFunctor "tuple" <$> brackets (tlexpr `sepBy` symbolic ',')
+  nakedbrak = listify <$> spanned (brackets (tlexpr `sepBy` symbolic ','))
+   where
+    listify (xs :~ s) = 
+      let (xs' :~ s') = foldr (\a@(_ :~ sa) b@(_ :~ sb) -> TFunctor "cons" [a,b] :~ (sa <> sb))
+                              (TFunctor "nil" [] :~ r s)
+                              xs
+      in (xs' :~ (s <> s'))
+    r (Span _ e b) = Span e e b
 
   mkta ty te = TAnnot (AnnType ty) te
 
index 86d346df8796f1e960a16a51749b2ef74594e749..6046736e7b091de1416cb803227d85f161d972df 100644 (file)
@@ -158,13 +158,17 @@ case_colonFunctor = e @=? (term pvv)
 case_bracketTuple :: Assertion
 case_bracketTuple = e @=? (term s)
  where
-  e = TFunctor "tuple"
+  e = TFunctor "cons"
         [ _tNumeric (Left 1) :~ Span (Columns 1 1) (Columns 2 2) s
-        , TFunctor "+"
-            [ _tNumeric (Left 2) :~ Span (Columns 3 3) (Columns 4 4) s
-            , _tNumeric (Left 3) :~ Span (Columns 5 5) (Columns 6 6) s
-            ]
-           :~ Span (Columns 3 3) (Columns 6 6) s
+        , TFunctor "cons"
+                   [ TFunctor "+"
+                [ _tNumeric (Left 2) :~ Span (Columns 3 3) (Columns 4 4) s
+                , _tNumeric (Left 3) :~ Span (Columns 5 5) (Columns 6 6) s
+                ]
+               :~ Span (Columns 3 3) (Columns 6 6) s
+                       , TFunctor "nil" [] :~ Span (Columns 7 7) (Columns 7 7) s
+                       ]
+           :~ Span (Columns 3 3) (Columns 7 7) s
         ]
        :~ Span (Columns 0 0) (Columns 7 7) s
   s = "[1,2+3]"