
Hello David! Thank you for taking the time. Here is a complete fragment that shows the error: data Expression = Null | Num Int | Id String | List [Expression] deriving (Eq, Show) cdr :: Expression -> Expression cdr (List []) = error "cdr Null !" cdr (List (_:[])) = Null cdr (List (l:ls)) = List ls car :: Expression -> Expression car (List l) = head l car n = error (show n) isNull Null = True isNull _ = False eval e k = case (car e) of (Id "begin") -> eval_begin (cdr e) k eval_begin e k = eval (car e) (if isNull (cdr e) then k else (BeginCont k (cdr e))) class Continuation a where resume :: a -> Expression -> Expression data BeginCont a = BeginCont a Expression deriving (Show) instance (Continuation a) => Continuation (BeginCont a) where resume (BeginCont k es) v = eval_begin es k Regards, Thomas On 21.07.2011 00:18, David Place wrote:
On Jul 20, 2011, at 5:58 PM, Thomas wrote:
class Continuation a where resume :: a -> Expression -> Expression
data BeginCont a = BeginCont a Expression deriving (Show) instance (Continuation a) => Continuation (BeginCont a) where resume (BeginCont k es) v = eval_begin es k
I think we need to know the definition of Expression. if define it with a dummy type
eval_begin a b = a type Expression = Int
this code fragment compiles. Would you send a code fragment that will yield the error? ____________________ David Place Owner, Panpipes Ho! LLC http://panpipesho.com d@vidplace.com