4
在Scala和其他一些语言(Haskell中,SML),我们可以使用模式匹配,如:模式匹配和类型系统有什么关系?
val user: Option[User] = findUser(123)
user match {
case Some(u) => ...
case _ => ...
}
我对模式匹配和类型系统的关系的一些问题:
- 是“静态类型系统”必须支持模式匹配吗?
- 有没有“动态类型系统”语言支持模式匹配?
更新:
感谢@叶兰的答案。
我知道有许多语言不支持模式匹配,像C/C++/JAVA /蟒蛇/红宝石/ JavaScript的/口齿不清(我能“庆典”添加到这个列表?)
如果我们想为他们添加“模式匹配”,哪种语言可以在理论上添加它?什么语言在任何情况下都无法做到?
如果我们想在c/C++/java/javascript中添加“模式匹配”功能,理论上有可能吗? – Freewind
理论上,是的。但事情往往会迅速升级。想想如果你想添加模式匹配并保持静态类型检查(提示:你需要以某种方式增强编译过程),你需要做什么。 – Eran
@Eran [不仅在理论上](http://www.bramstein.com/projects/funcy/)(它不是唯一的实现方式) –