With guile (and a few other Schemes/Lisps) you can directly add fractions or rational numbers: (+ 1/2 1/12) => 7/12 It's like magic, no? Anyway, I'm trying -- for educational purposes -- to reproduce this functionality. But right out of the blocks I'm stuck trying to figure out how to handle incoming parameters. So far I've got (define (myrat a b) . . .) (define (myrat a b c d) . . .) where numerator and denominator are given separately, as well as (define (myrat . fracparams) . . .) which still has my basic problem, namely, can one parameter hold both parts of a rational number, then allow the numerator and denominator to be peeled off and worked on, i.e., something like (let ((num1 numepeeler(a)) (denom1 denompeeler(a) LB