Thanks. So GADT provide us to generic type to include all types, is it right?
ex: data Parser tok a where Zero :: Parser tok () One :: Parser tok () Check :: (tok -> Bool) -> Parser tok tok Satisfy :: ([tok] -> Bool) -> Parser tok [tok] Push :: tok -> Parser tok a -> Parser tok a Plus :: Parser tok a -> Parser tok b -> Parser tok (Either a b) Times :: Parser tok a -> Parser tok b -> Parser tok (a,b) Star :: Parser tok a -> Parser tok [a] otherwise we need to write something like this (separate the type and functions): newtype Parser tok a zero::Parser tok () one :: Parser tok () ... On Nov 27, 2007 2:16 PM, Luke Palmer <[EMAIL PROTECTED]> wrote: > > On Nov 27, 2007 12:57 PM, Yu-Teh Shen <[EMAIL PROTECTED]> wrote: > > i have seen the documents in > > http://www.haskell.org/haskellwiki/Generalised_algebraic_datatype > > but i can not run the following code on ghci > > > > ex: > > > > data Term x where > > K :: Term (a -> b -> a) > > S :: Term ((a -> b -> c) -> (a -> b) -> a -> c) > > Const :: a -> Term a > > (:@) :: Term (a -> b) -> (Term a) -> Term b > > infixl 6 :@ > > > > could any tell me how to run the code? > > Put it in a file (eg ski.hs), and run: > > % ghci -fglasgow-exts ski.hs > > You cannot enter it directly into ghci; you can't define new data > types interactively. > > You can also put the line > > {-# OPTIONS_GHC -fglasgow-exts #-} > > At the top, to turn on glasgow extensions whenever GHC compiles this file. > > Luke > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe