On 3/13/06, Jared Updike <[EMAIL PROTECTED]> wrote: > > If you want a place to start, I would challenge you to expand the > concatMap definition above with the definitions of concat and map, and > then plug in the definition of foldr and see if you can make your own > concatMap function. Maybe that will help you understand things better.
MUHAHAHAHA I AM TEH HAXXELL GENEUS. Ahem... How's this? myhead :: [a] -> a myhead (x:xs) = x mytail :: [a] -> [a] mytail (x:xs) = xs mymap :: (a -> b) -> [a] -> [b] mymap fn [] = [] mymap fn (x:xs) = fn x : mymap fn xs myconcat :: [[a]] -> [a] myconcat (x:xs) = x ++ myconcat xs myconcat [] = [] -- For each a in [a], produce a [b] in another list, then concat the -- list. my_concat_map :: (a -> [b]) -> [a] -> [b] my_concat_map fn [] = [] my_concat_map fn xs = myconcat (mymap fn xs) stateslist :: StateNode a -> [a] stateslist(State x) = [x] stateslist (CompositeState xs) = my_concat_map stateslist xs _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
