Cześć, mam nadzieję, że znajdzie się tu ktoś kto zna się troszkę na Haskellu, bo mam pytanie do wnioskowania typów w tym języku, mianowicie, przy zabawie z prostymi funkcjami napisałem takie coś:
f9 x | x > 0 = "True"
| x < 0 = "False"
| otherwise = "Coś ty tu wpisał :O "
niby prosta funkcja (jej sens nie jest ważny), następnie poleceniem :t sprawdziłem jej tym, i ukazało mi sie:
f9 :: (Ord a, Num a) => a -> [Char]
i tu się pojawia moje pytanie - dlaczego mamy tam krotkę?
Wygląda to tak, jakby jedna zmienna miała dwa typy. Według mnie powinno być bardziej coś typu:
f9 :: Ord a => a -> [Char]
ponieważ po prostu porównujemy zmienną x i to jest jedyna rzecz którą z nią robimy.