[#42344] [ruby-trunk - Feature #5964][Open] Make Symbols an Alternate Syntax for Strings — Tom Wardrop <tom@...>

23 messages 2012/02/03

[#42443] [ruby-trunk - Bug #5985][Open] miniruby skews "make benchmark" results — Eric Wong <normalperson@...>

21 messages 2012/02/08

[#42444] [ruby-trunk - Bug #5986][Open] Segmentation Fault — Luis Matta <levmatta@...>

16 messages 2012/02/08

[#42471] [ruby-trunk - Feature #5995][Open] calling io_advise_internal() in read_all() — Masaki Matsushita <glass.saga@...>

20 messages 2012/02/10

[#42560] [ruby-trunk - Bug #6011][Open] ruby-1.9.3-p0/lib/webrick/utils.rb:184: [BUG] Segmentation fault — Vit Ondruch <v.ondruch@...>

12 messages 2012/02/13

[#42579] [ruby-trunk - Bug #6012][Open] Proc#source_location also return the column — Roger Pack <rogerpack2005@...>

14 messages 2012/02/14

[#42685] [ruby-trunk - Bug #6036][Open] Test failures in Fedora Rawhide/17 — Bohuslav Kabrda <bkabrda@...>

14 messages 2012/02/16

[#42697] [ruby-trunk - Bug #6040][Open] Transcoding test failure: Big5 to UTF8 not defined (MinGW) — Luis Lavena <luislavena@...>

10 messages 2012/02/16

[#42813] [ruby-trunk - Feature #6065][Open] Allow Bignum marshalling/unmarshalling from C API — Martin Bosslet <Martin.Bosslet@...>

22 messages 2012/02/23

[#42815] [ruby-trunk - Bug #6066][Open] Fix "control may reach end of non-void function" warnings for clang — Eric Hodel <[email protected]>

15 messages 2012/02/23

[#42857] [ruby-trunk - Feature #6074][Open] Allow alias arguments to have a comma — Thomas Sawyer <transfire@...>

20 messages 2012/02/24

[#42891] [ruby-trunk - Feature #6083][Open] Hide a Bignum definition — Koichi Sasada <redmine@...>

23 messages 2012/02/25

[#42906] [ruby-trunk - Bug #6085][Open] Treatment of Wrong Number of Arguments — Marc-Andre Lafortune <ruby-core@...>

14 messages 2012/02/25

[#42949] [ruby-trunk - Bug #6089][Open] Test suite fails with OpenSSL 1.0.1 — Vit Ondruch <v.ondruch@...>

13 messages 2012/02/26

[ruby-core:42855] [ruby-trunk - Feature #6073] Proposal of extending syntax of for loop

From: Shouichi KAMIYA <shouichi.kamiya@...>
Date: 2012-02-24 06:09:27 UTC
List: ruby-core #42855
Issue #6073 has been updated by Shouichi KAMIYA.


Hi,

Thank you for your quick response.

Shugo Maeda wrote:
> Scala's for expression is more powerful.
> If yield in used in a for expression, nested loop is converted to a combination of map/flatMap/withFilter.
> 
> For example, the following code:
> 
>   for z in (1..Float::INFINITY).lazy
>       x in 1..z
>       y in x..z
>       when x**2 + y**2 == z**2
>     yield [x, y, z]
>   end
> 
> is equivalent to the following code:
> 
>   (1..Float::INFINITY).lazy.flat_map {|z|
>     (1..z).flat_map {|x|
>       (x..z).select {|y|
>         x**2 + y**2 == z**2
>       }.map {|y|
>         [x, y, z]
>       }
>     }
>   }
> 
> Please note that yield is already take in Ruby, so we need different Syntax.
> 
> What do you think of that feature?

Yes Scala's yield feature in for loop is powerful and it'll be good if we can use that feature in Ruby.
However, it seems like that for loop feature will be pretty different from current for loop feature right?
Do you think it's a good idea?
----------------------------------------
Feature #6073: Proposal of extending syntax of for loop
https://bugs.ruby-lang.org/issues/6073

Author: Shouichi KAMIYA
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


Hi,

I propose to extend syntax of for loop which allows us to write multiple loop with guard easily.
This extension is inspired by Scala. Here is a example

for i in 1..4 when i % 2 == 0
    j in 5..8 when j % 4 == 0
  puts "#{i}, #{j}"
end

Above code is same as following code.

for i in 1..4
  if i % 2 == 0
    for j in 5..8
      if j % 4 == 0
        puts "#{i}, #{j}"
      end
    end
  end
end

I already implemented this syntax and attached a patch.
What do you think about this syntax guys?

Thank you,
Shouichi


-- 
http://bugs.ruby-lang.org/

In This Thread