var mı, varsayılan bir birim türü var, yani(). Ben örneğin bir polimorfik biri (tercihen Hackage olarak) arıyorum: belkiHaskell'de varsayılan bir polimorfik birim türü
data PUT a = PUT
veya polimorfik sıfır türü:
data PZT a = PZT (PZT a)
Yani evet, bir tane kendim yazabilirim, her iki tarafından Yukarıdaki ifadeler. Korsanlıkta bir tane arıyorum.
ben onlardan biri kullanmayan bir işlev içerir birden tip parametreler ile bir sınıf var çünkü ihtiyacım nedeni: GHC olamaz, bu işlev "bir_işlev" kullanılırken
class MyClass a b where
someFunction :: a
-- and some other functions
Ben bir_işlev çağırdığınızda
class MyClass a b where
someFunction :: (PUT b) -> a
Şimdi, ilk argüman olarak (PUT :: sometype) kullanabilir ve Haskell demek hangi örneği türetebilirsiniz: sağ örneğini bulmak, bu yüzden benim tanımını değiştirdi. Bu numarayı her kullanmamda, yeni bir polimorfik birim türü yazdım (bu sadece bir kod satırı), bu da bana farklı kütüphaneleri birleştirirken biraz fazladan iş verir (çünkü tercihen her yerde aynı kurucuyu kullanırdım). Diğer insanların bu soruna karıştığından emin olabilirim, belki de biri hackage (ghc'nin paket yöneticisi) bir çözüm getirdi? Onu almak istiyorum. Yanlış şeyi mi araştırıyorum yoksa hackage'de yok mu?
"Polimorfik sıfır tipi" ile karıştırıldım. Unutulmamaları dışında, Void'in olduğu gibi, ıssız bir tür anlamına gelmesini beklerdim. Ama PZT türünüzün bir değerini, p = PZT p' ile ifade edebilirim ve üzerinde kalıp eşleşmesi yapabilirim, ya PZT ile ne demek istediğimi yanlış anladım, ya da PZT'niz bir değil. Bir polimorfik Void'i daha basit bir şekilde kurabilirsiniz, elbette ki: “Veriler a'dan kaçın”. – amalloy
Orada bir eğlenceye ihtiyacın yok mu? MPTC'ler için çıkarımda yardımcı olur. –
Gerçekten böyle bir şeye ihtiyacınız yok. aşağıdakiler de çalışır: birFonksiyon :: (fb) 'class Sınıfım ab -> a' f hakkında hiçbir bilgi olmadığı için (o Uygulanabilir değil veya bir şey), o Not bu orada anlamı için bir yol yoktur Tam olarak ihtiyacım olan b'ye git. – Sebastiaan