úÎ!'ï(      !"#$% & ' Safe*;=>?STŠ Safe *;<=>?FSTHdo-notation-dsl(This type class witnesses a use case of kH, which is an ad-hoc delimited continuation adaptive to the answer type r.Safe*;=>?STÇSafe &';<=>?Ae  Safe*;=>?ÛSafe&'*;<=>?STV‘Delimited continuationsSafe;<=>?ST‘do-notation-dsl:set -XTypeOperators:set -XRebindableSyntax+import Prelude hiding ((>>), (>>=), return)import Control.Dslimport Control.Dsl.Returnimport Control.Dsl.Yieldimport Control.Dsl.Empty:{ -earlyGenerator :: Bool -> [String] !! IntegerearlyGenerator earlyReturn = do Yield "inside earlyGenerator" when earlyReturn $ do Yield "early return" return 1 Yield "normal return" return 0:}:{earlyGeneratorTest :: [String]earlyGeneratorTest = do Yield "before earlyGenerator"" i <- Shift $ earlyGenerator True Yield "after earlyGenerator"< Yield $ "the return value of earlyGenerator is " ++ show i empty:}earlyGeneratorTest["before earlyGenerator","inside earlyGenerator","early return","after earlyGenerator","the return value of earlyGenerator is 1"]Safe*;<=>?STMutable variablesSafe &'*;=>?QV !"" !  GeneratorsSafe&'*;=>?Û%&%&(      !""#$$%%&'( ) ) *+.do-notation-dsl-0.1.0.2-B09IweN67A11q3l5aBxNdqControl.Dsl.Cont Control.DslControl.Dsl.DoControl.Dsl.EmptyControl.Dsl.MonadicControl.Dsl.ReturnControl.Dsl.ShiftControl.Dsl.StateControl.Dsl.YieldControl.Dsl.DslCont!!whenDslcpsApplyDo>>=>> $fDoContra$fDokraEmptyempty$fDslEmptyMaybeVoid$fDslEmpty[]VoidMonadic$fDslMonadicmaReturnreturn$fDslReturnIOVoid$fDslReturnMaybeVoid$fDslReturn[]Void$fDslReturn(->)Void$fDslReturnrVoidShift $fDslShiftraGetPutState$fDslPut(->)() $fDslGet(->)aYield$fDslYield[]()