Neden ghci tür listeleri ve tür aileler desugar mu? Bu seçici devre dışı bırakılabilir mi?
Bu tür kütüphaneler benim için görüntüler mümkün olduğunca sezgisel ghci yapmaya çalışıyorum, ama daha gelişmiş özellikleri kullanırken birçok zorlukla karşılaştım.
Hadi bir dosya içinde bu kodu var:
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
import GHC.TypeLits
data Container (xs::[*]) = Container
Ben ghci kadar yükleyin, sonra aşağıdaki komutu yazın:
ghci> :t undefined :: Container '[String,String,String,String,String]
Ne yazık ki, ghci bana oldukça çirkin görünümlü verir:
:: Container
((':)
*
String
((':)
* String ((':) * String ((':) * String ((':) * String ('[] *))))))
ghci türü seviye dizeleri şeker kaldırıldı. Bunu ve bana çok sürümünü vererek ghci önlemek için herhangi bir yolu var mı?
İlgili bir kayda göre, sağlar Replicate
fonksiyon türü bir düzeyde oluşturmak demek
data Nat1 = Zero | Succ Nat1
type family Replicate (n::Nat1) x :: [*]
type instance Replicate Zero x = '[]
type instance Replicate (Succ n) x = x ': (Replicate n x)
type LotsOfStrings = Replicate (Succ (Succ (Succ (Succ (Succ Zero))))) String
Bir tür LotsOfStrings
kullanarak ghci sorduğumda şimdi:
ghci> :t undefined :: Container LotsOfStrings
ghci güzel ve bana çok sonuç verir:
undefined :: Container LotsOfStrings
Ama eğer Replicate
d sürümü için soruyorum
ghci> :t undefined :: Container (Replicate (Succ (Succ (Succ (Succ (Succ Zero))))) String)
ghci yerine yazın eşanlamlı bunu gelmeyince türü Aile için:
:: Container
((':)
*
[Char]
((':)
* [Char] ((':) * [Char] ((':) * [Char] ((':) * [Char] ('[] *))))))
Neden ghci türü Aile yerine, ama yazın eşanlamlı yapıyor? Bir şekilde ghci yerine, her zaman kontrol etmek için var mı?
CEVAP
Senin üretime günlüğü cd
dizin uygulama içeren ve bu iki komutları yürütmek için hedef sunucu/.
1. Son sürüme sıfırlayın
git reset --hard HEAD
2. Değişiklikleri çekin
git kökeni usta çekin
Nasıl yabancı anahtar kısıtlamaları ge...
Böyle büyük mükafat olarak bir sınıfı ...
Neden tüm Raylar yardımcıları tüm görü...
Seçici bir çeviri birimi sadece bir kı...
UI yetkisiz eylemler gizli, devre dışı...