kullanarak "güvenli liste" için kuyruk fonksiyonu a GADT walkthrough üzerinden okuyordum ve alıştırmalardan birine takılı kaldım. Belirli bir veri yapısı şöyledir:GADTs
{-# LANGUAGE GADTs, EmptyDataDecls, KindSignatures #-}
data NotSafe
data Safe
data MarkedList :: * -> * -> * where
Nil :: MarkedList t NotSafe
Cons :: a -> MarkedList a b -> MarkedList a c
egzersiz bir safeTail
fonksiyonunu uygulamaktır.
safeTail (Cons 'c' (Cons 'a' (Cons 't' Nil))) == Cons 'a' (Cons 't' Nil)
safeTail (Cons 'x' Nil) == Nil
safeTail Nil -- type error (not runtime!)
(Aslında ==
tanımlamak yoktu, ama umarım ne demek istediğimi açık)
bu
yapılabilir: Ben Preludetail
işlevine benzer hareket etmek istiyorum? Türün ne olabileceğinden emin değilim ... belki de
safeTail :: MarkedList a Safe -> MarkedList a NotSafe
?
Not. Dolaylı olarak beni bu "böcek" e götüren için teşekkür ederim. – duplode
Sanırım kabul ettiğin kişi de ilginç olsa bile yanlış cevabı kabul ettin. Egzersiz, veri tipini değiştirmeye davet etmiyor. –