
8 May
2007
8 May
'07
8:59 p.m.
On Tue, May 08, 2007 at 06:06:56PM -0400, Björn Buckwalter wrote:
We provide a type signature for 'd' where we existentially quantify the phantom type 's' to prevent mixing of bundles from different 'd' operators.
d :: Num a => (forall s. Bundle s a -> Bundle s a) -> a -> a d f x = let (Bundle y y') = f (Bundle x 1) in y'
Couldn't you do the same without branding if you simply made your function polymorphic: data Bundle a = Bundle a a d :: Num a => (forall b. Num b => b -> b) -> a -> a d f x = let (Bundle y y') = f (Bundle x 1) in y' and defined lift x = Bundle x 0 ? You obviously need an existential type, but I don't see that you need any branding. -- David Roundy Department of Physics Oregon State University