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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage