programming-languages - 默认情况下不可变的编程语言?

标签 programming-languages

是否存在默认情况下“变量”是不可变的(const、final 等)的编程语言?

而且,要使其可变,您需要声明一个额外的不可变限定符 ?

最佳答案

Functional Programming的理念范式非常适合所有“变量”都是不可变的,而“可变”变量只允许在极端情况下(即,对于 I/O)。因此,大多数函数式编程语言都喜欢各种 Lisp 方言和 Haskell 将(通常情况下)强化不可变的变量。当然,有些语言比其他语言提供了更多的灵活性,但中心范式/哲学仍然存在,这阻碍了它。

编辑:响应您的编辑:

如果您正在寻找具有更友好常量的 C,那么采用全新的编程范式不是您的解决方案。在函数式编程中,一切是不可变的(在大多数情况下),并且您通常会看到一种全新的基本哲学和编程方法。

如果您只想更轻松地声明常量,这并不是真正的解决方案。

编辑2:回应人们对我的评价:

虽然我做对了(我希望)回答了提问者的问题,但鉴于他的新编辑/评论,我不确定这是一个有用的答案。但是,我希望能够让他睁开眼睛看到一个全新的美丽编程世界 =)

Edit3:这里是Wikipedia's List函数式编程语言:

  • APL
  • 慈善(纯功能)
  • 清洁(纯功能)
  • 卷发
  • curry
  • 二郎
  • F#
  • Haskell(纯函数式)
  • 卡尔
  • J
  • 乔伊
  • 风筝
  • Lisp
  • Clojure
  • Common Lisp
  • 迪伦
  • 小b
  • 标志
  • 方案
  • 茶叶
  • 郁郁葱葱
  • Mathematica
  • 米兰达
  • 机器学习
  • 标准ML
  • 爱丽丝
  • Ocaml
  • 迷迭香
  • Nemerle
  • 蛋白石
  • OPS5
  • 流行博客
  • 电话
  • REFAL
  • 罗素
  • 斯卡拉
  • 电子表格

  • 这些语言中的大多数都有一些非功能性异端的次要元素/影响;标记为“纯功能”的则没有。

    (据我所知,函数式编程语言是唯一在哲学上鼓励不可变变量的语言。默认情况下,可能有些语言具有不可变的变量,而范式不是函数式的。这个概念对我来说听起来很奇怪,但我可以”考虑到那里有大量、大量、大量的编程语言,不保证一揽子“永远不会”声明。我只想说,据我所知,这是极不可能的)

    一位评论者建议 艾达 是一种默认情况下具有不可变变量的命令式/面向对象的编程语言。

    关于programming-languages - 默认情况下不可变的编程语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3137082/

    相关文章:

    algorithm - 每种算法的最佳时间复杂度要求?

    programming-languages - 谁决定将哪些功能纳入语言?

    scala - Scala 中的参数省略/推理

    javascript - 您希望 Javascript 在浏览器之外得到广泛使用吗?

    c - 如何在 include 语句中包含

    assembly - 为什么我的代码总是在第 2 行出现比较失败,我该如何解决这个问题?

    programming-languages - 这是什么语言?

    javascript - 类型和 OO 耦合了吗?

    programming-languages - 为什么任何数据类型的大小都取决于机器?

    variables - 什么类型的变量包含一个范围?