[#42735] [Ruby 1.9-Feature#4147][Open] Array#sample で重みを指定したい — Yoji Ojima <redmine@...>

Feature #4147: Array#sample で重みを指定したい

52 messages 2010/12/10
[#42791] [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Shyouhei Urabe <redmine@...> 2010/12/18

チケット #4147 が更新されました。 (by Shyouhei Urabe)

[#42800] Re: [Ruby 1.9-Feature#4147][Assigned] Array#sample で重みを指定したい — Masaya TARUI <tarui@...> 2010/12/19

> じゃあ反対ないので実装はともかく、この仕様は基本入れる方向で考えましょう。反対の人は意思表示お早めに。

[#42763] [Ruby 1.9-Bug#4159][Open] test_block_variables(TestRipper::ParserEvents) が失敗する — Kouhei Yanagita <redmine@...>

Bug #4159: test_block_variables(TestRipper::ParserEvents) が失敗する

8 messages 2010/12/14

[#42894] [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Shyouhei Urabe <redmine@...>

Feature #4207: これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには

24 messages 2010/12/26
[#42935] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/04

むらたです。

[#42936] Re: [Ruby 1.8-Feature#4207][Open] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには — Kenta Murata <muraken@...> 2011/01/05

むらたです。

[ruby-dev:42750] Re: [Ruby 1.9-Feature#4146][Open] Improvement of Symbol and Proc

From: SASADA Koichi <ko1@...>
Date: 2010-12-11 01:31:10 UTC
List: ruby-dev #42750
(2010/12/10 20:04), Nobuyoshi Nakada wrote:
> 現在Symbol#to_procで %w[12 45 32].map(&:to_i) のようなことはできますが、
> 引数を付けてメソッドを呼ぶことはできません。Symbolリテラルに引数を付け
> たらその引数と共にメソッドを呼ぶProcを作る構文というのはどうでしょうか。
> 
>   %w[12 45 32].map(&:to_i(9)).map(&:*(2)) #=> [22, 82, 58]
>   %w[abc def ghi].map(&:[1])              #=> ["b", "e", "h"]

 メソッドだと,やっぱり書くのがめんどいっすかね?

class Symbol
  def with *args
    lambda{|recv|
      recv.__send__(self, *args)
    }
  end
end

p %w[12 45 32].map(&:to_i.with(9)).map(&:*.with(2))
p %w[abc def ghi].map(&:[].with(1))


 こういうのも curry 化の一種と言えるんだろうか?


 method_missing を使うのはこんな感じでしょうか.

class ProcMaker
  def method_missing sym, *args
    lambda{|recv|
      recv.__send__ sym, *args
    }
  end
end

PM = ProcMaker.new

p %w[12 45 32].map(&PM.to_i(9)).map(&PM * 2)
p %w[abc def ghi].map(&PM[1])


 新しい文法を考えるのなら,& に対するメソッド呼び出しを,Proc 生成へ変
換するってのはあるかもしれない.

p %w[12 45 32].map(&.to_i(9)).map(& * 2)
p %w[abc def ghi].map(&[1])
#=>
p %w[12 45 32].map(&lambda{|recv| recv.to_i(9)}).map(&lambda{|recv| recv
* 2})
p %w[abc def ghi].map(&lambda{|recv| recv[1]})

-- 
// SASADA Koichi at atdot dot net

In This Thread