On Mon, Mar 26, 2012 at 8:29 AM, Andrew Robbins <[email protected]> wrote: > Why stop there? Why remove only complex notation, when you can get rid > of nasty rational notation too!
Good question. If I had my way, I would remove the rational notation too, but I'll keep one target on lock at a time. Firstly, complex number notation is much more sophisticated than rational number notation. Just look at the rules for each. Secondly, the "+" in the complex number notation is supposed to emulate the mathematical notation "a+bi". Having taught Scheme, some students wonder why they can't do "5i+3". "+" is of course a commutative operation, and so this kind of confusion arises. The same doesn't happen with "/". Some also wonder why "4+3" doesn't work, especially since it's a valid identifier. Lastly, there's a good reason to have this #c(a b) syntax that is a little deeper than a convenient lexical change. Consider constructing a macro which will generate code for a fixed-length power-of-2 FFT. When computing an FFT of size N, you're going to need the primitive N-th roots of unity. For less math savvy people, you're going to need *constant* complex numbers which apply in the algorithm. Now, obviously, you can use MAKE-COMPLEX, but this does not give any guarantee that the constants are going to be folded. In fact, if you're generating code in a LAMBDA, then there is a much less chance of this happening, since LAMBDA is a way to delay computations. It would be much easier if the notation for complex numbers (and therefore rationals) welcomed easy construction of literals. -Robert Smith _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
