[Haskell-beginners] Restoring interleaved lists?
Patrick LeBoutillier
patrick.leboutillier at gmail.com
Thu Aug 19 18:23:47 EDT 2010
Felipe,
On Thu, Aug 12, 2010 at 9:23 PM, Felipe Lessa <felipe.lessa at gmail.com> wrote:
> On Thu, Aug 12, 2010 at 10:11 PM, Patrick LeBoutillier
> <patrick.leboutillier at gmail.com> wrote:
>> I need a function that, given t and the list of t*m measures, can
>> spilt the measures by track, returning a list of t lists, each
>> containing m measures. I cannot figure out how to do this, even though
>> it seems to me like it shouldn't be too hard... I can't figure out how
>> to "update" the lists of lists when I want to add a new element.
>>
>> Do anyone have any ideas?
>
> I won't post the complete code and will just throw ideas around,
> please let us know if you still get stuck =).
Perfect!
>
> We have the following function in the Prelude:
>
> splitAt :: Int -> [a] -> ([a], [a])
>
> For example,
>
> Prelude> splitAt 3 [1..12]
> ([1,2,3],[4,5,6,7,8,9,10,11,12])
>
> So you can write the following function (you can choose another name):
>
> separate :: Int -> [a] -> [[a]]
>
> For example,
>
> Prelude> separate 3 [1..12]
> [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
>
> But that's not what we wanted. Hmmm, from Data.List we have
>
> transpose :: [[a]] -> [[a]]
>
> For example:
>
> Prelude Data.List> transpose [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
> [[1,4,7,10],[2,5,8,11],[3,6,9,12]]
>
> Bingo!
>
> Hope that helps ;-),
Yes, that's exactly what I was looking for!
Thanks,
Patrick
>
> --
> Felipe.
>
--
=====================
Patrick LeBoutillier
Rosemère, Québec, Canada
More information about the Beginners
mailing list