[Top][All Lists]

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

Re: [PATCH] Fix the R6RS exact-integer-sqrt and import into core guile

From: Noah Lavine
Subject: Re: [PATCH] Fix the R6RS exact-integer-sqrt and import into core guile
Date: Mon, 11 Apr 2011 19:02:37 -0400

You make good points, but I disagree. I think the ideal for Guile
should be a situation where C and Scheme can be used basically
interchangeably, with Guile providing the glue in between.

A situation like that would certainly lead people to write as much as
possible in Scheme, because if C and Scheme are really interchangeable
then all you gain by writing in C is extra verbosity. But people might
still have things written in C, maybe because the program was
originally written in C and is slowly adding in Guile bits. Maybe
someone needs to write parts of the program in C because Guile is
still not as fast as statically-compiled C code, but would like to use
exact_integer_sqrt in that C code.

Therefore I think we should provide a convenient way to access as much
of Guile's functionality from C as possible. Things like continuations
might be quite difficult, and I think no one would blame us if C code
couldn't use those, but generally useful functions like
exact_integer_sqrt should certainly be available.

I do see your point about C functions being difficult to maintain, but
I think they are no more difficult to maintain than Scheme functions -
either way, we introduce a function, and then we must make sure that
the function with that name has the same functionality for a while.
(Except that Scheme supports versioned libraries. But I think we don't
currently use that feature, so it is irrelevant.) It would be nice to
have a more flexible way of interfacing C and Scheme things, but this
is the interface we currently have, so I think we should go ahead and
support it as much as we can.


> Although I'm more a passive observer on this mailing list, I still want
> to add a little bit to this discussion.  Personally I very much embrace
> and support this "write Scheme rather than C" stance being taken by some
> of the project maintainers.
> Although it is an obvious truth, it helps to remember that no project
> can serve all wishes of each and every developer.  As a consequence it
> is clear that a project has to make a choice of direction of where it
> wants to _lead_.  This direction should of course reflect the needs of
> the project itself, i.e. maintainability, testability, documentability,
> etc.
> One should also be aware that the APIs offered can severly influence
> people in their own designs.  Let's face it, most developers (including
> myself) are rather lazy and try to do as little changes as possible
> _even_ if larger changes would be _positive_ for the work as such.  A
> project _can_ (and I'd say should) force people at least to think about
> such changes by publicly offering more clean abstractions.  A project
> can surely transport a message to new users this way.
> And please, let us not try to consider theoretical needs of potential
> guile users but rather concentrate on the needs of the guile maintainers
> and current users.  The time to discuss things which can negatively
> influence maintainability and testability is the time when an actual
> potential user comes along, not earlier.
> As a side example, think of how the Linux kernel would have dissolved to
> be an unmaintainable nightmare if every system call suggested on the
> mailing list would have been adopted.  A project is well advised _not_
> to follow each and every cry of every developer.  That's because crying
> is easy, but maintaining ain't ;)
> Ok so much for my "bystander view".  Thanks for listening.
>  Detlev
> --
> These days, even the most pure and abstract mathematics is in danger
> to be applied.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]