I think we have to be very clear whether we are going to provide just a sexier notation for anonymous functions or closures (and if the latter what the semantics are). Just doing one and not figuring out the long term piece doesn't make sense because we may end up having two completely distinct features and/or feature creep over the next year which doesn't make much sense to me.
I think in last discussion most ppl just preferred a sexier anonymous function esp. as there weren't very clear/clean proposals for how closures would work in PHP and what the benefits would be. So I definitely suggest to have a discussion, maybe RFC based like Stefan did but really decide once and for all on where we'd like to go with this. We all know that no features map 1:1 to PHP and there are always unique behaviors of our language and environment which require a fresh view at things. Andi > -----Original Message----- > From: Andrei Zmievski [mailto:[EMAIL PROTECTED] > Sent: Friday, February 22, 2008 10:00 AM > To: Matvey Arye > Cc: KOYAMA Tetsuji; internals@lists.php.net > Subject: Re: [PHP-DEV] [RFC] Anonymous functions > > Yes, let's re-open, I'd like to get a closure on that issue (pun > intended). > > -Andrei > > On Feb 18, 2008, at 8:26 AM, Matvey Arye wrote: > > > Hi All, > > > > I second this. Can we please re-open the discussion on anonymous > > functions as well as closures. That would be an awesome feature. > > create_function is a bit ugly semantically to be sufficient for all > > anonymous function needs. > > > > Thanks, > > Mat > > > > KOYAMA Tetsuji wrote: > >> Hi lists, > >> > >> Is this discussion stopping? > >> > >> I want this feature in PHP. Please start to talk. > >> > >> On Jan 10, 2008 7:09 PM, Ryusuke SEKIYAMA <[EMAIL PROTECTED]> > wrote: > >> > >>> Hello, lists, > >>> > >>> We have discussed about implementing anonymous functions and > >>> closures in PHP. > >>> However, I consider that implementing anonymous functions and > >>> implementing lexical scopes should be discussed separately. > >>> # Even though I like closure. ;-) > >>> So I wrote anonymous function patch for PHP 5.3 and 6.0. > >>> > >>> > >>> Patches (inlcude tests): > >>> for PHP 5.3: http://www.opendogs.org/pub/php-5.3dev-080109- > >>> anon.patch > >>> for PHP 6.0: http://www.opendogs.org/pub/php-6.0dev-080109- > >>> anon.patch > >>> > >>> > >>> Featues: > >>> - Unlike create_function(), there is no need to take care of > >>> quotes, backslashes and dollars . > >>> - Can be used in loop, but be compiled only once. > >>> - Supports recursive call using __FUNCTION__. > >>> - Supports inline execution. It works like a block scope. > >>> - Works with opcode caches. > >>> Since I couldn't build APC against PHP 5.3, I have tested > >>> PHP 5.2.5 + anonymous function patch and APC 3.0.16. > >>> > >>> > >>> Example: > >>> <?php > >>> // callback > >>> $arr = array(5, 3, 6, 0); > >>> usort($arr, function($a, $b){ return $a - $b; }); > >>> print_r($arr); // 0, 3, 5, 6 > >>> > >>> // assign to a variable > >>> $lambda = function(){ > >>> echo "Hello, World!\n"; > >>> }; > >>> $lambda(); // "Hello, World!" > >>> > >>> // inline execution > >>> $result = function($a, $b){ > >>> return $a + $b; > >>> }(1, 2); > >>> var_dump($result); // "int(3)" > >>> ?> > >>> > >>> > >>> The anonymous function name is composed of '\0', > >>> "ZEND_ANON<#serial>", > >>> filename and character position. > >>> - Leading '\0' blocks to be displayed by get_defined_functions(). > >>> - "ZEND_ANON<" helps determine wheter the function is anonymous > >>> or not > >>> because '<' cannot be used for user-defined function name. > >>> - Serial number and file informations make the name unique. > >>> - char anon_key_buf[32] is long enough because > >>> `snprintf(anon_key_buf, 32, "ZEND_ANON<%llu>", (unsigned long > >>> long)UINT64_MAX)' > >>> returns 31. > >>> > >>> > >>> Regards, > >>> > >>> > >>> 2008/1/6, Marcus Boerger <[EMAIL PROTECTED]>: > >>> > >>>> Hello Stanislav, > >>>> > >>>> tha makesw three then already, how about we ask around again? > >>>> Ryusuke, can you please start a new '[RFC] Square brackets > >>>> shortcut' thread > >>>> to collect opinions and pass along the patch for that? > >>>> > >>>> I like the anonymous function patch too. It is clean and simple. > >>>> Maybe you > >>>> want to start a second '[RFC] Anonymous functions' thread with > >>>> that patch. > >>>> > >>>> Can you also please add tests for both? > >>>> > >>>> marcus > >>>> > >>>> Wednesday, January 2, 2008, 7:51:06 PM, you wrote: > >>>> > >>>> > >>>>>> the square bracket array syntax patch for PHP 5.3, > >>>>>> http://www.opendogs.org/pub/php-5.3dev-080101-sbar.patch > >>>>>> > >>>>> I remember we discussed that already and it was rejected then > >>>>> (even > >>>>> though myself and Andi liked it) - did the people that objected > >>>>> then > >>>>> change their minds? > >>>>> > >>>> > >>>> Best regards, > >>>> Marcus > >>>> > >>>> > >>>> > >>> -- > >>> /** > >>> * Ryusuke SEKIYAMA > >>> * [EMAIL PROTECTED] > >>> */ > >>> > >>> -- > >>> PHP Internals - PHP Runtime Development Mailing List > >>> To unsubscribe, visit: http://www.php.net/unsub.php > >>> > >>> > >>> > >> > >> - > >> KOYAMA, Tetsuji > >> [EMAIL PROTECTED] > >> > >> > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php