Elixir:
def a do do_sth a end
Ruby:
def a do_sth a end def do_sth def a 'modifying a' end end
Elixir: GG
GG
RubyVM::InstructionSequence.compile_option = { :tailcall_optimization => true, :trace_instruction => false }
#1 楼 @sxk 学习了。
#2 楼 @lgn21st 居然被大神回帖了
#1 楼 @sxk 奈斯
#3 楼 @sxk 学到了新知识,当然要感谢了。顺便还找到了一篇文章 http://nithinbekal.com/posts/ruby-tco/
#1 楼 @sxk 确实奈斯,我原来觉得尾递归优化要把方法体改写成迭代,实际上只需要把调用改写成迭代,方法体变化没有影响的
谢谢楼上几位的分享,另外我想知道 Ruby 中 lambda 表达式有办法尾递归么?
#5 楼 @lgn21st 这篇文章开头就把“Tail Call”与“Tail Recursion”搞混了……
py 的创始人反对 TCO,但是只优化尾递归(可以叫 TRO?)的话调用栈应该是能看的吧
#5 楼 @lgn21st 好文 thx
默认没开。已经有了。
https://ruby-china.org/topics/36896
https://nithinbekal.com/posts/ruby-tco/