#ifdef __NHC__
import NonStdUnsafeCoerce (unsafeCoerce)
import NHC.IOExtras (IORef,newIORef,readIORef,writeIORef,unsafePerformIO)
-#else
-#include "Typeable.h"
#endif
+#include "Typeable.h"
+
-------------------------------------------------------------
--
-- The type Dynamic
data Dynamic = Dynamic TypeRep Obj
#endif
-#ifndef __NHC__
INSTANCE_TYPEABLE0(Dynamic,dynamicTc,"Dynamic")
-#endif
instance Show Dynamic where
-- the instance just prints the type representation.
-- (f::(a->b)) `dynApply` (x::a) = (f a)::b
dynApply :: Dynamic -> Dynamic -> Maybe Dynamic
dynApply (Dynamic t1 f) (Dynamic t2 x) =
- case applyTy t1 t2 of
+ case funResultTy t1 t2 of
Just t3 -> Just (Dynamic t3 ((unsafeCoerce f) x))
Nothing -> Nothing