Простое каррирование в Ruby

Я пытаюсь выполнить каррирование в ruby:

def add(a,b)
  return a+b
end

plus = lambda {add}
curry_plus = plus.curry
plus_two = curry_plus[2] #Line 24
puts plus_two[3]

Я получаю ошибку

func_test.rb:24:in `[]': wrong number of arguments (1 for 0) (ArgumentError)

из func_test.rb: 24: in `'

Но если я сделаю

plus = lambda {|a,b| a+ b}

, похоже, это сработает. Но, печатая плюс после назначения с помощью лямбды, оба способа возвращают один и тот же тип объекта. Что я неправильно понял?

12
задан Andrew Grimm 24 November 2010 в 22:43
поделиться