
#14187: Transpose hangs on infinite by finite lists -------------------------------------+------------------------------------- Reporter: utikeev | Owner: (none) Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: invalid | Keywords: transpose Operating System: Windows | Architecture: x86_64 Type of failure: Runtime | (amd64) performance bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by nomeata): * status: new => closed * resolution: => invalid Comment: Thanks for your report. This is expected behavior. Note that the documentation says
The transpose function transposes the rows and columns of its argument. For example,
transpose [[1,2,3],[4,5,6]] == [[1,4],[2,5],[3,6]]
If some of the rows are shorter than the following rows, their elements are skipped:
transpose [[10,11],[20],[],[30,31,32]] == [[10,20,30],[11,31],[32]]
Note that `repeat [0,1] = [[0,1],[0,1],[0,1],[0,1],[0,1],…`. So if you look at the third element of `transpose (repeat [0,1])` then it has to skip the first `[0,1]` in the list of lists, as it has no third element. Then it skips the second, for the same reason, and goes on like that for ever. (You might wonder why it doesn’t detect that, because you use `repeat`, that _no_ element in the list has a third element – but that kind of reasoning is beyond what you can expect from a compiler, unfortunately.) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14187#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler