Tom Christiansen wrote:
>
> >Tom Christiansen wrote:
>
> >> C type declarations are pretty universally despised.
>
> >By whom?
>
> >This is news to me. I have always thought that the C type declaration
> >is a concise and platform-independent way of declaring a packed
> >structure, and effectively hiding implementation details (offsets into it)
> >from the programmer.
>
> >What is wrong with them, that makes them despicable?
>
> Hiding the padding means that two compilers might not be able
> to get at the same thing.
So you don't have a problem with the idea as a whole, you just
think the rough edges could use some polishing. I left portability
issues out of my "adopt C struct syntax" suggestion, expecting a
later conversation or ruling to resolve it: Either we inherit
the quirks of the compiler we're built with or we define a perl-specific
mapping, or both, through something invisible to the langauge user.
The reference implementation, built in perl5, will be inheriting
its :int type from the SVt_IV I think.
> If you've ever tried to properly declare signal(3), you'll
> see the main pain I was thinking about:
>
> void (*signal (int, void (*) (int))) (int);
What would an improved way to declare a function that takes
two arguments, one a pointer to a function that takes two
arguments not described in this sentence and the other an integer?