SORU
15 EYLÜL 2011, PERŞEMBE


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
15 EYLÜL 2011, PERŞEMBE


Çü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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GWTLecturer

    GWTLecturer

    18 EKİM 2012
  • Maschine Tutorials

    Maschine Tut

    15 ŞUBAT 2011
  • Wii Minute Radio

    Wii Minute R

    31 Mayıs 2008