make p,q in coe/comp optional and default to @0 @1
This commit is contained in:
parent
7b93a913c7
commit
d631b86be3
7 changed files with 73 additions and 31 deletions
|
@ -287,12 +287,22 @@ termArg fname = withLoc fname $
|
|||
<|> [|V qname|]
|
||||
<|> const <$> tupleTerm fname
|
||||
|
||||
||| optionally, two dimension arguments. if absent default to `@0 @1`
|
||||
private
|
||||
optDirection : FileName -> Grammar False (PDim, PDim)
|
||||
optDirection fname = withLoc fname $ do
|
||||
dims <- optional [|(,) (dimArg fname) (dimArg fname)|]
|
||||
pure $ \loc => fromMaybe (K Zero loc, K One loc) dims
|
||||
|
||||
export
|
||||
coeTerm : FileName -> Grammar True PTerm
|
||||
coeTerm fname = withLoc fname $ do
|
||||
resC "coe"
|
||||
mustWork [|Coe (typeLine fname) (dimArg fname) (dimArg fname)
|
||||
(termArg fname)|]
|
||||
mustWork $ do
|
||||
line <- typeLine fname
|
||||
(p, q) <- optDirection fname
|
||||
val <- termArg fname
|
||||
pure $ Coe line p q val
|
||||
|
||||
public export
|
||||
CompBranch : Type
|
||||
|
@ -301,8 +311,7 @@ CompBranch = (DimConst, PatVar, PTerm)
|
|||
export
|
||||
compBranch : FileName -> Grammar True CompBranch
|
||||
compBranch fname =
|
||||
[|(,,) dimConst (patVar fname)
|
||||
(needRes "⇒" *> assert_total term fname)|]
|
||||
[|(,,) dimConst (patVar fname) (needRes "⇒" *> assert_total term fname)|]
|
||||
|
||||
private
|
||||
checkCompTermBody : (PatVar, PTerm) -> PDim -> PDim -> PTerm -> PDim ->
|
||||
|
@ -321,7 +330,7 @@ compTerm fname = withLoc fname $ do
|
|||
resC "comp"
|
||||
mustWork $ do
|
||||
a <- typeLine fname
|
||||
p <- dimArg fname; q <- dimArg fname
|
||||
(p, q) <- optDirection fname
|
||||
s <- termArg fname; r <- dimArg fname
|
||||
bodyStart <- bounds $ needRes "{"
|
||||
s0 <- compBranch fname; needRes ";"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue