Skip to content

Commit 21c6f4f

Browse files
authored
[ breaking ] remove parsing of dangling binders (#1711)
* [ breaking ] remove parsing of dangling binders It used to be the case that ``` ID : Type -> Type ID a = a test : ID (a : Type) -> a -> a test = \ a, x => x ``` and ``` head : List $ a -> Maybe a head [] = Nothing head (x :: _) = Just x ``` were accepted but these are now rejected because: * `ID (a : Type) -> a -> a` is parsed as `(ID (a : Type)) -> a -> a` * `List $ a -> Maybe a` is parsed as `List (a -> Maybe a)` Similarly if you want to use a lambda / rewrite / let expression as part of the last argument of an application, the use of `$` or parens is now mandatory. This should hopefully allow us to make progress on #1703
1 parent c9f9e1e commit 21c6f4f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+514
-341
lines changed

libs/base/Control/Monad/Error/Interface.idr

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,22 +94,22 @@ public export
9494
MonadError e m => MonadError e (ReaderT r m) where
9595
throwError = lift . throwError
9696
catchError (MkReaderT m) f =
97-
MkReaderT \e => catchError (m e) (runReaderT e . f)
97+
MkReaderT $ \e => catchError (m e) (runReaderT e . f)
9898

9999
public export
100100
MonadError e m => MonadError e (StateT r m) where
101101
throwError = lift . throwError
102102
catchError (ST m) f =
103-
ST \s => catchError (m s) (runStateT s . f)
103+
ST $ \s => catchError (m s) (runStateT s . f)
104104

105105
public export
106106
MonadError e m => MonadError e (RWST r w s m) where
107107
throwError = lift . throwError
108108
catchError (MkRWST m) f =
109-
MkRWST \r,w,s => catchError (m r w s) (\e => unRWST (f e) r w s)
109+
MkRWST $ \r,w,s => catchError (m r w s) (\e => unRWST (f e) r w s)
110110

111111
public export
112112
MonadError e m => MonadError e (WriterT w m) where
113113
throwError = lift . throwError
114114
catchError (MkWriterT m) f =
115-
MkWriterT \w => catchError (m w) (\e => unWriterT (f e) w)
115+
MkWriterT $ \w => catchError (m w) (\e => unWriterT (f e) w)

libs/base/Control/Monad/RWS/CPS.idr

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ execRWST m r s = (\(_,s',w) => (s',w)) <$> runRWST m r s
4343
public export %inline
4444
mapRWST : (Functor n, Monoid w, Semigroup w')
4545
=> (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b
46-
mapRWST f m = MkRWST \r,s,w =>
46+
mapRWST f m = MkRWST $ \r,s,w =>
4747
(\(a,s',w') => (a,s',w <+> w')) <$> f (runRWST m r s)
4848

4949
||| `withRWST f m` executes action `m` with an initial environment
5050
||| and state modified by applying `f`.
5151
public export %inline
5252
withRWST : (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m a
53-
withRWST f m = MkRWST \r,s => uncurry (unRWST m) (f r s)
53+
withRWST f m = MkRWST $ \r,s => uncurry (unRWST m) (f r s)
5454

5555
--------------------------------------------------------------------------------
5656
-- RWS Functions
@@ -70,8 +70,8 @@ runRWS m r s = runIdentity (runRWST m r s)
7070
||| Construct an RWS computation from a function. (The inverse of `runRWS`.)
7171
public export %inline
7272
rws : Semigroup w => (r -> s -> (a, s, w)) -> RWS r w s a
73-
rws f = MkRWST \r,s,w => let (a, s', w') = f r s
74-
in Id (a, s', w <+> w')
73+
rws f = MkRWST $ \r,s,w => let (a, s', w') = f r s
74+
in Id (a, s', w <+> w')
7575

7676
||| Evaluate a computation with the given initial state and environment,
7777
||| returning the final value and output, discarding the final state.
@@ -92,7 +92,7 @@ execRWS m r s = let (_,s1,w) = runRWS m r s
9292
public export %inline
9393
mapRWS : (Monoid w, Semigroup w')
9494
=> ((a, s, w) -> (b, s, w')) -> RWS r w s a -> RWS r w' s b
95-
mapRWS f = mapRWST \(Id p) => Id (f p)
95+
mapRWS f = mapRWST $ \(Id p) => Id (f p)
9696

9797
||| `withRWS f m` executes action `m` with an initial environment
9898
||| and state modified by applying `f`.
@@ -106,29 +106,29 @@ withRWS = withRWST
106106

107107
public export %inline
108108
Functor m => Functor (RWST r w s m) where
109-
map f m = MkRWST \r,s,w => (\(a,s',w') => (f a,s',w')) <$> unRWST m r s w
109+
map f m = MkRWST $ \r,s,w => (\(a,s',w') => (f a,s',w')) <$> unRWST m r s w
110110

111111
public export %inline
112112
Monad m => Applicative (RWST r w s m) where
113-
pure a = MkRWST \_,s,w => pure (a,s,w)
113+
pure a = MkRWST $ \_,s,w => pure (a,s,w)
114114
MkRWST mf <*> MkRWST mx =
115-
MkRWST \r,s,w => do (f,s1,w1) <- mf r s w
116-
(a,s2,w2) <- mx r s1 w1
117-
pure (f a,s2,w2)
115+
MkRWST $ \r,s,w => do (f,s1,w1) <- mf r s w
116+
(a,s2,w2) <- mx r s1 w1
117+
pure (f a,s2,w2)
118118

119119
public export %inline
120120
(Monad m, Alternative m) => Alternative (RWST r w s m) where
121-
empty = MkRWST \_,_,_ => empty
122-
MkRWST m <|> MkRWST n = MkRWST \r,s,w => m r s w <|> n r s w
121+
empty = MkRWST $ \_,_,_ => empty
122+
MkRWST m <|> MkRWST n = MkRWST $ \r,s,w => m r s w <|> n r s w
123123

124124
public export %inline
125125
Monad m => Monad (RWST r w s m) where
126-
m >>= k = MkRWST \r,s,w => do (a,s1,w1) <- unRWST m r s w
127-
unRWST (k a) r s1 w1
126+
m >>= k = MkRWST $ \r,s,w => do (a,s1,w1) <- unRWST m r s w
127+
unRWST (k a) r s1 w1
128128

129129
public export %inline
130130
MonadTrans (RWST r w s) where
131-
lift m = MkRWST \_,s,w => map (\a => (a,s,w)) m
131+
lift m = MkRWST $ \_,s,w => map (\a => (a,s,w)) m
132132

133133
public export %inline
134134
HasIO m => HasIO (RWST r w s m) where

libs/base/Control/Monad/Reader/Interface.idr

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ Monad m => MonadReader stateType (ReaderT stateType m) where
3737

3838
public export %inline
3939
Monad m => MonadReader r (RWST r w s m) where
40-
ask = MkRWST \r,s,w => pure (r,s,w)
41-
local f m = MkRWST \r,s,w => unRWST m (f r) s w
40+
ask = MkRWST $ \r,s,w => pure (r,s,w)
41+
local f m = MkRWST $ \r,s,w => unRWST m (f r) s w
4242

4343
public export %inline
4444
MonadReader r m => MonadReader r (EitherT e m) where
@@ -64,4 +64,4 @@ MonadReader r m => MonadReader r (WriterT w m) where
6464
-- this should require a Monoid instance to further
6565
-- accumulate values, while the implementation of
6666
-- MonadReader for RWST does no such thing.
67-
local f (MkWriterT m) = MkWriterT \w => local f (m w)
67+
local f (MkWriterT m) = MkWriterT $ \w => local f (m w)

libs/base/Control/Monad/Reader/Reader.idr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ record ReaderT (stateType : Type) (m : Type -> Type) (a : Type) where
1414
||| Transform the computation inside a @ReaderT@.
1515
public export %inline
1616
mapReaderT : (m a -> n b) -> ReaderT r m a -> ReaderT r n b
17-
mapReaderT f m = MkReaderT \st => f (runReaderT' m st)
17+
mapReaderT f m = MkReaderT $ \st => f (runReaderT' m st)
1818

1919
||| Unwrap and apply a ReaderT monad computation
2020
public export

libs/base/Control/Monad/State/Interface.idr

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ MonadState s m => MonadState s (MaybeT m) where
6363

6464
public export %inline
6565
Monad m => MonadState s (RWST r w s m) where
66-
get = MkRWST \_,s,w => pure (s,s,w)
67-
put s = MkRWST \_,_,w => pure ((),s,w)
68-
state f = MkRWST \_,s,w => let (s',a) = f s in pure (a,s',w)
66+
get = MkRWST $ \_,s,w => pure (s,s,w)
67+
put s = MkRWST $ \_,_,w => pure ((),s,w)
68+
state f = MkRWST $ \_,s,w => let (s',a) = f s in pure (a,s',w)
6969

7070
public export %inline
7171
MonadState s m => MonadState s (ReaderT r m) where

libs/base/Control/Monad/State/State.idr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ execState s = fst . runState s
6161
||| the given function.
6262
public export %inline
6363
mapState : ((s, a) -> (s, b)) -> State s a -> State s b
64-
mapState f = mapStateT \(Id p) => Id (f p)
64+
mapState f = mapStateT $ \(Id p) => Id (f p)
6565

6666
--------------------------------------------------------------------------------
6767
-- Implementations

libs/base/Control/Monad/Writer/CPS.idr

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ execWriterT = map snd . runWriterT
4444
public export %inline
4545
mapWriterT : (Functor n, Monoid w, Semigroup w')
4646
=> (m (a, w) -> n (b, w')) -> WriterT w m a -> WriterT w' n b
47-
mapWriterT f m = MkWriterT \w =>
47+
mapWriterT f m = MkWriterT $ \w =>
4848
(\(a,w') => (a,w <+> w')) <$> f (runWriterT m)
4949

5050
--------------------------------------------------------------------------------
@@ -72,37 +72,37 @@ execWriter = runIdentity . execWriterT
7272
public export %inline
7373
mapWriter : (Monoid w, Semigroup w')
7474
=> ((a, w) -> (b, w')) -> Writer w a -> Writer w' b
75-
mapWriter f = mapWriterT \(Id p) => Id (f p)
75+
mapWriter f = mapWriterT $ \(Id p) => Id (f p)
7676

7777
--------------------------------------------------------------------------------
7878
-- Implementations
7979
--------------------------------------------------------------------------------
8080

8181
public export %inline
8282
Functor m => Functor (WriterT w m) where
83-
map f m = MkWriterT \w => (\(a,w') => (f a,w')) <$> unWriterT m w
83+
map f m = MkWriterT $ \w => (\(a,w') => (f a,w')) <$> unWriterT m w
8484

8585
public export %inline
8686
Monad m => Applicative (WriterT w m) where
87-
pure a = MkWriterT \w => pure (a,w)
87+
pure a = MkWriterT $ \w => pure (a,w)
8888
MkWriterT mf <*> MkWriterT mx =
89-
MkWriterT \w => do (f,w1) <- mf w
90-
(a,w2) <- mx w1
91-
pure (f a,w2)
89+
MkWriterT $ \w => do (f,w1) <- mf w
90+
(a,w2) <- mx w1
91+
pure (f a,w2)
9292

9393
public export %inline
9494
(Monad m, Alternative m) => Alternative (WriterT w m) where
95-
empty = MkWriterT \_ => empty
96-
MkWriterT m <|> MkWriterT n = MkWriterT \w => m w <|> n w
95+
empty = MkWriterT $ \_ => empty
96+
MkWriterT m <|> MkWriterT n = MkWriterT $ \w => m w <|> n w
9797

9898
public export %inline
9999
Monad m => Monad (WriterT w m) where
100-
m >>= k = MkWriterT \w => do (a,w1) <- unWriterT m w
101-
unWriterT (k a) w1
100+
m >>= k = MkWriterT $ \w => do (a,w1) <- unWriterT m w
101+
unWriterT (k a) w1
102102

103103
public export %inline
104104
MonadTrans (WriterT w) where
105-
lift m = MkWriterT \w => map (\a => (a,w)) m
105+
lift m = MkWriterT $ \w => map (\a => (a,w)) m
106106

107107
public export %inline
108108
HasIO m => HasIO (WriterT w m) where

libs/base/Control/Monad/Writer/Interface.idr

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -60,47 +60,47 @@ public export %inline
6060
(Monoid w, Monad m) => MonadWriter w (WriterT w m) where
6161
writer = writerT . pure
6262

63-
listen m = MkWriterT \w =>
63+
listen m = MkWriterT $ \w =>
6464
(\(a,w') => ((a,w'),w <+> w')) <$> runWriterT m
6565

6666
tell w' = writer ((), w')
6767

68-
pass m = MkWriterT \w =>
68+
pass m = MkWriterT $ \w =>
6969
(\((a,f),w') => (a,w <+> f w')) <$> runWriterT m
7070

7171
public export %inline
7272
(Monoid w, Monad m) => MonadWriter w (RWST r w s m) where
73-
writer (a,w') = MkRWST \_,s,w => pure (a,s,w <+> w')
73+
writer (a,w') = MkRWST $ \_,s,w => pure (a,s,w <+> w')
7474

7575
tell w' = writer ((), w')
7676

77-
listen m = MkRWST \r,s,w =>
77+
listen m = MkRWST $ \r,s,w =>
7878
(\(a,s',w') => ((a,w'),s',w <+> w')) <$> runRWST m r s
7979

80-
pass m = MkRWST \r,s,w =>
80+
pass m = MkRWST $ \r,s,w =>
8181
(\((a,f),s',w') => (a,s',w <+> f w')) <$> runRWST m r s
8282

8383
public export %inline
8484
MonadWriter w m => MonadWriter w (EitherT e m) where
8585
writer = lift . writer
8686
tell = lift . tell
87-
listen = mapEitherT \m => do (e,w) <- listen m
88-
pure $ map (\a => (a,w)) e
87+
listen = mapEitherT $ \m => do (e,w) <- listen m
88+
pure $ map (\a => (a,w)) e
8989

90-
pass = mapEitherT \m => pass $ do Right (r,f) <- m
91-
| Left l => pure $ (Left l, id)
92-
pure (Right r, f)
90+
pass = mapEitherT $ \m => pass $ do Right (r,f) <- m
91+
| Left l => pure $ (Left l, id)
92+
pure (Right r, f)
9393

9494
public export %inline
9595
MonadWriter w m => MonadWriter w (MaybeT m) where
9696
writer = lift . writer
9797
tell = lift . tell
98-
listen = mapMaybeT \m => do (e,w) <- listen m
99-
pure $ map (\a => (a,w)) e
98+
listen = mapMaybeT $ \m => do (e,w) <- listen m
99+
pure $ map (\a => (a,w)) e
100100

101-
pass = mapMaybeT \m => pass $ do Just (r,f) <- m
102-
| Nothing => pure $ (Nothing, id)
103-
pure (Just r, f)
101+
pass = mapMaybeT $ \m => pass $ do Just (r,f) <- m
102+
| Nothing => pure $ (Nothing, id)
103+
pure (Just r, f)
104104
public export %inline
105105
MonadWriter w m => MonadWriter w (ReaderT r m) where
106106
writer = lift . writer
@@ -112,8 +112,8 @@ public export %inline
112112
MonadWriter w m => MonadWriter w (StateT s m) where
113113
writer = lift . writer
114114
tell = lift . tell
115-
listen (ST m) = ST \s => do ((s',a),w) <- listen (m s)
116-
pure (s',(a,w))
115+
listen (ST m) = ST $ \s => do ((s',a),w) <- listen (m s)
116+
pure (s',(a,w))
117117

118-
pass (ST m) = ST \s => pass $ do (s',(a,f)) <- m s
119-
pure ((s',a),f)
118+
pass (ST m) = ST $ \s => pass $ do (s',(a,f)) <- m s
119+
pure ((s',a),f)

libs/base/Data/Colist.idr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ inBounds k [] = No uninhabited
215215
inBounds Z (x::xs) = Yes InFirst
216216
inBounds (S k) (x::xs) = case inBounds k xs of
217217
Yes p => Yes $ InLater p
218-
No up => No \(InLater p) => up p
218+
No up => No $ \(InLater p) => up p
219219

220220
||| Find a particular element of a Colist using InBounds
221221
|||

libs/base/Data/Fin/Order.idr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ using (k : Nat)
4545
connex {y = FZ} _ = Right $ FromNatPrf LTEZero
4646
connex {x = FS k} {y = FS j} prf =
4747
case connex {rel = FinLTE} $ prf . (cong FS) of
48-
Left $ FromNatPrf p => Left $ FromNatPrf $ LTESucc p
49-
Right $ FromNatPrf p => Right $ FromNatPrf $ LTESucc p
48+
Left (FromNatPrf p) => Left $ FromNatPrf $ LTESucc p
49+
Right (FromNatPrf p) => Right $ FromNatPrf $ LTESucc p
5050

5151
public export
5252
Decidable 2 [Fin k, Fin k] FinLTE where

0 commit comments

Comments
 (0)