I've made a fraction-based calculator, for simplifying rational expressions (written in ANSI-C using vi)
I was aiming to merge a scientific calculator with "bc", because I often need to simplify various fractions and whatnot. Quite happy with the result!
Uses shunting yard algorithm to evaluate the expressions, and a naive descent parser (I think?) to tokenise
Aside: OpenBSD's "editline" is very easy to use
Please ask any questions :)