Gerhard Navratil wrote:
> I need a library that provides partial derivatives for functions. The
> solution I came up with is based on a datatype using reversed polish
> notation to store the function:
>
> <<lots of code>>
>
> The solution works but is not very elegant. The complete module is
> appended to the mail.
>
> Does anyone have a more elegant solution or is there a package that
> provides derivatives in a similar way?

A simple way to make it more ellegant is to use smart constructors, so you don't have to check to prevent zeroes everywhere:

> sub :: Fkt a -> Fkt a -> Fkt a
> sub a b
>   | b == 0    = a
>   | a == 0    = Neg b
>   | otherwise = Sub a b
> -- etc.

Now you can use this smart constructor instead of the real constructor without worry, like:

> derivative name (Sub a b) = sub (derivative name a) (derivative name b)
> -- etc.

Twan
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to