Hector,
That line is declaring a function named 'f' of two arguments: one is 'w', and the other is a tuple. The tuple's fst is 'inputs', and its snd is 'expected.' This function (f) is used in the next line, in the declaration of the list 'newWeights,' which uses f as the function which does the fold over the allInputs list.
Cheers,
- Tim
Hi cafe,
I'm trying to implement a Perceptron in Haskell and I found one in: http://jpmoresmau.blogspot.com/2007/05/perceptron-in-haskell.html (Thanks JP Moresmau) but there is one line I don't understand, I was wondering if someone could explain it to me. I know the theory behind a perceptron, my question is more about the Haskell syntax in that line I don't understand.
epoch :: [([Float],Float)] -> -- ^ Test Cases and Expected Values for each test case
[Float] -> -- ^ weights
([Float],Float) -- ^ New weights, delta
epoch allInputs weights=
let
f w (inputs,expected) = step inputs w expected -- I don't understand this line
newWeights = foldl f weights allInputs -- Neither this one
delta = (foldl (+) 0 (map abs (zipWith (-) newWeights weights))) / (fromIntegral $ length weights)
in (newWeights,delta)
What is f and what is w? I really don't get it, Is like it is defining a function f which calls step unziping the input, taking one of the elements from the fst and it's corresponding snd and invoking step with that, along with w (which seems to be a list according to step's signature but I don't know where it comes from), and then applying fold to the weights and all the Inputs using that f function... But I don't get it!
Maybe if someone could rewrite that redefining f as an separate function and calling fold with that function I'll get it.
The input for epoch would be something like this:
epoch [([0,0],0),([0,1],0),([1,0],0),([1,1],1)] [-0,413,0.135]
and the output for that examples is:
([0.0,412.9],3.333537e-2)
Thanks a lot,
Hector Guilarte
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe