Ben sadece oldukça hantal bir şekilde İdris 0.9.12 sıralamasını-n türlerini yapabilirsiniz: İdris ayrıştırmak atar çünküİdris
tupleId : ((a : Type) -> a -> a) -> (a, b) -> (a, b)
tupleId f (a, b) = (f _ a, f _ b)
Ben, bir tür uygulama var her yerde çizgi ihtiyaç
tupleId : ({a : Type} -> a -> a) -> (a, b) -> (a, b) -- doesn't compile
bir olasılıkla daha büyük bir sorun ben hiç yüksek rütbe türlerinde sınıf kısıtlamaları yapamaz şudur: hatalar ı (iç içe) yapmak örtülü argümanları yazmaya çalıştığınızda. Ben İdris'e aşağıdaki Haskell işlevi tercüme edemez:
appShow :: Show a => (forall a. Show a => a -> String) -> a -> String
appShow show x = show x
Bu aynı zamanda Haskell Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
olduğu Lens
gibi türleri için tip eş anlamlı olarak İdris fonksiyonlarını kullanarak engelleyen.
giderilmesi veya yukarıdaki sorunları aşmak için herhangi bir şekilde?
Benim YAPILACAKLAR listemde var ... sonunda bu konuda bir şeyler yapacağız. Şaşırtıcı bir şekilde, bunun için çok fazla talep olmamıştı, açıkçası güzel olurdu. örtülü argümanlar doğru almakla bazı trickiness yoktur, bu yüzden şimdilik oldukça basit bir yaklaşım aldık. Tipi sınıfları birinci sınıf, bu nedenle sınıf kısıtlamaları yapmak için hantal bir yol da var - Normal işlev parametresi olarak onları tedavi ve açıkça örneğini bulmak için '% örneğini kullanabilirsiniz. –
@EdwinBrady teşekkürler, bunu bir cevap olarak kabul ediyorum (ya da öyle bir cevap verdim). –
Henüz uygun bir cevap gibi gelmiyor ... Umarım yakında size geri döneceğim! Benim [google grubuna soruya] bir –