[GHC] #15762: ghci command: report function's inferred visible type applications

GHC ghc-devs at haskell.org
Wed Oct 17 15:02:39 UTC 2018


#15762: ghci command: report function's inferred visible type applications
-------------------------------------+-------------------------------------
           Reporter:  Iceland_jack   |             Owner:  (none)
               Type:  feature        |            Status:  new
  request                            |
           Priority:  normal         |         Milestone:
          Component:  GHCi           |           Version:  8.6.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:  #15610 #15613
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Example inspired by #40.

 ghci already has a
 [https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html
 #ghci-cmd-:type-at :type-at] command for reporting a type in a range

 {{{
 >> :type-at X.hs 6 6 6 7 f
 Int -> Int
 }}}

 A similar thing (for integrating into IDEs) is doing the same for visible
 type applications. An innocent expression like `x y` has a lot going on
 under the surface

 {{{#!hs
 {-# Language RankNTypes     #-}
 {-# Language PolyKinds      #-}
 {-# Language KindSignatures #-}

 import Data.Kind

 f :: forall res
    . (forall k (f :: k    -> Type) (a :: k). f a -> res)
   -> (forall   (f :: Type -> Type)         . f res)
   -> res
 f x y = x y
 }}}

 How hard would it be to expand that to `(x @Type @f @res) (y @f)` or (x
 @Type @Any @res) (y @Any)

 {{{#!hs
 f :: forall res (f :: Type -> Type)
    . (forall k (f :: k    -> Type) (a :: k). f a -> res)
   -> (forall   (f :: Type -> Type)         . f res)
   -> res
 f x y = (x @Type @f @res) (y @f)
 }}}

 ----

 Other ghci ideas: #15610, #15613

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


More information about the ghc-tickets mailing list