[GHC] #9966: Allow switching to different monads in GHCi

GHC ghc-devs at haskell.org
Thu Jan 8 03:50:41 UTC 2015


#9966: Allow switching to different monads in GHCi
-------------------------------------+-------------------------------------
              Reporter:  gridaphobe  |             Owner:
                  Type:  feature     |            Status:  new
  request                            |         Milestone:
              Priority:  low         |           Version:  7.11
             Component:  GHCi        |  Operating System:  Unknown/Multiple
              Keywords:              |   Type of failure:  None/Unknown
          Architecture:              |        Blocked By:
  Unknown/Multiple                   |   Related Tickets:
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 GHCi can evaluate individual `IO` actions, e.g.

 {{{
 ghci> writeFile "foo.txt" "bar"
 ghci> readFile "foo.txt"
 bar
 }}}

 but, as far as I know, this doesn't extend to other monads. Instead you
 have to compose an entire computation and then run it with the standard
 eliminators, e.g.

 {{{
 ghci> evalState 0 (put 1 >> get)
 1
 }}}

 It would be quite nice if we could tell GHCi to temporarily jump into a
 different top-level monad, e.g.

 {{{
 -- we start in IO as usual
 ghci> :monad runState 0
 -- now we're in `State Int` with the initial state set to 0
 ghci> put 1
 -- we can evaluate individual State actions without the ceremony of
 `runState`,
 -- and having to track the updated state ourselves between actions
 ghci> get
 1
 ghci> :monad IO
 -- now we're back in IO
 }}}

 I'm not sure how feasible this is (it seems tricky), but it would provide
 a very nice UX for GHCi in the context of larger Haskell applications.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9966>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list