2011-04-06 41 views
10

我目前正在試圖找出我的程序的哪些方面可以通過scala編譯器進行靜態類型檢查。在閱讀this question後,我想出了類型設計模式的概念。我覺得讓我的頭腦滿意Scala的類型系統可能是非常複雜的。所以我想看看實際的用法(不是peano算術或類似的東西)。簡單的模式經常以正常的代碼重新出現。靜態類型檢查的設計模式

有沒有人知道任何博客,甚至書籍處理這個問題?最好在Scala中,但對其他語言也可能有用。

+0

爲什麼標記爲Haskell?這些鏈接可能很有用:http://blog.ezyang.com/2010/08/type-kata-controlled-sharing-of-references/和http://blog.ezyang.com/2010/08/type- kata-newtypes/ – 2011-04-06 13:30:29

+0

@Edward因爲Scala的類型系統似乎與Haskell的類型系統類似,並且可能爲Haskell(已經存在更長的時間)傳輸到Java的模式。 – ziggystar 2011-04-06 14:06:00

+0

@愛德華我認爲這是有效的,因爲Scala的類型系統最冒險的實驗似乎來自Haskell背景的人,例如, Rúnar的博客和斯卡拉茲人。 – 2011-04-06 14:16:36

回答

6

我認爲最值得稱道的「設計模式」之一是「幻像類型」技術。這是一種或多或少有系統的方式來編碼靜態信息的類型參數。看一些例子:

您還可能有興趣在一個相關的奧列格wondertrick:Lightweight static capabilities(與仲傑山)。

+1

[Scala中的幻像類型](http://james-iry.blogspot.com /2010/10/phantom-types-in-haskell-and-scala.html) – ziggystar 2011-04-06 14:55:11

2

你可能看the design advice for Haskell,具體而言,一些對嵌入強大的性能成爲類型系統更近的研究論文:

  • 把咖喱霍華德上班 蒂姆·謝爾德,2005年ACM論文集關於Haskell的SIGPLAN研討會。塔林,愛沙尼亞,74 - 85,2005
  • 通過表達類型的基於語言的程序驗證 Martin Sulzmann和Razvan Voicu。編程語言符合程序驗證(PLPV'06)
  • 函數式編程的鍵入合同 Ralf Hinze,Johan Jeuring和Andres Loh。
  • Haskell中的輕量級信息流安全性庫 A Russo,K Claessen,J Hughes。

這裏還沒有標準的方法,雖然有許多很好的個別問題的例子。