¿Hay alguna manera de encadenar funciones como withCString?
¿Hay alguna manera de encadenar funciones comowithCString
? Con eso me refiero a cualquier función que se parece a algof :: Foo -> (CFoo -> IO a) -> IO a
.
Por ejemplo, digamos que hay una funcióncFunc :: CString -> CFoo -> CBar -> IO ()
Usualmente, haría algo como:
haskellFunc string foo bar =
withCString string $ \ cString ->
withCFoo foo $ \ cFoo ->
withCBar bar $ \ cBar ->
cFunc cString cFoo cBar
Pero me gustaría hacer algo como:
haskellFunc = (withCString |.| withCFoo |.| withCBar) cFunc
con algún operador de composición apropiado|.|
.
Estoy escribiendo una biblioteca con muchos enlaces en C, y esta plantilla viene a menudo. ¿Estoy haciendo algo mal?