
Hi people, I'm embedding Haskell into a C program with a "stateful objects with message passing" paradigm [0]. I want to make "boxes" with useful functions, then connect them together within the C program. I know how to build a working version using Data.Dynamic, but that loses polymorphism [1]. Say I have 3 boxes: Box 1: [1,2,5,3] :: [Float] Box 2: reverse :: [a] -> [a] Box 3: putStrLn . show :: (Show b) => b -> IO () I wonder, is it possible to create these boxes separately at runtime (each box being compiled/loaded separately with hsplugins), then connect them together like {Box 1}=>{Box 2}=>{Box 3} (with a wrapping layer doing appropriate type checking/error reporting), or does the whole thing need to be compiled statically to generate specialized variants of the polymorphic functions? As hinted in #haskell : <quicksilver> ClaudiusMaximus: I don't think anything will allow you to pass around polymorphic values. They're an illusion of the type-checker, in a sense. Thanks for any insights, Claude [0] http://puredata.info [1] Data.Dynamic> (fromDynamic (toDyn (3.5::Double)))::(Typeable a => Maybe a) <interactive>:1:0: Ambiguous type variable `a' in the constraint: `Typeable a' arising from instantiating a type signature at <interactive>:1:0-59 Probable fix: add a type signature that fixes these type variable(s) -- http://claudiusmaximus.goto10.org