[GHC] #14187: Transpose hangs on infinite by finite lists
GHC
ghc-devs at haskell.org
Wed Sep 6 10:50:51 UTC 2017
#14187: Transpose hangs on infinite by finite lists
-------------------------------------+-------------------------------------
Reporter: utikeev | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Resolution: | 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: |
-------------------------------------+-------------------------------------
Description changed by utikeev:
Old description:
> I found out that this code
>
> {{{#!hs
> take 5 $ map (take 3) (transpose (repeat [0..1]))
> }}}
>
> isn't equivalent to this one
>
> {{{#!hs
> take 5 $ map (take 3) [[0,0..], [1,1..]]
> }}}
>
> The second piece of code gives expectable output of
> {{{[[0,0,0],[1,1,1]]}}}, while first one just hangs with outpit
> {{{[[0,0,0],[1,1,1],}}} also probably screwing up some descriptors after
> interruption with Ctrl+C (as in 8.2.1, didn't have such problem in 8.0.2.
> I attach the screenshot of my cmd after interruption and pressing Up and
> Down buttons randomly for a few times. The history seems to be broken).
>
> In my homework I had to make a function zipN, which is actually zipWith
> but for more than two lists. The solution which dealt with stuck was to
> write my own transpose and apply {{{takeWhile (not . null)}}} to the
> remaining part of transposed matrix.
>
> P.S.:
> {{{#!hs
> [[0,0..],[1,1..]] == transpose (repeat [0..1])
> }}}
> also hangs ghci.
New description:
I found out that this code
{{{#!hs
take 5 $ map (take 3) (transpose (repeat [0..1]))
}}}
isn't equivalent to this one
{{{#!hs
take 5 $ map (take 3) [[0,0..], [1,1..]]
}}}
The second piece of code gives expectable output of
{{{[[0,0,0],[1,1,1]]}}}, while first one just hangs with output
{{{[[0,0,0],[1,1,1],}}} also probably screwing up some descriptors after
interruption with Ctrl+C (as in 8.2.1, didn't have such problem in 8.0.2.
I attach the screenshot of my cmd after interruption and pressing Up and
Down buttons randomly for a few times. The history seems to be broken).
In my homework I had to make a function zipN, which is actually zipWith
but for more than two lists. The solution which dealt with stuck was to
write my own transpose and apply {{{takeWhile (not . null)}}} to the
remaining part of transposed matrix.
P.S.:
{{{#!hs
[[0,0..],[1,1..]] == transpose (repeat [0..1])
}}}
also hangs ghci.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14187#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list