14-Qualified-Ado.purs

module Syntax.Modification.QualifiedAdo where -- we'll import Prelude so that the regular functions (e.g. "map" "apply") -- are in scope to prove that they don't cause problems here. import Prelude -- Requirement 3: import the module using a module alias, making it possible -- to use the same function names to refer to different "apply"-like functions import Syntax.Modification.MonadLikeTypeClasses as I import Syntax.Modification.MonadLikeTypeClasses (Box) -- Requirement 4: When we want to use 'qualified ado' syntax, we need to call the separate -- function above and constrain the types to use IxApplicative adoExample :: forall x. Box x x String adoExample = I.ado -- signifies that we're using the "apply" and "map" -- functions defined in the "MonadLikeTypeClasses" -- module to desugar "<-" and "in <function>" -- notation. a <- I.pure "test1" -- signifies that we're using the "pure" function -- defined in the "MonadLikeTypeClasses" module b <- I.pure "test2" in twoArgFunction a b twoArgFunction :: String -> String -> String twoArgFunction a b = a <> b mixingAdosTogether :: String mixingAdosTogether = """ I think "qualified ado" and "unqualified ado" can be mixed together, but I don't know of any examples """