@Dickfore: Maxima is one of the more common opensource computer algebra systems out there.
@HotMintea: I've never really used Maxima much - apart from via Sage.
The problem in your code is that the right hand side does not get evaluated until the definition is used. This is a problem because it has to recalculate the derivative everytime AND it gives an error when called with a number:
Fx(2) --> diff(F(2), 2) --> error
The second issue (the error) can be solved by localizing the derivative variable then substituting in the value, e.g.
Fx(x):=block([y], subst([y=x], diff(F(y),y)));
But then Maxima has to go through that whole mess everytime the derivative Fx is called. A better solution is to use the construct:
Fx(x) := ''(diff(F(x),x));
I found most of this on the thread
http://www.math.utexas.edu/pipermail/maxima/2007/004706.html
It seems that there aren't many Maxima users on this forum. Maybe the above mailing list (
http://maxima.sourceforge.net/maximalist.html) would be a better place if you have questions. Also try
http://stackoverflow.com or one of the Sage forums such as
http://ask.sagemath.org or
https://groups.google.com/forum/#!forum/sage-support