Fre*_*ind 4 type-systems scala pattern-matching
在scala和其他一些语言(Haskell,SML)中,我们可以使用模式匹配,例如:
val user: Option[User] = findUser(123)
user match {
case Some(u) => ...
case _ => ...
}
Run Code Online (Sandbox Code Playgroud)
我对模式匹配和类型系统的关系有一些疑问:
更新:
感谢@Eran的回答.
我知道有很多语言不支持模式匹配,比如c/c ++/java/python/ruby/javascript/lisp(我可以在这个列表中添加"bash"吗?)
如果我们想为它们添加"模式匹配",理论上可以添加哪些语言?在任何情况下,哪些语言都无法做到?
我假设你的意思是一般的值的模式匹配.字符串模式匹配(正则表达式)的特殊情况通过几乎任何语言的库函数得到支持.
模式匹配和类型检查策略是独立的语言"功能".模式匹配是将值与模式匹配并且成功匹配然后绑定到变量的过程.如果在编译时或运行时强制执行类型检查,则类型系统是静态的或动态的.
语言可以具有这两种功能的四种组合中的任何一种,例如:
切线地,我发现模式匹配实际上可以用作计算的基础非常有趣.你可以搜索Barry Jay的模式演算工作,如果这会激起你的好奇心.