@@ -18,23 +18,21 @@ basic =
18 addLocation $
18 addLocation $
20 [ char '_' >> return P.Anything
20 [ char '_' >> return P.Anything
21− , stringToPattern <$> var
21+ , P.Var <$> lowVar
22+ , chunksToPatterns <$> dotSep1 capVar
22 , P.Literal <$> Literal.literal
23 , P.Literal <$> Literal.literal
25− stringToPattern str =
26+ chunksToPatterns chunks =
26− case str of
27+ case List.intercalate "." chunks of
27− "True" ->
28+ "True" ->
28− P.Literal (L.Boolean True)
29+ P.Literal (L.Boolean True)
30− "False" ->
31+ "False" ->
31− P.Literal (L.Boolean False)
32+ P.Literal (L.Boolean False)
33− c:_ | isUpper c ->
34+ name ->
34− P.Data (Var.Raw str) []
35+ P.Data (Var.Raw name) []
40asPattern :: IParser P.Raw -> IParser P.Raw
38asPattern :: IParser P.Raw -> IParser P.Raw
@@ -94,11 +92,16 @@ term =
94patternConstructor :: IParser P.Raw
92patternConstructor :: IParser P.Raw
95patternConstructor =
93patternConstructor =
96 addLocation $
94 addLocation $
97− do v <- List.intercalate "." <$> dotSep1 capVar
95+ do name <- List.intercalate "." <$> dotSep1 capVar
98− case v of
96+ case name of
99− "True" -> return $ P.Literal (L.Boolean True)
98+ return $ P.Literal (L.Boolean True)
100− "False" -> return $ P.Literal (L.Boolean False)
101+ return $ P.Literal (L.Boolean False)
101− _ -> P.Data (Var.Raw v) <$> spacePrefix term
104+ P.Data (Var.Raw name) <$> spacePrefix term
104expr :: IParser P.Raw
107expr :: IParser P.Raw