Bu belki de çok basit bir sorudur, ancak yine de, SO üzerinde kapsanmış gibi görünmemektedir.Haskell- (Tip bildirimi) "a" nedir?
Geçenlerde Haskell aldı ve şu ana kadar beyanlar oluşuyordu yazın çoğunlukla aşağıdaki:
Int
Bool
Float
etc, etc
Şimdi listeler halinde alıyorum ve ben böyle aşağıdaki işlevinde olarak a
kullanmak türü bildirimleri, görüyorum o bir ilişkisel listesini yineler:
contains :: Int -> [(Int,a)] -> [a]
contains x list = [values | (key,values)<-list, x==key]
birisi bu a
ne olduğu bir açıklama, ve nasıl çalıştığı miyim? Gözlemden, her türü temsil ediyor gibi görünüyor. Bu, herhangi bir türün herhangi bir listesini parametre olarak girebileceğim anlamına mı geliyor? Belirli bir tip imzası tüm a
ler aynı türe çözmesi gerektiğini olmak kısıtlama -
Daha da önemlisi, 'a' özel değil: * herhangi bir küçük harfli tanımlayıcıyı ifade eder. Bu bir type * değişkenidir * ve aynı imzada birden çok farklı türde değişken bulunması mümkündür. Örneğin, 'const :: a -> b -> a', her birinde her türden iki argüman alır ve ilk girdisi ile aynı türde bir değer döndürür. – amalloy
Görüyorum, onun çok genel benzeri. Yani, çoğu durumda, '' 'genellikle fonksiyonumun gerçekten kullanmadığı ya da çok fazla değişmediği öğeleri temsil eder. – Bolboa
@Bolboa: Evet, diğer dillerdeki "jenerikler" kavramıyla yakından ilişkili. Ve evet, eğer tür tamamen jenerik ise, doğrudan değerin kendisinde yapabileceğiniz çok az şey vardır. Haskell, tür hakkında daha fazla bilgi vermenin bir yolunu sunar (örneğin, "eşitlik için karşılaştırılabilir", "yazdırılabilir", "bir sayı gibi ele alınabilir"), böylece değerler üzerinde daha fazla işlem yapabilmenizi sağlar ; Bu konuyla ilgileniyorsanız, dokümantasyonda veya derslerde "sınıflar" a bakın. – psmears