29 ms·
Evaluation also becomes easy this way, using Horner's method: https://en.wikipedia.org/wiki/Horner%27s_method#Python_implementation https://en.wikipedia.org/wik
by rzzzt 8y ago
Evaluation also becomes easy this way, using Horner's method: https://en.wikipedia.org/wiki/Horner%27s_method#Python_implementation https://en.wikipedia.org/wiki/Horner%27s_method#Python_imple...
- jakear 8y agoSomething along the lines of this right? eval = v [] => 0 v x:xs => x + v * eval v xs You do have to love how clean definition by cases makes these sorts of things.
- abecedarius 8y agoBut this doesn't argue for the low-to-high order, because of reversed(). This code would be simpler and faster with the coefficients in the opposite order.
- rzzzt 8y agoYou're right, the process does start from the higher coefficients, and so does not really support the ordering presented. You either need to use foldr to defer the multiply-and-add until the end of the list is processed, or reverse the list before processing it.