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/)(它不是唯一的實現方式) –