On Sat, Sep 15, 2007 at 08:35:02PM -0700, 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?

GHC manual, Flag reference, Interactive-mode options:

| -fno-print-bind-result │ Turn off printing of binding results in GHCi      │ 
dynamic        │ -       │

with a link to:

http://haskell.org/ghc/dist/current/docs/users_guide/interactive-evaluation.html#ghci-stmts

"Note that let bindings do not automatically print the value bound,
unlike monadic bindings."

"The automatic printing of binding results can be supressed with :set
-fno-print-bind-result (this does not supress printing the result of
non-binding statements).  You might want to do this to prevent the
result of binding statements from being fully evaluated by the act of
printing them, for example."

Stefan

Attachment: signature.asc
Description: Digital signature

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

Reply via email to