From: Tim Bradshaw on
On 2010-01-12 11:06:01 +0000, John Thingstad <jpthing(a)online.no> said:

> You are a strange one. Where did you get that idea?

It was designed as a language for embedded applications, and to be
smaller and simpler than C++. Features were intentionally left out
(such as MI) despite being well-understood by some of the designers at
least. This can't be contentious.

> Mathematica is probaly the most carefully designed language I have ever
> encountered. Immencly powerfull. Plenty of mistakes sure. Interprented
> when it should have been compiled. Then handeling of local variables and
> modules seem the reverse of what they should be. They default to global.

I'm not even going to argue about this, I'll just mention that I was
particularly entertained that Module works just the way you get taught
that things can work when you learn lambda calculus at school. But,
you know, no one actually does that, do they?

>
> And.. What's wrong with reduce?

It's a fine system, but Standard Lisp is kind of old now (it's the Lisp
I first used in fact) and is missing a lot of features one might want
now. From my perspective the main problem is lack of an integrated
environment for playing in.

From: Tim Bradshaw on
On 2010-01-12 13:18:12 +0000, Pillsy <pillsbury(a)gmail.com> said:

> No DEFPACKAGE forms. No SHADOW or SHADOWING-IMPORT. No easy way to
> distinguish between what we CLers would call internal and external
> symbols except if you do the goofy workaround with having a
> "`Private`" subcontext, and the fact that as soon as the Mathematica
> reader interns a symbol for you, it's helpfully exported. People
> complain about the CL package system, but it could be oh so much
> worse.

Yeah, and the equivalent package use list is a *global variable*.
Hello, Earth calling?

> I use Mathematica for my day job. I could literally go on like this
> for hours. Once you get the hang of it you get used to it, and there
> are enough things that work right that it's productive to work in. But
> you feel like you're passing through a small New England town in an HP
> Lovecraft story. Sure, it may be oozing lovely Colonial architecture,
> but the people have freaking *gills*, man.

That is *exactly* it.

From: Tim Bradshaw on
On 2010-01-12 14:15:29 +0000, Tamas K Papp <tkpapp(a)gmail.com> said:

> Mathematica is a DSL that later realized that it wants to grow up and
> attempt to become a more general language.

It is that, of course. But it's actually worse: it just reeks of being
designed by someone who *did not consider it worth his time to actually
learn about how other languages did things* because he knew that he
would not need to know that as he was so smart. Unfortunately the kind
of mistakes you make in programming language design are not
particularly related to how academically clever you are, because
programming language design is much closer to woodwork than
mathematics: it just takes generations for people to work out how to do
stuff right.

From: russell_mcmanus on

Norbert_Paul <norbertpauls_spambin(a)yahoo.com> writes:

> Hello,
>
> I have defined a class where a slot *must* be initialized when creating
> instances:
>
> (define-condition modular-ring-without-generator (algebraic-error) () )
>
> (defclass 'modular-ring (ring)
> ( (ring :initarg :ring :initform (make-instance 'ring) )
> (generator :initarg :generator
> :initform (error (make-condition
> 'modular-ring-without-generator ) ) ) ) )
>
> which works, as HyperSpec says that initform is not evaluated when
> the user specifies an initial form in make-instance:
>
> So (make-instance 'modular-ring) signals the above error, whereas
> (make-instance 'modular-ring :generator 7) creates Z/7Z.
>
> Is there a standard way in CLOS or are there standard LISP-idioms
> to get a similar behaviour? I couldn't find in HyperSpec how slot
> initialization can be made mandatory.

What you wrote is a fine implementation of your requirements, as far as
I can tell.

-russ
From: Robert Uhl on
Tamas K Papp <tkpapp(a)gmail.com> writes:
>
> Mathematica is a DSL that later realized that it wants to grow up and
> attempt to become a more general language. It has many flaws, but
> generally, the failure of DSLs to become a nice general languages is
> almost uniform. Consider STATA, Gauss, R, ...

....Perl...

It wasn't a bad text-munging language when it was basically next-gen
awk. It grew antennae, fangs and poisounous hair when it tried to do
anything more.

--
Robert A. Uhl
`We're ten parsecs from Regina, we've got a full tank of LH-two, a half
pack of cigarettes, I've dimmed the lights, and we're wearing sunglasses.'
`Let's jump.' --Leslie Bates