
Dear all, I'm new in haskell. I'm assigned to see that a piece of Haskell code need to be callable from C#. I find that I can convert Haskell to DLL using ghc --mk-dll. I find it is fine for simple function but for the following errors are reported. foreign export stdcall doComp :: Pattern -> CString -> IO () doComp :: Pattern -> CString -> IO () foreign export stdcall evalDisplay :: RealFrac a => CString -> (Int->VMC (Maybe a)) -> IO () evalDisplay :: RealFrac a => CString -> (Int->VMC (Maybe a)) -> IO () The errors are as follows: Compiling Main ( CPL.hs, interpreted ) CPL.hs:29: Unacceptable argument type in foreign declaration: forall a b c. (Ind a c, Compare c b) => Pat a b When checking declaration: foreign export stdcall "doComp" doComp :: Pattern-> CString -> IO () CPL.hs:107: Unacceptable argument type in foreign declaration: {RealFrac a} When checking declaration: foreign export stdcall "evalDisplay" evalDisplay :: forall a. (RealFrac a) => CString-> (Int -> VMC (Maybe a)) -> IO () CPL.hs:107: Unacceptable argument type in foreign declaration: Int -> VMC (Maybe a) When checking declaration: foreign export stdcall "evalDisplay" evalDisplay :: forall a. (RealFrac a) =>CString-> (Int -> VMC (Maybe a)) -> IO () I would like to inquire on how to use foreign function stdcall on self defined data structure and function. Can I just simply cast them to string ? Thank you in advance for your help and attention. Best Regards, David