Для присваивания я работаю над списком функций [Int → Int]
(например, [(+3), (*4), (+1)]
), и я хотел бы применить один Int
к каждому из них, в свою очередь, создавая список результатов [Int]
Я уже много искал, но я не могу найти способ сделать такую операцию. Использование map
не работает так, как я ожидал. Связанная с этим ошибка:
ERROR - Cannot infer instance
*** Instance : Num ((Label -> Label) -> a)
В соответствии с запросом код:
data Tree = Node (Label -> Label) Label [Tree]
type Label = Int
testTree = Node (+1) 3 [ Node (+1) 5 [], Node (+1) 4 [Node (+1) 1 [], Node (+2) 7 []]]
listify :: Tree -> [(Label -> Label)]
listify t = [(getNodeFunction t)] ++ concat(map (listify) (getSubTrees t))
*Main> map (\f -> f 7) (listify testTree)
это действительно работает. Если бы кусок неисправного кода в файле все еще, извините за суету.