> Did you even read the article or any of the examples? There are plenty  
> of things that you can "do" with blocks that you can't with just  
> function pointers. That's besides the fact that some of them are more  
> elegantly expressed with blocks that look sort of ugly with function  
> pointers.

on the other hand, apple says this is illegal

        dispatch_block_t p;

        if(cond){
                p =^ { print("cond\n"); };
        }else{
                p =^ { print("cond\n"); };
        }
        p();

since the first part is equivalent to

        if(cond){
                struct Block _t = ...;
                p = &_t;
        }

intuitive?  easy to read? pretty?

also, if this from david's example is allowed (i'll assume
that the original examples' print(X+y) for int X and y
was a bit of a typo --- i hope!)

        block =^ (int x){ print("%d\n", x ); };

that sucker is on the stack.  by-by no-execute stack.
how does it get to the stack?  is it just copied from
the text segment or is it compiled at run time?

- erik

Reply via email to