On Tue, Feb 17, 2009 at 11:17:36PM -0800, Brian Harvey wrote: > > What makes you think that mathematicians would vote against > > multiple return values? > > Oh, because actual functions only have one value; that's what makes them > functions rather than relations.
Well, maybe, but scheme functions are already also functionals, and even mathematical functions may have multi-dimensional results. There's a limit to the usefulness of that sort of purity, (or rather, analogue) isn't there? We're realy dealing in the realm of computability and algorithms, rather than domains and ranges. Algorithms can certainly produce multiple results that one wouldn't want to restrict to being elements of a vector. When you want to be able to both factorise and package algorithms in terms of "functions" that transform arguments (and state) into results (and state), then a single result is firmly in the realm of a limitation that should be removed, in my book. > That's why I said "mathematician" and not "theoretician," which some of the > responses to my message seem to have thought I meant. 'Spose that makes me neither. I can live with that. > Seems to me that all > the great programming languages are built on mathematical ideas rather than > computer science ideas. We have Lisp (functions), APL (vectors), > Prolog (relations), and ISETL (sets). > > As others have said, this seems like a funny way to divide us. I view > myself as a Scheme user, not a theoretician and certainly not an implementor, > but couldn't care less about records or modules, still less Unicode. So you don't care if records and modules are available, and if Unicode is handled competently and transparently? > I care > about teaching students the power of the idea that programming languages > should be designed, not by piling feature on top of feature, but by removing > the restrictions that make additional features appear necessary. (That's > from memory, so probably not quite right. :-) I enjoy explaining why we > don't need to invent Scheme++. > > If there's a division, it's probably between industrial users and academic > users. Maybe implementors are a third camp; I'm not sure. There's not a place for large-system design and large-team software engineering practice? Even if many (or most?) real software projects are small-ish and undertaken by individuals or small groups, they typically use modules and libraries created over time by other people, which amounts to the same thing. You may have to deal with someone revising the interface to the graphics library that you are using to teach your junior students, from time to time. > Should there be one language for both? No; there should be Common Lisp for > the industrial users and Scheme for the academic users. Common Lisp is all well and good, but I can't see any reason why scheme isn't good enough (perhaps with the odd tweak), too. If it isn't, then doesn't that show the scheme mantra to be a lie? > Anyway, I'm glad to have precipitated some actual discussion -- it's been > awfully quite on the list since the electors were invited to join it! :-) Actual discussion has been great so far. Cheers! -- Andrew _______________________________________________ r6rs-discuss mailing list [email protected] http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss
