Talk:Blocks (C language extension)
![]() | Computer science Unassessed Mid‑importance | ||||||||||||||||
|
This page should not mention Grand Central Dispatch more than mentioning that it optionally uses blocks. The many GCD references only serve to further confuse the two. --Devnevyn (talk) 08:38, 17 September 2009 (UTC)
Also, what does this mean?
Unlike closures in pure functional languages, blocks do not capture all of their surrounding state; they only capture copies of their surrounding stack variables.[5]
What state is NOT captured? Globals are captured by reference, and all locals are captured also by reference in a stack block, by copy for a non-__block variable in a heap block, and by owning reference in a __block variable in a heap block. Unless I'm missing something, the statement is wrong, so please elaborate. --Devnevyn (talk) 08:52, 17 September 2009 (UTC)
I agree with both of these criticisms, I've removed the latter passage entirely and clarified the former. I've removed some non-sequiturs ("Blocks introduce a derived type into the language." Fabulous!) I also removed the misleading reference to C++ lambdas. C++ lambdas differ from blocks in far more than syntax. A comparison would be appropriate, but it must compare more than just the superficial. This article still needs a rewrite/expansion, but it's now more accurate and less misleading. -76.254.63.45 (talk) 00:21, 25 October 2009 (UTC)
Relation to GCC nested functions
The article should probably also describe the differences with GCC's Nested functions: http://gcc.gnu.org/onlinedocs/gcc-4.0.4/gcc/Nested-Functions.html#Nested-Functions I went to look it up, thinking that they were the same, but then realized that nested functions, unlike closures, cannot be called after the containing scope has exited.
--Blaisorblade (talk) 10:40, 26 April 2010 (UTC)
- I've integrated your text above into the article. Thanks! -- The Anome (talk) 11:12, 26 April 2010 (UTC)
Relation to C++ Lambda functions in GCC and other mainstream compilers
Looks like the mainstream of compilers for C/C++ are about to make "Blocks" or "Lambada" functions part of the 4.5 of the GCC compiler.
http://stackoverflow.com/questions/349899/what-c-compilers-are-supporting-lambda-already — Preceding unsigned comment added by 76.102.102.19 (talk) 19:39, 7 July 2011 (UTC)