Gibt es eine Möglichkeit, Funktionen wie withCString zu verketten?
ibt es eine Möglichkeit, Funktionen wie @ zu verkettewithCString
? Damit meine ich jede Funktion, die so aussieht wief :: Foo -> (CFoo -> IO a) -> IO a
.
Nehmen wir zum Beispiel an, es gibt eine FunktioncFunc :: CString -> CFoo -> CBar -> IO ()
Usualy, ich würde so etwas tun:
haskellFunc string foo bar =
withCString string $ \ cString ->
withCFoo foo $ \ cFoo ->
withCBar bar $ \ cBar ->
cFunc cString cFoo cBar
Aber ich würde gerne etwas machen wie:
haskellFunc = (withCString |.| withCFoo |.| withCBar) cFunc
mit einem geeigneten Kompositionsoperator|.|
.
Ich schreibe eine Bibliothek mit vielen C-Bindungen, und diese Kesselplatte kommt oft vor. Mache ich etwas falsch