All record fields are in the same namespace, and furthermore this is also the same namespace of functions and class methods. In other words you cannot have two record types containing the same field name, and you cannot have a record field and a function using the same name, and you cannot have a record field and a class method using the same name. You have to choose some other names for the fields of Sine, and yet some other names for the fields of MetaSine.

In "instance Sine ISine where ...", you must implement the methods "period", "offset", and "threshold", not just "act". Similarly for "instance MetaSine ISine where ...".

The implementations of method "act" are syntactically wrong as well as semantically wrong. I do not know what is a right implementation. Actually given the overly general signature

  act :: (ISine b) => Integer -> a -> b

I do not think there is any possible implementation at all. I submit that you have set a goal too ambitious and too magical.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to