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

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • PhoneArena

    PhoneArena

    7 NİSAN 2006
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009