Crystal中是否可能存在递归过程?
类似于Ruby中的lambda。
我正在尝试在Crystal中实现y-combinator
,类似于Ruby中的实现:
puts -> {
fact_improver = ->(partial) {
-> (n) { n.zero? ? 1 : n * partial.(n-1) }
}
y = ->(f) {
->(x) { f.(->(v) { x.(x).(v) }) }.(
->(x) { f.(->(v) { x.(x).(v) }) }
)
}
fact = y.(fact_improver)
fact = fact_improver.(fact)
fact.(100)
}.()
以上代码源自函数式编程冒险。