diff --git a/src/Init/Control/Monad.lean b/src/Init/Control/Monad.lean index d62b3f9163..dcb0eb6bbc 100644 --- a/src/Init/Control/Monad.lean +++ b/src/Init/Control/Monad.lean @@ -15,7 +15,7 @@ class HasBind (m : Type u → Type v) := export HasBind (bind) -infixr `>>=` := bind +infixl `>>=` := bind @[inline] def mcomp {α : Type u} {β δ : Type v} {m : Type v → Type w} [HasBind m] (f : α → m β) (g : β → m δ) : α → m δ := fun a => f a >>= g diff --git a/src/Init/Core.lean b/src/Init/Core.lean index ac4b615a14..deffdce7c5 100644 --- a/src/Init/Core.lean +++ b/src/Init/Core.lean @@ -66,7 +66,7 @@ reserve infixr ` :: `:67 /- Control -/ reserve infixr ` <|> `:2 -reserve infixr ` >>= `:55 +reserve infixl ` >>= `:55 reserve infixr ` >=> `:55 reserve infixl ` <*> `:60 reserve infixl ` <* ` :60 diff --git a/src/Lean/Parser/Term.lean b/src/Lean/Parser/Term.lean index 45146926f2..83e89c8cb1 100644 --- a/src/Lean/Parser/Term.lean +++ b/src/Lean/Parser/Term.lean @@ -196,7 +196,7 @@ def namedArgument := parser! try ("(" >> ident >> " := ") >> termParser >> ")" @[builtinTermParser] def orM := tparser! infixR " <||> " 30 @[builtinTermParser] def andM := tparser! infixR " <&&> " 35 @[builtinTermParser] def andthen := tparser! infixR " >> " 60 -@[builtinTermParser] def bindOp := tparser! infixR " >>= " 55 +@[builtinTermParser] def bindOp := tparser! infixL " >>= " 55 @[builtinTermParser] def mapRev := tparser! infixR " <&> " 100 @[builtinTermParser] def seq := tparser! infixL " <*> " 60 @[builtinTermParser] def seqLeft := tparser! infixL " <* " 60