definition:
|
context :: Parser Context
context = choice [contextList, parseSingleContext, parseNoContext]
where
parseSingleContext :: Parser Context
parseSingleContext = toList <$> constraint <*!* tokenDoubleArrow
parseNoContext :: Parser Context
parseNoContext = yield []
|
demand:
|
no demanded arguments
|
deterministic:
|
deterministic operation
|
documentation:
|
{-
qualTypeExpr = (QualTypeExpr <$> contextList <*!*> typeExpr) <|> (qualType *>= decide1) <|> ((QualTypeExpr []) <$> typeExpr)
where
decide1 :: QualIdent -> Parser QualTypeExpr
decide1 qi = case1 qi <|> case2 qi
-- QualTypeExpr TypeVariable ... (maybe context)
case1 :: QualIdent -> Parser QualTypeExpr
case1 qi = skipSomeWs *> (Ident <$> typeVariable) *>= decide2 qi
-- QualTypeExpr ... (NOT context)
case2 :: QualIdent -> Parser QualTypeExpr
case2 qi = QualTypeExpr [] <$> arrowOrApply (ConstructorType qi)
-- QualTypeExpr TypeVariable ... (maybe context)
decide2 :: QualIdent -> Ident -> Parser QualTypeExpr
decide2 qi i = (case3 qi i) <|> (case4 qi i)
-- QualTypeExpr TypeVariable '=>' ... (context)
case3 :: QualIdent -> Ident -> Parser QualTypeExpr
case3 qi i = QualTypeExpr [Constraint qi (VariableType i)] <$> (skipSomeWs *> tokenDoubleArrow *!*> typeExpr)
-- QualTypeExpr TypeVariable ... (no context)
case4 :: QualIdent -> Ident -> Parser QualTypeExpr
case4 qi i = QualTypeExpr [] <$> arrowOrApply (ApplyType (ConstructorType qi) (VariableType i))
arrowOrApply :: TypeExpr -> Parser TypeExpr
arrowOrApply t = (ArrowType t <$> (skipSomeWs *> tokenArrow *!*> type0)) <|> (foldl1 ApplyType <$> ((t:) <$> many (skipSomeWs *> type2)))
-}
--- A parser for a Context | {Constraint | (ConstraintList)}
|
failfree:
|
<FAILING>
|
indeterministic:
|
referentially transparent operation
|
infix:
|
no fixity defined
|
iotype:
|
{() |-> _}
|
name:
|
context
|
precedence:
|
no precedence defined
|
result-values:
|
_
|
signature:
|
String -> [([CurryInterface.Types.Constraint], String)]
|
solution-complete:
|
operation might suspend on free variables
|
terminating:
|
possibly non-terminating
|
totally-defined:
|
possibly non-reducible on same data term
|