让我们使用 Ruby lambda 定义一个函数。
def plus_two # no args here
->(x) {x + 2} # args go here
end
# assign a value
x = 1
# call it
plus_two.call(x)
# => 3
您的第一个示例有点复杂,但是使用这个想法,您应该能够提出功能方法。我正在研究 Scala 和函数式编程是基于这些替换原则。
尝试使用这些进行一些递归。这就像调用函数的函数 n 次。那么基本情况是什么?
至于 Lambda 演算https://github.com/mackorone/lambda/blob/master/intro.pdf
尽量保持简单并展示步骤,而不是试图弄清楚一个班轮在做什么。是的,它们很好,但如果你看不懂它,你就无法理解它。
这是我最近正在做的事情:
require 'date'
num = DateTime.now.to_time.utc.to_datetime.ajd - 2451545.0
@t = num / 36525.0
# the terms in reverse order form for the array
@l0_a = [1.0/-19880000.0,
1.0/-152990.0,
1.0/499310.0,
0.0003032028,
36000.76982779,
280.4664567]
# make an enumerator
@l0_e = @l0_a.each
# make a lambda to pass the enumerator to.
def my_lambda
->(x) {x.reduce {|acc, el| acc * @t + el} % 360}
end
puts my_lambda.call(@l0_e)
这是使用枚举器方法的太阳公式的平均经度,当然还有 lambda。