h,       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 0.2.2.2None- monadic-bangdo let s = pure "outer" let s = pure "inner" in putStrLn !sYou might expect this to print inner, but it would actually print outer , since it would be desugared to do let s = pure "outer" <- s let s = pure "inner" in print With this function, the plugin will instead throw an error saying that s cannot be used here. If the first s weren't defined, the user would, without this function, get an error saying that s is not in scope, at the call site. Here, we instead throw a more informative error.If only the first s were defined, i.e. &do let s = pure "outer" putStrLn !sit would be valid code.8OfUVYZ[jghRPaeQ`i^dWXkT]\ml_bSc67J8;=<>?B@A:CDEFIKLMN9GH8KLMNJIGHPQRSCEDFTUVWXYZ[O\]B@A;?><=^_`abcdef:9867ghijklmNonez~~      !"#$%&'()*+,--.-/0123456789:;<=>?@ABCDEFGHIJKKLKMNOPQRSSTSUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~monadic-bang-0.2.2.2-inplace!MonadicBang.Internal.Effect.Offer#MonadicBang.Internal.Effect.Uniques*MonadicBang.Internal.Effect.Writer.DiscardMonadicBang.Internal.ErrorMonadicBang.Internal.OptionsMonadicBang.Internal.UtilsMonadicBang.Internal MonadicBang monadic-bangOfferC getOfferStateOfferYoinkyoinkrunOffer$fAlgebra:+:OfferC$fFunctorOfferC$fApplicativeOfferC $fMonadOfferCUniquesCgetUniquesStateUniques FreshUnique freshUnique runUniquesIO runUniques$fAlgebra:+:UniquesC$fFunctorUniquesC$fApplicativeUniquesC$fMonadUniquesCDiscardC evalDiscardC evalWriter$fAlgebra:+:DiscardC$fFunctorDiscardC$fApplicativeDiscardC$fMonadDiscardCPsErrorsErrorErrOutOfScopeVariableErrBangOutsideOfDo customError tellPsErrorOptions MkOptionspreserveErrors verbosityPreserveErrorsPreserve Don'tPreserve VerbosityDumpTransformedQuiet parseOptionsTryHandlerDList fromDList??panicBindStmt:<-Fill LocalVars HoleFillsHandleCanFailAstTypeEffectshandle'HandlingMonadTranstoMaybeT HandleFailureInScope MkInScopeinvalidvalidOccsMkOccsLExprExprLocMkLoccollineExprLoc emptyOccs extendOccselemOccsunitOccs noneInScopeaddValid addValidsinvalidateVars isInvalidbangLocbangSpan bangSrcLoc spanToLoc replaceBangshandletry fillHolesevactryEvac usualTriesignoreevacPatsaddStmts bindStmtExpr bindStmtSpan fromBindStmtbangVarlocVartellOne tellLocalVar $fMonoidOccs$fSemigroupOccs$fMonoidInScope$fSemigroupInScope$fHandlingMonadTransMaybeT$fHandlingMonadTransIdentityT$fHandleFUNStmtLR$fHandleFUNHsExpr$fHandleFUNPat$fHandleFUNHsBindLR$fHandleFUNMatch$fHandleFUNMatchGroup$fHandleFUNGRHSs$fEqLoc$fOrdLoc $fShowLocplugin