DatatypeContexts Son DZD İtiraz: Neden?
Sadece bazı Haskell geliştirme yapıyordum ve DZD yeni bir sürümü: bazı eski kod çekirdekler
The Glorious Glasgow Haskell Compilation System, version 7.2.1
Ve ben yaptığımda aşağıdaki hatayı aldım:
-XDatatypeContexts önerilmiyor: yaygın olarak daha eklenmemiş bir özellik olarak kabul edildi, ve Haskell dili kaldırılmıştır. uyarı:
Bu aşağıdaki biçimde kod varsa görüntülenir:
data Ord a => MyType a
= ConstructorOne a
= ConstructorTwo a a
Benim soru: Neden bu özellik ilk etapta kaldırılmış ve yerine aynı veya benzer işlevselliği elde etmek için ne yapacağım ben?
CEVAP
Çünkü kaldırılmışoldudaha eklenmemiş bir özellik, aslında yoktuvaryararlı bir işlevi! Tek yaptığı diğer yerlerde ekstra kısıtlamaları bir sürü güç oldu. Özellikle, ne zaman, desen eşleştirme gibi bir tip, ne zorla Ekle kısıtlaması yerine, (bir umut belki başlangıçta) erişmek için bir bağlam, temel bilgi tek olmalı mevcut yapı değeri ilk başta.
"Yedek" aslında başka bir şekilde çalışır ve sizin için bilinen kapsamları parçaları olan, use GADT-style declarations instead:
data MyType a where
ConstructorOne :: Ord a => a -> MyType a
ConstructorTwo :: Ord a => a -> a -> MyType a
Genel olarak GADTs ne yani bu özel durum için pek çok başka şekillerde de, ama daha esnekoluşturmabir değeri değer tarafından taşınır Ord
kısıtlama, ihtiyaç ve yapıcı üzerinde desen eşleştirme dışarı geri çeker. Hatta tip 7 ** hakkında bir şeyler bekliyor gereği ile Ord a
bir kısıtlama alacaksın bunu biliyorsun çünkü işlevleri kullanmayı kapsamında gerek yok.
Neden tek bir bağımsız değişken (dönüş...
Neden sıralanmamış bir dizi daha hızlı...
Neden bu iki kez (1927) garip bir sonu...
Neden HTML düşün” renk? “chucknorris m...
Neden Google while(1); JSON yanıtların...