<div dir="ltr">Think about it like this:<div><br></div><div><img src="cid:ii_knuvush70" alt="image.png" width="321" height="276" style="margin-right: 0px;"><br></div><div><br></div><div>The current elements are zipped with the tails (which are created with transpose). This has to bottom out with empty tails (repeat []).</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 24, 2021 at 2:32 AM Galaxy Being <<a href="mailto:borgauf@gmail.com">borgauf@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">I'm in Bird's <i>Thinking Functionally with Haskell </i>and he has this code to transpose a matrix based on a list of row lists<div><br></div><div><font face="monospace">transpose :: [[a]] -> [[a]]</font><br></div><div><font face="monospace">transpose [xs] = [[x] | x <- xs]<br>transpose (xs:xss) = zipWith (:) xs (transpose xss)</font><br></div><div><br></div><div>then he says <font face="monospace">transpose</font> can be rewritten with this pattern</div><div><br></div><div><font face="monospace">transpose [] = ...</font><br></div><div><br></div><div>what could be the rest of it? The answer he gives is</div><div><br></div><div><font face="monospace">transpose2 :: [[a]] -> [[a]]<br>transpose2 [] = repeat []  <br>transpose2 (xs:xss) = zipWith (:) xs (transpose2 xss)</font><br></div><div><br></div><div>where <font face="monospace">repeat [] </font>gives an infinite list of repetitions. And, he says, note that</div><div><br></div><div><font face="monospace">transpose [xs] =  zipWith (;) xs (repeat []) = [[x] | x <- xs]</font><br></div><div><br></div><div>I suppose I get this last equation, but I don't understand <font face="monospace">repeat</font> in <font face="monospace">transpose2</font>. Can someone explain this to me?</div><div><br></div><div>LB</div><div><br></div></div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>