Ryan Ingram wrote:
Prelude> let inf = repeat 1
Prelude> inf
[1,1,(lots of output until I press ctrl-c),Interrupted.
(I expect this to happen)
Prelude> let x = inf
(no output here!)
Prelude> :t x
x :: [Integer]
Prelude> return inf
[1,1,(lots of output until I press ctrl-c),Interrupted.
(I also expect this to happen)
Prelude> y <- return inf
[1,1,(lots of output until I press ctrl-c),Interrupted.
(I do not expect this to happen here!)
Prelude> :t y

<interactive>:1:0: Not in scope: 'y'

Is this a bug?  Why does "y <- return exp" have different behavior
than "let y = exp"?  Is there a way to make GHCi not print the result
of an action but still make my variables get bound?

That's weird.

Prelude> (x,y) <- return $ (repeat 1, repeat 2)
Prelude> Just x <- return $ Just (repeat 1)
[1,1,1,...
Prelude> (x,_) <- return $ (repeat 1, repeat 2)
[1,1,1,...
Prelude> Just (x,y) <- return $ Just (repeat 1, repeat 2)
Prelude>

It seems that GHCi outputs the contents of the variable you've created when there's only one of them.

- Sam
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to