小编Fau*_*lar的帖子

水晶中的递归过程

水晶中的递归过程是否可行?

Ruby中的lambda

我正在尝试y-combinator用Crystal 做一个像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)
}.()
Run Code Online (Sandbox Code Playgroud)

上面的代码取自Y Not- Adventures in Functional Programming

crystal-lang

6
推荐指数
1
解决办法
448
查看次数

标签 统计

crystal-lang ×1