Yes, and specifically, the lifted ByteArray type as described in the comments, not the unlifted ByteArray# type.
On Fri, Oct 11, 2019 at 4:00 AM Csaba Hruska <csaba.hru...@gmail.com> wrote: > > Sorry, maybe I got it wrong. Are you asking if is there any package that > passes ByteArrays via FFI? > > On Thu, Oct 10, 2019 at 8:54 PM Csaba Hruska <csaba.hru...@gmail.com> wrote: >> >> It's a primitive type. >> https://gitlab.haskell.org/ghc/ghc/blob/master/compiler/prelude/primops.txt.pp#L1388 >> https://gitlab.haskell.org/ghc/ghc/wikis/commentary/prim-ops >> >> Cheers, >> Csaba >> >> On Thu, Oct 10, 2019 at 8:16 PM Shao, Cheng <cheng.s...@tweag.io> wrote: >>> >>> Hello devs, >>> >>> I've been trying to figure out how to pass lifted types as foreign >>> types, then encountered the following code in the `DsCCall` module >>> (https://gitlab.haskell.org/ghc/ghc/blob/master/compiler/deSugar/DsCCall.hs#L172): >>> >>> ``` >>> -- Byte-arrays, both mutable and otherwise; hack warning >>> -- We're looking for values of type ByteArray, MutableByteArray >>> -- data ByteArray ix = ByteArray ix ix ByteArray# >>> -- data MutableByteArray s ix = MutableByteArray ix ix >>> (MutableByteArray# s) >>> | is_product_type && >>> data_con_arity == 3 && >>> isJust maybe_arg3_tycon && >>> (arg3_tycon == byteArrayPrimTyCon || >>> arg3_tycon == mutableByteArrayPrimTyCon) >>> = do case_bndr <- newSysLocalDs arg_ty >>> vars@[_l_var, _r_var, arr_cts_var] <- newSysLocalsDs data_con_arg_tys >>> return (Var arr_cts_var, >>> \ body -> Case arg case_bndr (exprType body) [(DataAlt >>> data_con,vars,body)] >>> ) >>> ``` >>> >>> It seems we allow a "ByteArray" type as a foreign import argument, if >>> the third field of the datacon is a ByteArray# or MutableByteArray#. >>> But I can't find such a ByteArray type definition in today's common >>> packages. What's the rationale for this piece of code? >>> >>> Cheers, >>> Cheng >>> _______________________________________________ >>> ghc-devs mailing list >>> ghc-devs@haskell.org >>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs