這是a follow up to a previous question: I got an answer I didn't really understand and accepted。所以,我再問一遍:多態類型的顯式類型簽名。第二部分
我還是不明白這是有道理的:
type Parse a b = [a] -> [(b,[a])]
build :: Parse a b -> (b -> c) -> Parse a c
build p f inp = [ (f x, rem) | (x, rem) <- p inp ]
現在,很明顯,p
結合Parse a b
類型的第一個參數。而且,顯然f
綁定到第二個參數(b -> c)
。我的問題仍然是inp
綁定到什麼?
如果Parse a b
是一種代名詞[a] -> [(b,[a])]
我從最後一個問題想我可能只是用它替換:
build :: [a] -> [(b,[a])] -> (b -> c) -> [a] -> [(c,[a])]
不過,我不認爲這使得任何意義或者與定義:
build p f inp = [ (f x, rem) | (x, rem) <- p inp ]
有人會幫助解釋類型同義詞。
回答4點環繞聲! – luqui 2010-10-24 03:58:17