Bu soru Haskell fonksiyonları ile ilgili her türlü argümanı alabilen teorik bir sorudur. İşlevin tür imzalarıyla işlevler arasında bir fark var mı?
a -> b -> a
ve
c -> a -> c
somutlaştırılıyor mu? Herhangi bir yardım takdir.
Bu soru Haskell fonksiyonları ile ilgili her türlü argümanı alabilen teorik bir sorudur. İşlevin tür imzalarıyla işlevler arasında bir fark var mı?
a -> b -> a
ve
c -> a -> c
somutlaştırılıyor mu? Herhangi bir yardım takdir.
Yanıtlar:
Fark yok. Yana a, bve cbir ile başlamak küçük harf , bunlar değişkenlerin . Değişkenleri yeniden adlandırabilirsiniz ve iki (veya daha fazla) değişken " çakışmadığı " sürece bu aynı kalır .
Bu tür çakışmalar, bir değişkeni başka bir değişkenle aynı ada sahip olacak şekilde yeniden adlandırırsanız veya iki (veya daha fazla) değişkeni aynı yeni adla yeniden adlandırdığınızda oluşabilir. Değişkeni aörneğin bilk kod parçanızda yeniden adlandırırsanız , o zaman alacağız b -> b -> b, ancak bu aynı değil, çünkü o zaman ilk ve ikinci parametrenin aynı tipte olmasını zorunlu kılıyoruz. Oysa tip imzanızda, aynı olabilecek iki tür seçme özgürlüğüne sahibiz, ancak bu gerekli değildir .
Hayır! Düşünün a -> b -> aolarak This Type -> Another Type -> This Type. Sonra her ikisi de verilen desene uyuyor. Bununla birlikte, a -> b -> cuygun olmayacak bir şey : This Type -> That Type -> Yet Another Type(genellikle) farklıdır; c = aİlgilendiğiniz deseni veren kenar durumu hariç .