The first one is the typing of `foreign import dynamic', which is documented as
Addr -> (prim_args -> IO prim_result)
(actually the Addr can currently be 'Ptr a' or 'FunPtr a' too).
GHC currently implements more or less `Addr -> prim_type', but that's not the point here. I propose changing this to
FunPtr prim_type1 -> prim_type2 -- where prim_type1 == prim_type2
again deprecating and keeping the old typing. Apart from the purely technical `IO' (hmmmm, is this *really* necessary?), it makes things almost symmetrical to f.e.d.
Looks reasonable to me.
Another point is the typing of `foreign label', which is currently simply
Addr
I propose to change this to *two* possible typings:
Ptr a FunPtr a
I think it's currently Ptr a, FunPtr a, or Addr (see TysWiredIn.isFFILabelTy).
Should we make newtype completely transparent?
I think so, yes. Cheers, Simon
participants (1)
-
Simon Marlow