[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: meta-comment on typing

This page is part of the web mail archives of SRFI 77 from before July 7th, 2015. The new archives for SRFI 77 contain all messages, not just those from before July 7th, 2015.

John.Cowan wrote:
Per Bothner scripsit:

It's a choice bwteeen:
(define (square-sum (x :: <flonum>) (y :: <flonum>))
 (+ (* x x) (* y y)))
(define (square-sum x y)
 (fl+ (fl* x x) (fl* y)))
If you have type specifiers, you don't need the separate operation
names.  And type specifiers are much to be preferred.  After all
if Scheme is a teaching language, we want to encourage our students
to use type declarations, I think.

Unless you want to add overloading to Scheme, you have just pushed off the
problem from the predefined names to the user-defined names, as the above
will need to be complemented by a version of square-sum that does fixnums.

Huh?  You're comparing apples and oranges.  The srfi-77 version:
(define (square-sum x y)
  (fl+ (fl* x x) (fl* y)))
doesn't do fixnums either.  Perhaps I misunderstand your point.

Yes, another advantage of type declarations is that one *can* (somewhat
more readily) add overloading (as Kawa and some other Scheme dialects
do).  But that's not what I'm arguing for.

My argument is that:
* Adding optional type declarations to Scheme is desirable for a number
of reasons, not just performance - or overloading.
* Once one has optional type declarations, the need for type-specific
arithmetic primitives is reduced or eliminated.
* As a matter of style, I believe type declarations are preferable to
type-specific arithmetic primitives, especially since Type Declarations
are Good in themselves.
	--Per Bothner
per@xxxxxxxxxxx   http://per.bothner.com/