加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 模式匹配和类型系统之间的关系是什么?

发布时间:2020-12-16 18:12:43 所属栏目:安全 来源:网络整理
导读:在 scala和其他一些语言( Haskell,SML)中,我们可以使用模式匹配,例如: val user: Option[User] = findUser(123)user match { case Some(u) = ... case _ = ...} 我对模式匹配和类型系统的关系有一些疑问: “静态类型系统”是否必须支持模式匹配? 有没有“
在 scala和其他一些语言( Haskell,SML)中,我们可以使用模式匹配,例如:

val user: Option[User] = findUser(123)
user match {
    case Some(u) => ...
    case _ => ...
}

我对模式匹配和类型系统的关系有一些疑问:

>“静态类型系统”是否必须支持模式匹配?
>有没有“动态类型系统”语言支持模式匹配?

更新:

感谢@Eran的回答.

我知道有很多语言不支持模式匹配,比如c / c / java / python / ruby?? / javascript / lisp(我可以在这个列表中添加“bash”吗?)

如果我们想为它们添加“模式匹配”,理论上可以添加哪些语言?在任何情况下,哪些语言都无法做到?

解决方法

我假设你的意思是一般的值的模式匹配.字符串模式匹配(正则表达式)的特殊情况通过几乎任何语言的库函数得到支持.

模式匹配和类型检查策略是独立的语言“功能”.
模式匹配是将值与模式匹配并且成功匹配然后绑定到变量的过程.
如果在编译时或运行时强制执行类型检查,则类型系统是静态的或动态的.

语言可以具有这两种功能的四种组合中的任何一种,例如:

> C/C++ / Java是不支持模式匹配的静态类型语言.
> Haskell / Scala是支持模式匹配的静态类型语言.
> Icon是一种支持模式匹配的动态类型语言.
> JavaScript是一种动态类型语言,不支持模式匹配.

切线地,我发现模式匹配实际上可以用作计算的基础非常有趣.你可以搜索Barry Jay的模式演算工作,如果这会激起你的好奇心.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读