【问题标题】:Are there dynamically-typed functional languages?有动态类型的函数式语言吗?
【发布时间】:2018-01-24 20:23:58
【问题描述】:

这本质上与这个问题相反:Are there statically-typed functional languages?

该问题中提到的唯一动态类型函数语言是“Lisp 家族语言(Common Lisp、Scheme、Clojure)”。

还有其他动态类型的函数式语言吗?

【问题讨论】:

  • 您提到的所有语言都不是纯粹的功能性语言。您可以使用大多数语言以功能方式进行编程,并且键入和范例并没有真正结合得那么紧密。你也有松散和严格的类型,其中 LISP 是严格的,而 JavaScript、Perl 和 PHP 是松散的,因为如果你尝试添加一个数字和一个字符串,LISP 将需要显式转换,而在松散的语言中会发生魔法,你可能不喜欢答案.
  • 函数式编程不依赖于特定的类型系统。严格类型系统只是保证在运行时不会发生某种类型的错误。要以函数方式使用,语言只需要一等/高阶函数。
  • Groovy 是候选人。 Smalltalk,恕我直言,也是候选人。

标签: types functional-programming programming-languages dynamic-typing


【解决方案1】:

Erlang 是一种主要是函数式语言(尽管不是纯粹的函数式)并且是动态类型的。

许多其他语言在某种程度上支持函数式编程并具有动态类型系统:

  • Clojure
  • 闲聊

...仅举几例。这些语言的主要特点是:

  • 函数是第一类(可以作为值传递)
  • 数据大多是不可变的
  • 引用透明函数(即函数不会改变状态)。

大多数实用语言仍然支持一些命令式构造,当函数式范式不适合问题时(许多经典数据结构需要状态突变。等价的函数式结构并不总是可用)或性能有利于数据突变时,可能会使用这些命令式结构就地。

【讨论】:

    猜你喜欢
    • 2011-12-30
    • 2011-09-12
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多