foldr :: (a->b->b)->b->[a]->b
(!!)::[c]->Int->c
Run Code Online (Sandbox Code Playgroud)
从那我们得到a->b->b=[c]->Int->c
或a=[c],b=Int,b=c.
我们得出结论,foldr(!!)的类型是Int->[[Int]]->Int.
这是对的吗?
WinGHCi告诉我一些不同的东西:
Prelude> :t foldr (!!)
foldr (!!) :: Foldable t => Int -> t [Int] -> Int
Run Code Online (Sandbox Code Playgroud)