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 <[email protected]> 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 > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
