次のタイプを手動で派生させたい:
f1 x xs = (filter . (<)) x xs
を初めて見x
たので、次のようになります。
x :: t1
次に(<)
、このタイプがあります:
(<) :: Ord a1 => a1 -> a1 -> Bool
(< x)
次のタイプを統合できる場合にのみ言えます。
t1 ~ a1
それで
x :: a1
そう
(<x) :: Ord a1 => a1 -> Bool
フィルタにはこのタイプがあります
filter :: (a2 -> Bool) -> [a2] -> [a2]
xs を見るのは初めてなので、
xs :: t2
(filter . (<)) x xs
次のタイプを統合できる場合にのみ言えます。
a1 -> Bool ~ a2 -> Bool
t2 ~ [a2]
したがって、正しいタイプが(GHCiに尋ねる)の場合f1 :: (a2 -> Bool) -> [a2] -> [a2]
、 と同じタイプのが得られます。filter
Ord a => a -> [a] -> [a]
何か助けはありますか?