В Haskell я определил функцию фильтра, которая принимает два аргумента и возвращает Bool, т.е.
myFilter :: a -> b -> Bool
Я определил функцию, которая принимает один аргумент и возвращает список, т.е.
myFunction :: a -> [b]
Аргумент myFunction принимает тот же аргумент, что и myFilter, а элементы списка, выводимого myFunction, того же типа, что и второй аргумент myFilter, т. Е.
myFunction a = [b]
myFilter a b = Bool
Я хочу определить другую функцию, myFilteredFunction,
myFilteredFunction :: a -> [b]
Это принимает один аргумент a
, тот, который и myFilter, и myFunction это, и возвращает подмножество [b]
, которое включает только элементы, которые удовлетворяют предикату, установленному myFilter, то есть, что фильтрует выходные данные myFunction, используя myFilter. Это кажется таким простым делом, и все же я не смог заставить его работать (я новичок в Haskell)!
Некоторые из опций, которые я пробовал, которые, очевидно, не работают:
myFilteredFunction = myFilter . myFunction
myFilteredFunction' = filter myFilter . myFunction
myFilteredFunction'' = myFilter . (map myFunction)
Я вижу проблему в том, что myFilter принимает два аргумента, а две другие функции принимают только один ... очень полезная помощь.