Evaluating type expressions in GHCi

Daniel Fischer daniel.is.fischer at googlemail.com
Wed Sep 21 01:31:24 CEST 2011


On Wednesday 21 September 2011, 01:02:52, wagnerdm at seas.upenn.edu wrote:
> Would it be possible to have no command at all? Types are  
> distinguished by upper-case letters, so it should be possible to tell  
> whether a given expression is a value-level or a type-level expression.

Unless I'm misunderstanding, no:

{-# LANGUAGE TypeFamilies #-}
module TFEx where

type family F a
type instance F Int = Bool
type instance F Bool = Int
type instance F (a, b) = (F a, F b)

data Foo a = F a deriving Show
data Moo = Int | Bool deriving Show

*TFEx> F (Int,Bool)
F (Int,Bool)
*TFEx> :t F (Int,Bool)
F (Int,Bool) :: Foo (Moo, Moo)
*TFEx> :t undefined :: F (Int,Bool)
undefined :: F (Int,Bool) :: (Bool, Int)
*TFEx>



More information about the Glasgow-haskell-users mailing list