úίD!      portable experimentalsjoerd@w3future.com(!"# is a $# function wrapped up in a newtype.  The function  transforms a list by changing $ the map function that is passed to $. It has the following property:  -transform a . transform b = transform (b . a) For example:   m >>= g = flatten (fmap g m) = flatten . fmap g $ m )= transform foldMap . transform (. g) $ m = transform ((. g) . foldMap) m  = transform (\f -> foldMap f . g) m%&' ( ) builds an ' from a seed value from left to right. , The function takes the element and returns * - if it is done producing the list or returns + (a,b) , in which  case, a! is a appended to the result and b is used as the next ! seed value in a recursive call. A simple use of : A *> unfoldr (\b -> if b == 0 then Nothing else Just (b, b-1)) 10 ! fromList [10,9,8,7,6,5,4,3,2,1]  " builds a list from a seed value. , The function takes the seed and returns an  of values.  If the value is , a, then a' is appended to the result, and if the  value is - b, then b, is used as seed value in a recursive call. A simple use of   (simulating unfoldl): J *> unfold (\b -> if b == 0 then empty else Left (b-1) `pair` Right b) 10 ! fromList [1,2,3,4,5,6,7,8,9,10] .!  !    /      !"#$%&&'()*+,-./.0121345 fmlist-0.6 Data.FMListbase Data.FoldabletoListControl.ApplicativeemptyFMListFMunFM transform singletonconssnocpairappendfromList fromFoldablenulllength genericLengthheadtaillastinitreverseflattenfiltertake takeWhiledrop dropWhilezipWithzipiteraterepeatunfoldrunfoldWrapApp unWrapAppfoldMapnilone#mhead transformCS Data.MaybeNothingJust Data.EitherRightLeftfromJustOrError