2011-04-06 10 views
10

Şu anda programımın hangi yönlerinin scala derleyici tarafından statik olarak kontrol edilebileceğini bulmaya çalışıyorum. this question'u okuduktan sonra, türler için tasarım kalıpları fikrini buldum. Scala'nın tip sistemi ile mümkün olabileceğine kafamı çekmek için oldukça karmaşık buluyorum. Bu yüzden pratik kullanımlara bakmak istiyorum (peano aritmetik veya bunun gibi şeyler değil). Genellikle normal kodda tekrar görünen basit desenler.Statik tip denetimi için tasarım desenleri

Bu soruyla ilgilenen herhangi bir blog veya kitap bile bilen var mı? Tercihen Scala'da, ancak diğer diller için de yararlı olabilir.

+0

Bunu neden Haskell etiketledi? Bu bağlantılar ilgi çekici olabilir: http://blog.ezyang.com/2010/08/type-kata-controlled-sharing-of-references/ ve http://blog.ezyang.com/2010/08/type- kata-newtypes/ –

+0

@Edward Scala'nın tip sistemi Haskell'in tip sistemine benziyor ve belki de Haskell için (daha uzun süredir var olan) modeller Java'ya aktarılıyor. – ziggystar

+0

@Edward Bunun geçerli olduğunu düşünüyorum çünkü Scala'nın tip sistemi ile yapılan en maceracı deneyler Haskell geçmişi olan kişilerden geliyor gibi görünmektedir. Rúnar'ın blogu ve Scalaz halkı. –

cevap

6

"Tasarım deseni" adını hak edecek en yararlı şeylerden biri bence "hayali türler" tekniğidir. Statik bilgileri bir tip parametresinde kodlamak için daha az veya daha sistematik bir yoldur. Bazı örneklere bakın:

Ayrıca, ilgili Oleg wondertrick ilginizi çekebilir: Lightweight static capabilities (Chung-chieh Shan ile).

+1

[Scala'daki phantom türleri] (http://james-iry.blogspot.com /2010/10/phantom-types-in-haskell-and-scala.html) – ziggystar

2

Sen the design advice for Haskell bakmak olabilir ve özellikle yazın sisteme güçlü özelliklere gömme hakkında daha yeni araştırma makaleleri bazıları: Tim Sheard 2005 ACM Tutanaklarının

  • Curry-Howard koymak Çalışma Haskell üzerinde SIGPLAN atölyesi. Tallinn, Estonya, 74 - 85, 2005
  • Anlatım Tipleri Üzerinden Dil Tabanlı Program Doğrulama Martin Sulzmann ve Razvan Voicu. Programlama Dilinde Program Doğrulama (PLPV'06)
  • Fonksiyonel Programlama için Yazılı Sözleşmeler Ralf Hinze, Johan Jeuring ve Andres Loh. Haskell'de Hafif Bilgi Akışı Güvenliği için Bir Kütüphane A Russo, K Claessen, J Hughes.

Henüz bir standart metodolojiye rastlanmamakla birlikte, birçok bireysel sorun örneği vardır.

İlgili konular