Functional programming 将延续传递样式称为函数式编程语言的拯救有意义吗?

Functional programming 将延续传递样式称为函数式编程语言的拯救有意义吗?,functional-programming,continuation-passing,Functional Programming,Continuation Passing,我不确定以下陈述是否有意义: 在函数式编程语言中调用非尾部递归函数,由于调用堆栈不断增加,通常存在空间效率问题 通过将函数调用转换为延续传递样式,可以将每个非尾部递归函数系统地转换为尾部递归函数 延续传递风格是对函数式编程语言的拯救,因为如果没有延续传递风格,在函数式编程语言的代码库中流行的非尾部递归函数必然会导致严重的性能问题 这是完全错误的。虽然每个函数都可以系统地转换为使用连续传递方式的on,但这并不能解决算法的空间效率问题。空间可以在continuation闭包中分配,而不是在执行

我不确定以下陈述是否有意义:

  • 在函数式编程语言中调用非尾部递归函数,由于调用堆栈不断增加,通常存在空间效率问题

  • 通过将函数调用转换为延续传递样式,可以将每个非尾部递归函数系统地转换为尾部递归函数

  • 延续传递风格是对函数式编程语言的拯救,因为如果没有延续传递风格,在函数式编程语言的代码库中流行的非尾部递归函数必然会导致严重的性能问题


  • 这是完全错误的。虽然每个函数都可以系统地转换为使用连续传递方式的on,但这并不能解决算法的空间效率问题。空间可以在continuation闭包中分配,而不是在执行堆栈上分配,但这没有什么区别


    (同样,这与语言是否具有函数性无关。)

    您是否只讨论递归函数?是的。我说的只是递归函数。所以,你们说的是连续传递方式不能解决空间效率问题。尾部递归函数能解决空间效率问题吗?或者您可以为初学者详细介绍一下吗?尾部调用优化可以防止不必要的调用堆栈增长。不多不少。它对必要的堆栈增长无能为力,而且它肯定不会“解决空间效率问题”。