[Haskell-beginners] Re: Simplifying code
edgar klerks
edgar.klerks at gmail.com
Wed Feb 10 05:47:09 EST 2010
He Daniel.
I have some trouble understanding what you are saying here:
>* -- first I need to find the positions of the mutatable charachters.
*
No, you don't need to do that, it's in general more efficient to not care
about positions when dealing with lists.
>* findPositions :: [Char] -> [[Int]]
*>* findPositions xs = take (length index) $ index <*> [xs]
*>* where index = elemIndices <$> leata
*
[f1, ..., fm] <*> [x1, ..., xn]
produces a list of length m*n, so
length (index <*> [xs]) == length index * length [xs] == length index
~> remove "take (length index) $"
About this piece of code:
fmap snd <$> fmap unzip <$> p
Prelude Control.Applicative> let p = [[[(1,2),(3,4),(4,5)]]]
Prelude Control.Applicative> fmap snd <$> fmap unzip <$> p
[[[2,4,5]]]
Prelude Control.Applicative>
But yeah, it is ridiculously complicated. And I made it up by trial
and error and looking at the types.
I have a better approach now. I am now building a tree and then walk
trough it to collect all the permutations.
Thanks for your help and effort!
Edgar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/beginners/attachments/20100210/9b5e40f8/attachment.html
More information about the Beginners
mailing list