
Hi! Can anyone tell me why this code does not work? I cannot seem to figure why it is broken... {-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances, FlexibleContexts, EmptyDataDecls, ScopedTypeVariables, TypeOperators, TypeSynonymInstances #-} data Data k = Pair Integer (() -> k) data RecData = RecData (Data RecData) mk_data x = RecData(Pair x (\() -> mk_data (x+1))) class Converter a f where convert :: a -> f a instance Converter RecData Data where convert (RecData r) = r class Selector s a where select :: s -> a f :: (Selector s (a->f a), Converter a f) => s -> (a->a) f s = let method = select s in (\x -> let res = method x in convert res) -- Giuseppe Maggiore Ph.D. Student (Languages and Games) Microsoft Student Partner Mobile: +393319040031 Office: +390412348444