úÎ"â Ò$      !"# foldr for ListT $%    A class for list types. % Every list has an underlying monad. :Transform an action returning a list to the returned list  > joinL $ Identity "hello"  "hello"  foldr for  s.  the result and ' right side' values are monadic actions.  Convert to a . ECan be done with a foldrL but included in type-class for efficiency. Convert from a . ECan be done with a foldrL but included in type-class for efficiency. Prepend an item to a & Convert a list to a &  > fromList [] :: Maybe Int  Nothing  > fromList [5] :: Maybe Int  Just 5 5Convert between lists with the same underlying monad filter for any MonadPlus  > filter (> 5) (Just 3)  Nothing 'An action to do foldl for  s !Execute the monadic actions in a   7Transform a list of actions to a list of their results " > joinM [Identity 4, Identity 7]  [4,7] An action to transform a   to a list ! > runIdentity $ toList "hello!"  "hello!" ;Consume a list (execute its actions) and return its length ! > runIdentity $ lengthL [1,2,3]  3 LTransform the underlying monad of a list given a way to transform the monad  > import Data.List.Tree (bfs) M > bfs (transformListMonad (\(Identity x) -> [x, x]) "hey" :: ListT [] Char)  "hheeeeyyyyyyyy" ALift the underlying monad of a list and transform it to a ListT.  Doing plain 'transformListMonad lift' instead doesn't give the compiler % the same knowledge about the types. *Consume all items and return the last one  > runIdentity $ lastL "hello"  'o' !"9Merge many lists sorted by a criteria given the criteria V > mergeOn length [["hi", "hey", "hello"], ["cat", "falcon"], ["banana", "cucumber"]] 9 ["hi","cat","hey","hello","banana","falcon","cucumber"] #8Merge two lists sorted by a criteria given the criteria  > merge2On id "01568" "239"  "01235689"   !"#  !#"    !"#(      !"#$%&'()*+List-0.1Control.Monad.ListTData.List.ClassListTrunListTListItemConsheadLtailLNil foldrListTListItemMjoinLfoldrLtoListT fromListTconsfromListconvListfilterfoldlLscanl genericTakeexecutejoinM takeWhiletoListlengthLtransformListMonad liftListMonadzipzipWithlastLrepeat transposemergeOnmerge2On foldrListT'base Control.Monad MonadPlusfoldlL'