
Hello I have these types data ImageXY data Image3d' data ScPipeParams a where ScPipeParamsImageXY :: ScBitSize -> Channel -> Modulo -> Sc3du -> Roi -> Accumulation -> ScPipeParams ImageXY ScPipeParamsImage3d' :: ScBitSize -> Channel -> Modulo -> Sc3du -> Roi -> Accumulation -> ScPipeParams Image3d' and now I write a method scPipeOpen2' (ScDevDesc dev) p = alloca $ \params -> do poke params p res <- c_sc_pipe_open2 dev (scPipeType p) params checkError res PipeId scPipeOpen2 :: ScDevDesc -> ScPipeParams a -> IO (PipeId) scPipeOpen2 d p@(ScPipeParamsImageXY _ _ _ _ _ _) = scPipeOpen2' d p scPipeOpen2 d p@(ScPipeParamsImage3d' _ _ _ _ _ _) = scPipeOpen2' d p it works fine In order to avoid these _ _ _ _ _ _, I tryed to removed the @(Constructor ____) since I just pass the p parameter to the ' method. But in that case , I get this error message C:\Users\TEMPO\Downloads\tdc\tdc\srcLib.hsc:247:19: No instance for (Storable (ScPipeParams a)) arising from a use of scPipeOpen2' In the expression: scPipeOpen2' d p In an equation for `scPipeOpen2': scPipeOpen2 d p = scPipeOpen2' d p Indeed I already defined two instance of Storable instance Storable (ScPipeParams ImageXY) where ... and instance Storable (ScPipeParams Image3d') where ... Should I use a special extension in order to be able to write only scPipeOpen2 d p = scPipeOpen2' d p thanks for your help Frederic