2013-06-04 6 views
1

Я довольно новичок в Haskell и пытаюсь это решить некоторое время.Haskell - Передача каждого элемента массива с другим параметром в функцию

У меня есть функция:

sumNodeError :: Node -> Layer -> Double 
sumNodeError node childLayer = foldl (+) 0 (listProduct (weights node) (errors childLayer)) 

calculateNodeError :: Node -> Layer -> Double 
calculateNodeError node childLayer = (sumNodeError node childLayer) * (value node) * (1.0 - (value node)) 

-- problem is in this function 
calculateErrors :: Layer -> Layer -> Layer 
calculateErrors layer childLayer = Layer (nodes layer) 
             (map calculateNodeError (nodes layer) childLayer) -- problem, need to map each of the nodes in the layer, and the childLayer to calculateNodeError 
             (teacherSignals layer) 
             (learningRate layer) 

Я нуждаясь пройти каждый (nodes layer) и childLayer функционировать calculateNodeError

Остальная часть кода (который не так много), можно найти здесь, если вам необходимо: https://github.com/kennycason/haskell_nn/

Большое спасибо.

ответ

5

Держи

(map (\n -> calculateNodeError n childLayer) (nodes layer)) 
+0

Огромное спасибо, что сработало, я даже не подозревал, что могу сочинить такую ​​функцию! :) –

2

Вот еще одно решение.

map ((flip calculateNodeError) childLayer) (nodes layer) 
Смежные вопросы