Or better 98668305453ea1158c97c8a2c1a90c108aa3585a (2001):

From the commit message:

    - finally, remove the last vestiges of ByteArray and MutableByteArray
      from the core libraries.  Deprecated implementations will be available
      in the lang compatibility package.


On 11/10/2019 10:32, Sylvain Henry wrote:
> But I can't find such a ByteArray type definition in today's common packages. What's the rationale for this piece of code?

Doing some archeology they seem to have been removed from ghc/lib/std/PrelArr.lhs in e921b2e307532e0f30eefa88b11a124be592bde4 (1999):

 data Ix ix => Array ix elt        = Array            ix ix (Array# elt)
-data Ix ix => ByteArray ix          = ByteArray ix ix ByteArray#
 data Ix ix => MutableArray     s ix elt = MutableArray     ix ix (MutableArray# s elt) -data Ix ix => MutableByteArray s ix     = MutableByteArray ix ix (MutableByteArray# s)

So it's probably dead code since then.

Cheers,
Sylvain


On 10/10/2019 21:15, Shao, Cheng 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
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to