Функция отображения из списка в данные

Я смотрю на изменение пакета hnn для поддержки различных функций активации для каждого node в сети.

В частности, эта строка и эта строка использует определенную функцию (активацию), но я пытаюсь чтобы расширить это, чтобы поддержать что-то вроде:

evalNet [email protected](Network{..}) inputs activations = do
    s <- foldM (\x -> computeStepM n x (activations!!N)) state inputsV

где N - id/index node.

В настоящее время я являюсь этапом, когда у меня есть список функций активации той же длины, что и количество узлов в сети.

Мне нужна помощь (поскольку я потерян в исходном коде пакета), чтобы найти способ применения функции Nth activations в списке.

EDIT: я пробовал подход StateT, используя tick (из документации) и используя zip функцию, обе дают несколько исполнений за каждый шаг, поэтому окончательный результат становится неправильным

Ответ 1

Для карты вам может понадобиться нечто вроде

as = [(+1),(*2),(+(-3))]
xs = [4,5,6]
main = print $ zipWith ($) as xs

Сложность сложнее, но может быть выполнена с использованием той же идеи: Zip входы с соответствующими функциями активации и сменой функции сложенной для использования значений входящих кортежей.

Однако, я сомневаюсь, что вам действительно нужно/нужно изменить сгиб. Если я не ошибаюсь, фолд должен просто перейти к списку функций активации. Так что на самом деле делать нечего.