gpt4 book ai didi

scala - 为什么命令式语言没有模式匹配?

转载 作者:行者123 更新时间:2023-12-04 23:21:29 25 4
gpt4 key购买 nike

因此,函数式语言中的模式匹配非常棒。我想知道为什么大多数命令式语言都没有实现这个功能?据我了解,Scala 是唯一具有模式匹配的“主流”命令式语言。案例/开关结构的功能就没有那么强大了。

我特别感兴趣的是,模式匹配的缺失是技术原因还是历史原因?

最佳答案

这主要是历史性的。模式匹配——更重要的是,代数数据类型——是在 1980 年左右为函数式语言 Hope 发明的。从那里它很快进入了机器学习,后来被其他函数式语言如 Miranda 和 Haskell 采用。主流的命令式世界通常需要几十年的时间来接受新的编程语言思想。

特别阻碍采用的一个原因是主流长期以来一直由面向对象的意识形态主导。在那个世界里,任何不是由对象和子类型表达的东西在道德上都被认为是“错误的”。有人可能会争辩说,代数数据类型是一种对立面。

也许还有一些技术原因使它在函数式语言中更自然:

  • 规则范围规则和变量的细粒度绑定(bind)结构是函数式语言的规范,但在主流命令式语言中不太常见。
  • 尤其如此,因为模式绑定(bind)了不可变的变量。
  • 类型检查模式匹配依赖于功能类型系统的结构和刚性,以及它们与计算逻辑的密切联系。主流类型系统通常与此相去甚远。
  • 代数数据类型需要堆分配(除非您想浪费大量空间并禁止递归),并且如果没有垃圾收集会非常不方便。但是,主流语言中的 GC(如果存在)通常针对重量级对象进行优化,而不是针对轻量级函数数据进行优化。
  • 关于scala - 为什么命令式语言没有模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067231/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com