[#16611] lambda, ->, haskell, and so on — Dave Thomas <dave@...>
This is one of those e-mails that I know from the start to be futile, =20=
T24gV2VkLCBBcHIgMzAsIDIwMDggYXQgMTE6MjYgUE0sIERhdmUgVGhvbWFzIDxkYXZlQHByYWdw
Hi --
David A. Black wrote:
wouldn't
On Thu, May 01, 2008 at 12:26:47PM +0900, Dave Thomas wrote:
Hi --
David A. Black wrote:
Hi --
David A. Black wrote:
On Tue, May 06, 2008 at 02:02:34AM +0900, David A. Black wrote:
Hi --
Hi --
ara howard wrote:
Hi --
Hi --
Hi --
Not to throw the whole thread into a tizzy again, but why again is:
Evan Phoenix wrote:
Hi,
Hi --
On Sun, May 11, 2008 at 9:49 AM, Nobuyoshi Nakada <nobu@ruby-lang.org>
Hi,
Hi --
Hi,
Hi,
What about "fn" or "fun", for "function"?
Hi,
Hi,
Hi --
Hi,
Hi --
On Wed, 14 May 2008, David A. Black wrote:
Hi,
how about an uppercase lambda (instead of the usual lowercase one)
Christopher Gill wrote:
Suraj N. Kurapati wrote:
Hi,
Nobuyoshi Nakada wrote:
Hi,
=20
T24gVGh1LCBNYXkgMjIsIDIwMDggYXQgNTozNyBQTSwgQmVyZ2VyLCBEYW5pZWwgPERhbmllbC5C
RXZlbiB0aG91Z2ggSSBzZWUgdGhlIHVzZWZ1bG5lc3MsIHRoYXQncyBqdXN0IHVnbHkuCgotLUpl
"Jeremy McAnally" <jeremymcanally@gmail.com> wrote on 05/22/2008 05:35:01=20
2008/5/23 <Nate_Wiger@playstation.sony.com>:
I am not sure if that fits to the thread. I have not used yet the more
Tammo Tjarks wrote:
Hi --
> assert_yin_yang -> { q += 0 }, 'it broke!', -> { q == 42 }
Hi --
>> assert_yin_yang proc{ q += 0 }, 'it broke!',
[#16627] Monotonic timeofday() — zimbatm <zimbatm@...>
Hi ruby-core.
[#16642] ruby/trunk rev 16276 broken? ib/erb.rb:429:in `initialize': wrong argument type StringScanner (expected true) (TypeError) — Kurt Stephens <ks@...>
Build crashes shortly after miniruby linkage
[#16648] Uniform RDoc markup — "Jeremy McAnally" <jeremymcanally@...>
Would there be any resistance to making the markup of the RDoc
[#16760] errors running make test — Stephen Bannasch <stephen.bannasch@...>
I updated to revision 16403 and now compiling and running ruby1.9
[#16772] The RubySpec project at rubyspec.org — Brian Ford <brixen@...>
Hi all,
[#16773] Singleton methods on Float and Bignum — Evan Phoenix <evan@...>
In 1.8 (and 1.9 likely), trying to add a singleton method to a Float
Evan Phoenix wrote:
[#16788] Ruby 1.8.7-preview3 has been released — "Akinori MUSHA" <knu@...>
Folks,
[#16791] GC heap allocation in 1.9 — Sylvain Joyeux <sylvain.joyeux@...4x.org>
While getting the latest of trunk, I stumbled on r16194.
[#16806] nil.instance_eval — ts <decoux@...>
[#16807] Embedding Ruby1.9: seg fault — Masoom <masoom.shaikh@...>
Hi,
Hi,
that means current vm is not embeddable ? by min. src I guess you mean the
Masoom wrote:
[#16812] Proposal: Subject of ruby-core ML article should include artile number — SASADA Koichi <ko1@...>
Hi,
On Tue, May 20, 2008 at 8:20 AM, SASADA Koichi <ko1@atdot.net> wrote:
Luis Lavena wrote:
[#16832] Who is responsible for Ruby license? — "Han, Kimyung" <Kimyung.Han@...>
I am trying to discuss the ruby license with anyone who is responsible
[#16834] Returning duplicate values from Dir.glob — "Vladimir Sizikov" <vsizikov@...>
Hi,
[#16839] ruby autoconf problems — "Michal Suchanek" <hramrach@...>
Hello
[#16864] removal of magical definition of name for some class definition idioms — "Robert Dober" <robert.dober@...>
Dear list
[#16884] block args w/ defaults (was Re: resolving lambda | ambiguity) — "Eric Mahurin" <eric.mahurin@...>
On Sat, May 24, 2008 at 4:06 PM, Eric Mahurin <eric.mahurin@gmail.com>
SGV5IQoKSSd2ZSB0cmllZCB5b3VyIHBhdGNoIGFuZCBoYXZlIHNvbWUgdHJvdWJsZXMuCkkgZXhw
[#16886] lambda with normal block syntax — "Eric Mahurin" <eric.mahurin@...>
This patch is an independent but related one to my previous one. It can be
Hi,
On Sun, May 25, 2008 at 8:19 PM, Nobuyoshi Nakada <nobu@ruby-lang.org>
Hi,
Hi,
Hi,
Hi,
On Mon, May 26, 2008 at 4:14 PM, Dave Thomas <dave@pragprog.com> wrote:
Hi,
On Mon, May 26, 2008 at 5:18 PM, Yukihiro Matsumoto <matz@ruby-lang.org>
Hi,
If I may, here are two entries from the ChangeLog file:
Dave Thomas wrote:
Dave Thomas wrote:
Dave Thomas wrote:
On May 27, 2008, at 12:33 PM, David Flanagan wrote:
James Gray wrote:
Dave Thomas wrote:
David Flanagan wrote:
Hi,
On 5/28/08, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
On Sun, May 25, 2008 at 2:31 AM, Eric Mahurin <eric.mahurin@gmail.com> wrote:
[#16921] Major performance degradation on trunk — "Vladimir Sizikov" <vsizikov@...>
Hi,
[#16943] Re: [PATCH] block args w/ defaults (updated) — "Eric Mahurin" <eric.mahurin@...>
MjAwOC81LzI2IFJhZG9zs2F3IEJ1s2F0IDxyYWRlay5idWxhdEBnbWFpbC5jb20+OgoKPiBIZXkh
[#16945] Oniguruma and \p{Greek} — Dave Thomas <dave@...>
Looking at the source, I'd expect the following to work:
[#16951] Ruby 1.9 "exception reentered" — "Paul Boekholt" <p.boekholt@...>
Hi,
2008/5/27, Paul Boekholt <p.boekholt@gmail.com>:
2008/6/6, Paul Boekholt <p.boekholt@gmail.com>:
> 2008/6/6, Paul Boekholt <p.boekholt@gmail.com>:
[#16953] 1.8.6, jemalloc, sock.close problem — Christopher Thompson <cthompson@...>
Warning: This message is probably only peripherally related to Ruby!
I used to catch Errno::EINVAL when using lots of open file descriptors
[#16955] ruby-mode.el copyright assignment — Phil Hagelberg <phil@...>
Hi,
[#16979] Array.nitems replacement? — David Flanagan <david@...>
Array.nitems has just been removed from 1.9, and as near as I can make
[#16984] ZLIB for MSVC 8 - tar_input.rb — "Giancarlo F Bellido" <support@...>
I managed to install wxruby and compile zlib extension using this patch in
On May 28, 2008, at 19:48 PM, Giancarlo F Bellido wrote:
[#17010] unexpected return using define_method — Paul Brannan <pbrannan@...>
Is this a bug?
Paul Brannan wrote:
On Fri, May 30, 2008 at 06:10:25PM +0900, ts wrote:
Paul Brannan wrote:
[#17028] Ruby 1.8.7 has been released — "Akinori MUSHA" <knu@...>
Folks,
On Sun, Jun 01, 2008 at 12:25:08AM +0900, Akinori MUSHA wrote:
At Mon, 2 Jun 2008 06:37:21 +0900,
On Mon, Jun 02, 2008 at 03:46:53PM +0900, Akinori MUSHA wrote:
[#17030] Bytecode handling (compilation) extensions to Ruby 1.9 — Adam Strzelecki <ono@...>
Hello,
Hello again,
Hi,
> to_ary() convert ISeq object to Array and well known objects such as
[PATCH] lambda with normal block syntax
This patch is an independent but related one to my previous one. It can be
combined to allow for normal block syntax lambdas with default arguments.
This patch allows you to make lambda's more concisely by simply removing the
"lambda":
plus = { |a,b| a+b } # |'s are required to disambiguate with a Hash
plus[1, 2] # => 3
f = do 42 end # || not required
f[] # => 42
def my_while(cond)
yield while cond[]
end
i=10
my_while({ || (i-=1).nonzero?}) { p i }
9
8
7
6
5
4
3
2
1
I wasn't able to get rid of some reduce/reduce conflict warnings (at
yacc/compile time). They are come from the do/end, not the {}. I tried
putting in some %prec attributes to help, but didn't get anywhere. A yacc
expert may have better luck. It looks like the default precedence is
correct though. I assume the problem occurs between the first argument of a
no parens call arg list and a block for that call. It looks to treat it as
a block in this case (instead of a lambda for the first argument), which
will maintain compatibility?
Here would be a ChangeLog entry:
* parse.y (primary) : allow for a <block_lambda>. The <block_lambda>
grammar is almost identical to a normal block except |'s are required in the
{} form (to disambiguate from a Hash). The semantics are equivalent to
preceding the block with "lambda".
* sample/test.rb : tests for the above.
Index: sample/test.rb
===================================================================
--- sample/test.rb (revision 16585)
+++ sample/test.rb (working copy)
@@ -1027,6 +1027,20 @@
call_argument_test(false, lambda{|a,|})
call_argument_test(false, lambda{|a,|}, 1,2)
+call_argument_test(true, {||})
+call_argument_test(false, {||}, 1)
+call_argument_test(true, {|a,|}, 1)
+call_argument_test(false, {|a,|})
+call_argument_test(false, {|a,|}, 1,2)
+
+call_argument_test(true, do end)
+call_argument_test(false, do end, 1)
+call_argument_test(true, do || end)
+call_argument_test(false, do || end, 1)
+call_argument_test(true, do |a,| end, 1)
+call_argument_test(false, do |a,| end)
+call_argument_test(false, do |a,| end, 1,2)
+
call_argument_test(true, Proc.new{||})
call_argument_test(true, Proc.new{||}, 1)
call_argument_test(true, Proc.new{|a,|}, 1)
Index: parse.y
===================================================================
--- parse.y (revision 16585)
+++ parse.y (working copy)
@@ -670,6 +670,7 @@
%type <node> assoc_list assocs assoc undef_list backref string_dvar for_var
%type <node> block_param opt_block_param block_param_def f_opt
%type <node> bv_decls opt_bv_decl bvar
+%type <node> block_lambda
%type <node> lambda f_larglist lambda_body
%type <node> brace_block cmd_brace_block do_block lhs none fitem
%type <node> mlhs mlhs_head mlhs_basic mlhs_item mlhs_node mlhs_post
mlhs_inner
@@ -2641,6 +2642,10 @@
$$ = dispatch1(hash, escape_Qundef($2));
%*/
}
+ | block_lambda
+ {
+ $$ = $1;
+ }
| keyword_return
{
/*%%%*/
@@ -3327,6 +3332,56 @@
}
;
+block_lambda : tLBRACE
+ {
+ /*%%%*/
+ dyna_push();
+ $<num>$ = ruby_sourceline;
+ /*%
+ %*/
+ }
+ block_param_def compstmt '}'
+ {
+ /*%%%*/
+ $$ = NEW_ITER($3, $4);
+ nd_set_line($$, $<num>2);
+ dyna_pop();
+ $$->nd_iter = NEW_FCALL(rb_intern("lambda"), 0);
+ fixpos($$->nd_iter, $$);
+ /*%
+ $$ = method_arg(
+ dispatch1(fcall, rb_intern("lambda")),
+ arg_new());
+ $$ = method_add_block($$,
+ dispatch2(brace_block, escape_Qundef($3), $4));
+ %*/
+ }
+ | keyword_do_block
+ {
+ /*%%%*/
+ dyna_push();
+ $<num>$ = ruby_sourceline;
+ /*%
+ %*/
+ }
+ opt_block_param compstmt keyword_end
+ {
+ /*%%%*/
+ $$ = NEW_ITER($3, $4);
+ nd_set_line($$, $<num>2);
+ dyna_pop();
+ $$->nd_iter = NEW_FCALL(rb_intern("lambda"), 0);
+ fixpos($$->nd_iter, $$);
+ /*%
+ $$ = method_arg(
+ dispatch1(fcall, rb_intern("lambda")),
+ arg_new());
+ $$ = method_add_block($$,
+ dispatch2(do_block, escape_Qundef($3), $4));
+ %*/
+ }
+ ;
+
f_larglist : '(' f_args opt_bv_decl rparen
{
/*%%%*/