[Haskell-beginners] Mapping list over datatype using Traversable and State monad.
sgf.dma at gmail.com
Tue Sep 25 21:06:26 CEST 2012
I have one more question.
Also i need to zipApp list to part of Line: either to only first list
("ordered" elements) or to only second ("other" elements). I have implemented
this using Monoid:
instance Monoid (Line a) where
mempty = Line  
(Line xs ys) `mappend` (Line xs' ys')
= Line (xs `mappend` xs') (ys `mappend` ys')
onlyOrdered :: Line a -> Line a
onlyOrdered (Line xs ys) = Line xs 
onlyOthers :: Line a -> Line a
onlyOthers (Line xs ys) = Line  ys
and function looks like
inlineToOrdered :: (a -> a) -> Line a -> Line a
inlineToOrdered g = mappend
<$> zipApp (id : repeat g) . onlyOrdered
It works as well, but is this solution good? Or there is some better way to
limit "scope" of function application to only part of datatype?
More information about the Beginners