map関数がわからん
使うだけなら簡単なんだけど、型の宣言がつじつま合わないというか
とにかく納得できない

ふつうのHaskellプログラミングみながら勉強してんだけど
ここで3〜4日停滞してる

square n = n * n
map :: (a -> b) -> [a] -> [b]
map square [1, 2, 3]

この場合の「map関数」の宣言、最初の「a」が「square関数」を指しているのか?
@(a -> b)の部分で「square 1」「square 2」「square 3」と計算して
A???