代码之家  ›  专栏  ›  技术社区  ›  Rob Lachlan

命令式语言中可以使用哪些函数式语言技术?

  •  6
  • Rob Lachlan  · 技术社区  · 17 年前

    通常与函数式语言相关的哪些技术或范式也可以在命令式语言中有效地使用?

    • 在没有尾调用优化的语言中,递归可能会出现问题,将其使用限制在少数情况下,因此其用处有限

    4 回复  |  直到 17 年前
        1
  •  11
  •   Charlie Martin    17 年前

        2
  •  6
  •   Brian    17 年前

    • 如果语言不支持 lambda/闭包 ,而且没有任何句法糖可以轻易破解它,你就死定了。你不能在没有闭包的情况下调用map/filter。
    • 你死在水里了。所有好的FP都使用通用性。
    • 如果语言不支持 你受到了阻碍。你可以迭代地编写例如“map”的实现;此外,您的数据可能不会太大,递归也可以。
    • 如果语言不支持
    • 好吧,好吧。..你会过得去的,但该死的是,这不仅是有史以来最棒的功能,而且Haskell是唯一一种支持良好的远程流行语言。
        3
  •  3
  •   Kyle Cronin    17 年前

    没有一流的函数真的会阻碍编写函数式程序,但有一些事情你可以做而不需要它们。第一种方法是避免可变状态——尽量让大多数或所有类返回表示修改状态的新对象,而不是在内部进行更改。例如,如果你正在编写一个带有 add 而不是修改对象。

    虽然这可能会使你的程序效率降低(由于创建和销毁的对象数量增加),但你将能够更容易地调试程序,因为对象的状态和操作变得更加可预测,更不用说能够更深入地嵌套函数调用,因为它们有状态输入和输出。

        4
  •  3
  •   Norman Ramsey    17 年前

    我成功地使用了很多高阶函数,尤其是传入的函数而不是返回的函数。返回的类型可能有点乏味,但可以模拟。

    各种应用性数据结构和递归函数在命令式语言中都能很好地工作。

    我最怀念的事情:

    • 几乎没有命令式语言能保证优化每个尾部调用。

    • 据我所知,没有一种命令式语言支持通过模式匹配进行案例分析。

        5
  •  0
  •   klausnrooster    14 年前
    推荐文章