diff --git a/generator/haskell.ml b/generator/haskell.ml index 18187e1c9..21b251d1e 100644 --- a/generator/haskell.ml +++ b/generator/haskell.ml @@ -31,8 +31,8 @@ open Structs let rec generate_haskell_hs () = generate_header HaskellStyle LGPLv2plus; - (* XXX We only know how to generate partial FFI for Haskell - * at the moment. Please help out! + (* See guestfs(3)/Haskell for limitations of the current Haskell + * bindings. Please help out! XXX *) let can_generate name style = match name with diff --git a/src/guestfs.pod b/src/guestfs.pod index ff821099d..11622a278 100644 --- a/src/guestfs.pod +++ b/src/guestfs.pod @@ -910,9 +910,52 @@ available. See the C directory in the source. =item B -This is the only language binding that is working but incomplete. -Only calls which return simple integers have been bound in Haskell, -and we are looking for help to complete this binding. +This language binding is working but incomplete: + +=over 4 + +=item * + +Functions with optional arguments are not bound. Implementing +optional arguments in Haskell seems to be very complex. + +=item * + +Events are not bound. + +=item * + +Functions with the following return types are not bound: + +=over 4 + +=item * + +Any function returning a struct. + +=item * + +Any function returning a lists of structs. + +=item * + +A few functions that return fixed length buffers (specifically ones +declared C in the generator). + +=item * + +A tiny number of obscure functions that return constant strings +(specifically ones declared C in the generator). + +=back + +=item * + +The functions L and L are not +bound, because these names conflict with C and +C. + +=back =item B