Re: O'Haskell OOP Polymorphic Functions
At 2001-01-16 10:23, Magnus Carlsson wrote:
You can use overloading for the definition of theValue instead:
class TheValue a where theValue :: a -> Maybe Int
instance TheValue Base where theValue _ = Nothing instance TheValue Derived where theValue x = Just (x.value)
Doesn't this imply that run-time type information is kept with the structs? Consider: d :: Derived d = struct value = 3 b :: Base b = d idb :: Base -> Base idb x = x f1 = theValue d f2 = theValue b f3 = theValue (idb d) f4 = theValue (idb b) What are the values of f1, f2, f3 & f4? -- Ashley Yakeley, Seattle WA
Ashley Yakeley writes:
At 2001-01-16 10:23, Magnus Carlsson wrote:
You can use overloading for the definition of theValue instead:
class TheValue a where theValue :: a -> Maybe Int
instance TheValue Base where theValue _ = Nothing instance TheValue Derived where theValue x = Just (x.value)
Doesn't this imply that run-time type information is kept with the structs?
The overloading is resolved statically, so no run-time type information is needed.
Consider:
d :: Derived d = struct value = 3
b :: Base b = d
idb :: Base -> Base idb x = x
f1 = theValue d f2 = theValue b f3 = theValue (idb d) f4 = theValue (idb b)
What are the values of f1, f2, f3 & f4?
f1 = Just 3 f2 = f3 = f4 = Nothing
-- Ashley Yakeley, Seattle WA
/M
participants (2)
-
Ashley Yakeley -
Magnus Carlsson