Benefits of moving from Python to Common Lisp?

Marco Antoniotti marcoxa at cs.nyu.edu
Mon Nov 12 19:11:19 CET 2001


tfb+google at tfeb.org (Tim Bradshaw) writes:

	...

> `Standardising a library' for a single-implementation language is a
> near-trivial task: you write the library and declare it a standard.
> 
> Standardising a library for a multiple-implementation language is
> *not* trivial - in fact its very difficult indeed.  It costs a lot of
> money to do it - the kind of money that is probably just not available
> outside the C++/Java/XML camps, where huge amounts of money has been
> spent on standardisation.  Even this huge amount of money has often
> resulted in very poor standards.  The CL community has a very *good*
> standard, and lacks the kind of huge money needed to generate other
> standards, let alone other standards of comparable quality.

These are very good points.

Let's take an example of what may illustrate the difficulties the CL
community faces w.r.t. the "single-implementation/single-standard"
language communities.

The ANSI standard does not specify a function for "splitting"
strings.  Maybe an historical oversight, yet that is the way things
are.

It turns out that it is very easy to write such a function (not only:
it is easy to write it in such a way that it operates on every CL
`sequence'). The signature may look like:

	(defun split-sequence (sequence
                               &key
                               (separators (list #\Space))
                               (start 0)
                               (end nil)
                               (test #'eql)
                               (from-end nil))
               ...)

Now: to get this into the "standard" is out of the question.
To get this to run in every implementation (some commercial,
some DFSG compliant, some public domain) is easier.
To ensure that upon fring up you CL you can do

	your-cl-prompt> (split-sequence "I am a string")
        ("I" "am" "a" "string")
        your-cl-prompt> (split-sequence (vector 1 2 3 0 5 6 7 0 9)
                                        :separators '(0)
                                        :test #'=
                                        :start 4)
        (#(1 2 3 0) #(5 6 7) #(9))

is an entirely different community issue.

Of course you may judge this state of affairs severely or not.  It is
just the ways things are.

Cheers

-- 
Marco Antoniotti ========================================================
NYU Courant Bioinformatics Group        tel. +1 - 212 - 998 3488
719 Broadway 12th Floor                 fax  +1 - 212 - 995 4122
New York, NY 10003, USA                 http://bioinformatics.cat.nyu.edu
                    "Hello New York! We'll do what we can!"
                           Bill Murray in `Ghostbusters'.



More information about the Python-list mailing list