Added type inference for list literals and list constructors
This commit is contained in:
parent
2b3783d845
commit
af63afa5e9
|
@ -203,6 +203,16 @@ markExpressionTypes = checkDepthM checkExpression
|
||||||
checkExpression :: Check A.Expression
|
checkExpression :: Check A.Expression
|
||||||
checkExpression (A.Dyadic _ _ lhs rhs)
|
checkExpression (A.Dyadic _ _ lhs rhs)
|
||||||
= markUnify lhs rhs
|
= markUnify lhs rhs
|
||||||
|
checkExpression (A.Literal _ t (A.ListLiteral _ es))
|
||||||
|
= do ts <- mapM astTypeOf es
|
||||||
|
mapM_ (markUnify t . A.List) ts
|
||||||
|
checkExpression (A.ExprConstr _ con)
|
||||||
|
= case con of
|
||||||
|
A.RangeConstr _ t e e' ->
|
||||||
|
do astTypeOf e >>= markUnify t . A.List
|
||||||
|
astTypeOf e' >>= markUnify t . A.List
|
||||||
|
A.RepConstr _ t _ e ->
|
||||||
|
astTypeOf e >>= markUnify t . A.List
|
||||||
checkExpression _ = return ()
|
checkExpression _ = return ()
|
||||||
|
|
||||||
-- | Checks the types in assignments
|
-- | Checks the types in assignments
|
||||||
|
|
Loading…
Reference in New Issue
Block a user