Я пытаюсь написать что-то подобное в Haskell (.):Как использовать в Haskell
length . nub . intersect
, но он не работает.
*Main Data.List> :t intersect
intersect :: Eq a => [a] -> [a] -> [a]
*Main Data.List> :t nub
nub :: Eq a => [a] -> [a]
*Main Data.List> :t length
length :: [a] -> Int
В зависимости от типа, я понимаю, что intersect
возвращает тип [a]
и жертвует nub
, который занимает ровно тип [a]
, то также возвращает тип [a]
к length
, затем, наконец, возвращение должно Int
. Что с этим не так?
На самом деле, 'intersect' возвращает тип' [а] -> [а] '. '((длина. нуб).). intersect' будет делать то, что вы хотите, но мое понимание здесь слишком слабое, чтобы ответить. – Franky
см. Также: http://www.haskell.org/haskellwiki/Pointfree#Dot –