8
reflection
paketYansıma riski tutarsızlık mı?
reify :: a -> (forall s . Reifies s a => Proxy s -> r) -> r
Verilen bir sınıf
class Reifies s a | s -> a where
reflect :: proxy s -> a
ve bir işlev sunan tek bunlar, tek olabilir oldukça kötü örneğin örneğini
instance Reifies s Int where
reflect _ = 0
vererek berbat etmek
Bu, örneğin
için kötü olurdu yasal olarak 1 (normal yansıtma işlemi aracılığıyla) veya 0 (reify
uygulanmadan önce geçilen işlevi uzmanlaştırarak) üretebilir. Gerçekte, bu özel istismarın,numaralı telefona bir
Reifies
örneğinin dahil edilmesiyle engellenmesi gerektiği görülmektedir. Tanımladığım kötülük örneği örtüşen olarak reddedilecek. Çakışan örnekler etkinleştirilirse, uzmanlaşmanın örtüşen belirsizlik nedeniyle uzmanlığın engellenebileceğine inanıyorum.
Yine de, bunu, GADT'lerin veya bazılarının yardımı ile gölgeli bir örnekle ortaya çıkarmanın bir yolu olup olmadığını merak ediyorum.
Hmmm: Bazı müdahalesi sonrasında iyi yolu ben tutarsızlık verecek şekilde şaşırtıcı olmayan yeterli olan
reflect
INCOHERENT
kullanılan kaçırma ile gelebilir Fonksiyon nihayetinde 'reify' 'a geçmiştir. Eve gittiğimde bunu deneyeceğim. – dfeuer@dfeuer bunu denediniz mi? –