Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 126 - 150 of 241 - Collapse all  -  Translate all to Translated (View all originals) < Older  Newer >
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Christopher C Stacy  
View profile  
 More options May 7 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Christopher C Stacy <cst...@world.std.com>
Date: 1999/05/07
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])

Dobes Vandermeer <do...@mindless.com> writes:
> More important issues are things like packaging; many lisp environment
> do not compile executables

Huh?  Both major commercial Common Lisp vendors (for Windows and UNIX)
have compilers that produce executables.  At least one of them can also
produce DLLs.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Newbie questions [Followup to comp.lang.lisp]" by Kent M Pitman
Kent M Pitman  
View profile  
 More options May 7 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/07
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

I'm not sure this was meant to be a question, but if so, the answer is,
I think, "no".

(shadow 'defun)
(defmacro defun ... stuff involving cl:defun ...)

Making the syntax be (foo integer) is bad, though.
There is an issue a lot of people don't talk about but that many of
us old-timers know which is that Meta-. (definition lookup in Emacs/Zmacs)
really wants the cadr position of definition forms to be "names".
Unless you're planning to make dispatch dependent on the return value
(which you can really only do in a strongly typed language and which
I'd argue is conceptually ill-defined even then), then (foo integer)
is not the name.  A better syntax is
 (defun foo ((list cons) (x integer) ... &return integer) ...)

Btw, DEFSTRUCT violates the rule about the CADR being just a name
and causes lots of problems in text editors.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])" by Kent M Pitman
Kent M Pitman  
View profile  
 More options May 7 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/07
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])
Christopher C Stacy <cst...@world.std.com> writes:

> Dobes Vandermeer <do...@mindless.com> writes:
> > More important issues are things like packaging; many lisp environment
> > do not compile executables

> Huh?  Both major commercial Common Lisp vendors (for Windows and UNIX)
> have compilers that produce executables.  At least one of them can also
> produce DLLs.

Maybe he only meant to say "many lisp environments produced for casual
use are suitable only for casual use, and only those lisp environments
that intend to be commercial quality address this commercial concern".
;-)

I agree. Quite a lot of Lisp implementations address this issue, some
in more turnkey ways than others.  That some implementations don't is
merely a commercial choice--if those implementations find a following,
their users presumably are able to cope without this.  At some point
maybe they'll add the feature too, or maybe they'll lose customers.
That's the way the market works.  The market is intentionally and
appropriately pluralistic.  Saying that some implementation doesn't
suit your need is just saying you should be shopping; saying no
implementation suits your need is just saying there's a market
opportunity waiting for you.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Newbie questions [Followup to comp.lang.lisp]" by Mike McDonald
Mike McDonald  
View profile  
 More options May 7 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: mike...@mikemac.com (Mike McDonald)
Date: 1999/05/07
Subject: Re: Newbie questions [Followup to comp.lang.lisp]
In article <sfwaevgebl2....@world.std.com>,
        Kent M Pitman <pit...@world.std.com> writes:

> Making the syntax be (foo integer) is bad, though.
> There is an issue a lot of people don't talk about but that many of
> us old-timers know which is that Meta-. (definition lookup in Emacs/Zmacs)
> really wants the cadr position of definition forms to be "names".

  That sounds like a pretty poor reason. It's not that hard to get emacs to
take the car if the cadr is a list. In zemacs, you'd just have your new defun
macro make a call to that function that registers the definition. (Sorry I
can't remember the name of it and my Schema sources are off line at the
moment.)

  Mike McDonald
  mike...@mikemac.com


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Reasons for rejecting CLOS" by Joachim Achtzehnter
Joachim Achtzehnter  
View profile  
 More options May 7 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Joachim Achtzehnter <joac...@kraut.bc.ca>
Date: 1999/05/07
Subject: Re: Reasons for rejecting CLOS

Dobes Vandermeer <do...@mindless.com> writes:

> CLOS provides a world view where we have extended functions to
> overload based on the class of its operators.

You mean 'operands' presumably? The function itself is the operator
according to conventional use of these terms.

> The object abstraction of data and methods has been lost;

It has not been lost. In fact, it is much stronger than in most OO
languages. In typical use, all access to an object's state is via
functions, called accessors. The client of a class doesn't have to
know whether an attribute is stored as data (corresponding to a C++
data member), or is computed by a function. the implementation can be
changed from data member to function and vice versa without affecting
clients.

Lisp doesn't enforce information hiding in the same strict manner that
C++ does, which is simply a different philosophy. It has nothing to do
with abstraction, though. Also note that classes are not the primary
tool for information hiding in Lisp. Lisp uses classes as types, and
packages for modularity.

> CLOS methods are not methods, but functions,

C++ methods are also functions. Just think about it a little more:
When you call a C++ (non-static) method the outcome is a function (in
the mathematical sense) of the target object and all other method
arguments. C++ syntax simply puts one of the function arguments in a
different place from others. The argument singled out in this way is
the one used for dynamic dispatch. Note, that nobody would have
proposed using this syntax if the more general case of multiple
dispatch had been considered from the start.

> and CLOS does not protect encapsulated data from the "outside world"
> of functions and methods.

Common Lisp lets you circumvent abstraction layers if you insist, but
this is also true in C++, just requires a little more
effort. Abstraction doesn't require dictatorial enforcement.

> A "better" object world view would allow for only acessing fields in
> the object directly inside of methods for the object, thus providing
> the mystical "encapsulation" that is currently underpromoted in
> CLOS.

You may not realize that CLOS accessors are, in fact, methods. You can
choose not to generate any accessors, in which case the corresponding
slots are not considered part of the class' interface.

Encapsulation is not underpromoted, Lisp simply takes the more general
view that methods can be sent to more than one object. Look at binary
functions: the natural way to express the semantics of the binary
function + doesn't single out one argument over the other. In C++ and
other single-dispatch languages one must awkwardly make such functions
methods of one or the other argument.

> The syntax, although it is often trivialized by many people, is also
> fairly important.

Syntax is a metter of taste.

> In a LISP function call, all arguments are weighted equally, and so
> you are led to think about specialising based on any or all of the
> parameters.

Yes. why, in general, would you want to force us to single out one of
them?

> And object-oriented version, i.e. "(send-msg-to obj (do-something a
> b c d))" shows you which object is being operated upon,

But sometimes you operate on more than one!

> and although you could (easily) still specialize on the remaining
> variables (i.e. a b c and d) to call a different method,

Not as easily as you make it out, it is certainly much more painful
than with multiple dispatch. And on this point the whole issue of
covariant argument redefinition raises its head, you may want to read
some of the heated discussions in comp.lang.eiffel on this topic. As I
mentioned before, even Stroustrup believes multiple dispatch is a good
feature to have.

Joachim

--
joac...@kraut.bc.ca      (http://www.kraut.bc.ca)
joac...@mercury.bc.ca    (http://www.mercury.bc.ca)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Newbie questions [Followup to comp.lang.lisp]" by Kent M Pitman
Kent M Pitman  
View profile  
 More options May 7 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/07
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

mike...@mikemac.com (Mike McDonald) writes:
> In article <sfwaevgebl2....@world.std.com>,
>    Kent M Pitman <pit...@world.std.com> writes:

> > Making the syntax be (foo integer) is bad, though.
> > There is an issue a lot of people don't talk about but that many of
> > us old-timers know which is that Meta-. (definition lookup in Emacs/Zmacs)
> > really wants the cadr position of definition forms to be "names".

>   That sounds like a pretty poor reason. It's not that hard to get emacs to
> take the car if the cadr is a list. In zemacs, you'd just have your new defun
> macro make a call to that function that registers the definition. (Sorry I
> can't remember the name of it and my Schema sources are off line at the
> moment.)

I don't agree.  It's not just Emacs but all potential programs that
operate on this.  And it's not just cadr, but a table that the program
would have to magically have and which there is no mechanism to
provide.

On the Lisp Machine, there is an elaborate protocol for informing the
system of how to extract the name from the other stuff.  But
I have to say that I think it's infinitely better just to have that
be unnecessary.

Lisp has gotten a huge amount of its power not out of "picking the
best or most interesting way to do things" but out of "picking a known,
predictable way of doing something".  The power comes NOT from the goodness
of the choice, but from the lack of infinite quibbling over it.
I claim that this is an example of such.  Pushing for a change is
pushing for a life of infinite quibbling.

Don't accept that taking cadr to get the name is the right thing because
we've always done it that way.  Accept that we've always done it that way
because it's really the right thing.

JMO.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Pierre R. Mai  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: p...@acm.org (Pierre R. Mai)
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

Paul Rudin <pa...@shodan.demon.co.uk> writes:
> Yes, picking your own syntax is fine up to a point, but other code may
> have used the same syntax for a differnt purposes and you then run
> into problems if you want to combine your code with such.

But with Vassil's solution, the package system would solve those
problems for you[1], whereas with reader-macros, you'd have to do
much more to keep out of trouble.

The only problem the package system can't solve IMHO is that code
not written by you will most likely not have the amount of type
declarations you'd like, which in some circumstances will weaken
your implementation's ability to do type-inference and type-checking
considerably.  But short of changing the standard to require type
declarations, no solution will help you here.  Of course you can
still declaim ftype's for those functions from the outside, but I'd
consider this practice fairly rude...

BTW: Vassil's syntax (optionally extended to allow specifiying a
return type) is not a lot of work to implement, since you can most
probably snarf a defun-lambda-list-parser from either CMUCL or PCL.

Regs, Pierre.

Footnotes:
[1]  In fact I'd claim that this area of use is one of the main
strengths of the package system. See the Symbolics Lisp machines,
which for a long time had a large number of different dialects
available at the same time, in the same address space...

You'd just define a package "RUDIN-CL", which would import&re-export
all the CL symbols, with the exception of defun&co., which would get
their own definitions in RUDIN-CL.  In fact in a previous discussion
some time ago, Tim Bradshaw posted a nice macro, which makes the task
of defining dialect packages a lot nicer.  Just search via DejaNews
for Message-ID <ey3g1frs0wc....@todday.aiai.ed.ac.uk>.

--
Pierre Mai <p...@acm.org>               http://home.pages.de/~trillian/
  "One smaller motivation which, in part, stems from altruism is Microsoft-
   bashing." [Microsoft memo, see http://www.opensource.org/halloween1.html]


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Pierre R. Mai  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: p...@acm.org (Pierre R. Mai)
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

Sam Steingold <s...@goems.com> writes:
> what about optional arguments with default values?

It is still possible to do this a long those lines, but IMHO it gets a
bit messy:

(defun myfun ((a double-float) &optional ((b double-float) 0.0d0) (x 0.1d0))
  (* a b x))

The same might apply to &key args, &aux and even &rest, if one so
likes.  One could even extend the syntax to allow the specification of
a return type:

(defun myfun (integer 42 42) ((a (integer 1 42)) (b (integer 1 42)))
  (* a b))

Regs, Pierre.

PS: I'd agree with anyone who might find the above syntax slightly
perplexing.  I still prefer (declare ...) inside the function body.
The only addition I think would be nice was a "values" declaration
like CMU CL's, which would allow me to declare the return type of my
function within the body as well.

--
Pierre Mai <p...@acm.org>               http://home.pages.de/~trillian/
  "One smaller motivation which, in part, stems from altruism is Microsoft-
   bashing." [Microsoft memo, see http://www.opensource.org/halloween1.html]


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Reasons for rejecting CLOS" by Pierre R. Mai
Pierre R. Mai  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: p...@acm.org (Pierre R. Mai)
Date: 1999/05/08
Subject: Re: Reasons for rejecting CLOS

Dobes Vandermeer <do...@mindless.com> writes:

[other confusions elided]

> The syntax, although it is often trivialized by many people, is also
> fairly important.  In a LISP function call, all arguments are weighted
> equally, and so you are led to think about specialising based on any or
> all of the parameters.  And object-oriented version, i.e. "(send-msg-to
> obj (do-something a b c d))" shows you which object is being operated
> upon, and although you could (easily) still specialize on the remaining
> variables (i.e. a b c and d) to call a different method, the
> message-passing paradigm is preserved.

So in effect you are complaining that CLOS doesn't restrict your world
view enough.  Interesting complaint.  This reminds me of the following
two prayers (see Douglas Adams, Mostly Harmless):

Protect me from knowing what I don't need to know. Protect me from
even knowing that there are things to know that I don't know.  Protect
me from knowing that I decided not to know about the things that I
decided not to know about. Amen.

Lord, lord, lord. Protect me from the consequences of the above
prayer. Amen...

Regs, Pierre.

PS: Hmmm, somehow I get the feeling we are in the middle of another
Turing-Test again.  Craving for restricted world views might be what
AIs dream of at night... ;)

--
Pierre Mai <p...@acm.org>               http://home.pages.de/~trillian/
  "One smaller motivation which, in part, stems from altruism is Microsoft-
   bashing." [Microsoft memo, see http://www.opensource.org/halloween1.html]


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Newbie questions [Followup to comp.lang.lisp]" by Mike McDonald
Mike McDonald  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: mike...@mikemac.com (Mike McDonald)
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]
In article <sfwvhe4e99s....@world.std.com>,
        Kent M Pitman <pit...@world.std.com> writes:

> mike...@mikemac.com (Mike McDonald) writes:
> Lisp has gotten a huge amount of its power not out of "picking the
> best or most interesting way to do things" but out of "picking a known,
> predictable way of doing something".  The power comes NOT from the goodness
> of the choice, but from the lack of infinite quibbling over it.
> I claim that this is an example of such.  Pushing for a change is
> pushing for a life of infinite quibbling.

  I wasn't arguing that the standard should be changed to that but that if one
wanted to make their one "extension", that's a fairly reasonable way to
represent it.

> Don't accept that taking cadr to get the name is the right thing because
> we've always done it that way.  Accept that we've always done it that way
> because it's really the right thing.

  But there is precedance to the CADR being a list, namely DEFSTRUCT.
(Didn't one of the New/Old Flavors also have the CADR to defmethod being a
list at times? Seems like I remember it having somethingto do with specifying
before or after methods. Gnuemacs didn't like them either but a simple hack to
ctags fixed that.)

  Mike McDonald
  mike...@mikemac.com


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]
p...@acm.org (Pierre R. Mai) writes:

> Sam Steingold <s...@goems.com> writes:

> > what about optional arguments with default values?

> It is still possible to do this a long those lines, but IMHO it gets a
> bit messy:

> (defun myfun ((a double-float) &optional ((b double-float) 0.0d0) (x 0.1d0))
>   (* a b x))

> The same might apply to &key args,

Except that keywords already use this, as in:

 ((lambda (&key ((:fu foo) 3 foo-p)) foo) :fu 4) => 4

so you'd do

 ( ... &key (((:b bee) integer) 3 b-p) ...)
or
 ( ... &key ((:b bee integer) 3 b-p) ... )
or
 &key (bee 3 b-p integer)
but any way you cut it, it's messy... and somewhat inconsistent.

Declaration syntax is less messy, IMO.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])" by m...@spam.not
me  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: m...@spam.not
Date: 1999/05/08
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])
On Fri, 7 May 1999 23:01:39 GMT, Kent M Pitman

<pit...@world.std.com> wrote:
>Maybe he only meant to say "many lisp environments produced for casual
>use are suitable only for casual use, and only those lisp environments
>that intend to be commercial quality address this commercial concern".

Being able to build an executable program which can run
on different computers that don't have Lisp is not just a
commercial concern.  Even if you just want to write
educational software for your kids, you want them to be
able to run it on their own computer.  The reason why most
people never even bother to learn Lisp is because they
perceive it as being an elephant when they want a tiger.
Having to pay $3000 to be able to build simple executable
programs is part of that perception.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Newbie questions [Followup to comp.lang.lisp]" by Erik Naggum
Erik Naggum  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Erik Naggum <e...@naggum.no>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]
* mike...@mikemac.com (Mike McDonald)
| But there is precedance to the CADR being a list, namely DEFSTRUCT.

  don't forget (DEFUN (SETF ...) ...)

#:Erik


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Paul Rudin  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Paul Rudin <pa...@shodan.demon.co.uk>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]
Kent M Pitman <pit...@world.std.com> writes:

OK I didn't express myself clearly. I know that you can modify the
default definition of defun, but I meant for the above to be valid in
the absence of such modification.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])" by Erik Naggum
Erik Naggum  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Erik Naggum <e...@naggum.no>
Date: 1999/05/08
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])
* m...@spam.not
| Being able to build an executable program which can run on different
| computers that don't have Lisp is not just a commercial concern.

  but if you want to run it on such computers, won't they _get_ a Lisp?

  please remember that C executable are _not_ standalone unless you go to a
  very serious effort and bloat your executables tremendously.  the whole
  idea with shared libraries is to capitalize on common parts of what was
  once in a number of executables, and it has made life seriously simpler
  for large libraries.  the idea is no different than what was once done on
  mainframes, with massive amounts of good stuff in the operating system so
  each program wouldn't need it.

  I regard the .fasl files as Lisp's "executables", and the fact that I
  might need to run them from inside a "real" Lisp executable that does
  what would otherwise be shared libraries is a meaningless quibble --
  people seem to accept having to run multiple programs to start their
  applications already.  if it really is such a big deal, making a .fasl
  file become an .exe file that did this on its own seems like such a
  no-brainer I really wonder why people think it's a show-stopper that
  others haven't done it for them.  (yes, I assume this is under Windows
  -- Unix people are used to so much weird shit being "executable", in
  practice whatever the system call execve(2) is happy with.)

#:Erik


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Erik Naggum  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Erik Naggum <e...@naggum.no>
Date: 1999/05/08
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])
* Kent M Pitman <pit...@world.std.com>
| At some point maybe they'll add the feature too, or maybe they'll lose
| customers.  That's the way the market works.  The market is intentionally
| and appropriately pluralistic.  Saying that some implementation doesn't
| suit your need is just saying you should be shopping; saying no
| implementation suits your need is just saying there's a market
| opportunity waiting for you.

  this assumes that the issue in question is sufficiently important that
  the open market will be where the decisions are made.  I'm wary of the
  call for the market to decide issues that are generally irrelevant -- it
  would mean I had to choose from a million different products and would
  spend more time figuring out which irrelevant feature was supported by
  which miniscule vendor's product than it would take to build it on my own
  -- sort of like how the Microsoft third-party market works for people who
  cannot or legitimate refuse to program the incredible insanity Microsoft
  calls products.  to get to the point where the market can satisfy all
  sorts of small issues would mean such a huge demand for stupid things
  that _any_ small issue would get attention.  I don't want a world like
  that.  it's one of the many reasons I don't subscribe to the Microsoft
  world view and its model of competition between umpteen broken things
  that have to be so cheap to make because of the fierce competition they
  could not possibly be of any quality.

  neither competition nor the market are any better than the customers and
  their decisions.  I think the Jenny Jones case is relevant in this regard
  -- to pick randomly from the current news.  there's a _huge_ market for
  talk shows that drag people's personal life into the public despite the
  many bad consequences and the many good reasons not to air such shows.
  the people who ensure that this market exists are ultimately the viewers
  who buy the products that are advertised during those shows, which means
  that the shows exist because of business decisions of the advertisers.
  there are similar remote relationships between most products and their
  markets, and most of the interrelationships between market and marketing
  are amazingly unpalatable and even downright ugly, and the more mass
  market you get, the uglier it gets.

  I'm frankly not sure it's a good idea to call forth these forces without
  a very good grasp of the repercussions.  I prefer to work with the people
  who have already done some significant amount of good work over going off
  and do my own thing (create a new market), or choose somebody else.  only
  if my current vendor does something really stupid that I cannot live with
  will I feel like going elsewhere.  this obviously holds only for products
  whose acquisition carries a meaningful investment with them -- like
  learning to use them or the relationship with the developers.  should the
  acquisition be free of such investment, the cost of choosing something
  else will be low enough that the market will begin to work for small
  issues.  otherwise, it will work only for issues larger than the cost of
  changing product.  and do we really want a competition between products
  so similar that any small issue will be bigger than the cost of changing?

#:Erik


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Newbie questions [Followup to comp.lang.lisp]" by Marco Antoniotti
Marco Antoniotti  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Marco Antoniotti <marc...@copernico.parades.rm.cnr.it>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

Kent M Pitman <pit...@world.std.com> writes:

What about the

 (defun foo (list x)
   (declare (type cons list)
            (type integer x)
            (values integer))
   <body>)

I have always wondered why this is not an accepted solution (modulo
syntax of course). I sort of understand that having simply VALUES as a
'declaration identifier' (3.3.3 ANSI CL) may cause some problems at
the DECLAIM/PROCLAIM level (it wouldn't be clear what the declaration
would apply to), but the idea seems correct.  CMUCL has an
implementation of this scheme.

> Btw, DEFSTRUCT violates the rule about the CADR being just a name
> and causes lots of problems in text editors.

Well, also the

        (defmethod zut :after ((....

wrecks havoc in cl-indent in Emacs.

Cheers

--
Marco Antoniotti ===========================================
PARADES, Via San Pantaleo 66, I-00186 Rome, ITALY
tel. +39 - 06 68 10 03 17, fax. +39 - 06 68 80 79 26
http://www.parades.rm.cnr.it/~marcoxa


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Hrvoje Niksic  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Hrvoje Niksic <hnik...@srce.hr>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]
cba...@2xtreme.net (Christopher R. Barry) writes:

> I believe I remember seeing someone use an infix syntax package (in
> this group?) and it looked something like #I(2 + foo * pi ...).

Yes; the package INFIX written by Mark Kantrowitz supports the obvious
infix notation, as well as a bunch of extensions.  For instance:

> '#I( x^^2 + y^^2 )

(+ (EXPT X 2) (EXPT Y 2))

> '#I(if x<y<=z then f(x)=x^^2+y^^2 else f(x)=x^^2-y^^2)

(IF (AND (< X Y) (<= Y Z))
    (SETF (F X) (+ (EXPT X 2) (EXPT Y 2)))
    (SETF (F X) (- (EXPT X 2) (EXPT Y 2))))

Unfortunately, the license for use is apparently non-commercial:

;;; Copyright (c) 1993 by Mark Kantrowitz. All rights reserved.
;;;
;;; Use and copying of this software and preparation of derivative works
;;; based upon this software are permitted, so long as the following
;;; conditions are met:
;;;      o no fees or compensation are charged for use, copies,
;;;        distribution or access to this software
;;;      o this copyright notice is included intact.
;;; This software is made available AS IS, and no warranty is made about
;;; the software or its performance.
[... warranty disclaimer ...]


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

mike...@mikemac.com (Mike McDonald) writes:
>   But there is precedance to the CADR being a list, namely DEFSTRUCT.

DEFSTRUCT is always an editing disaster IMO when it is a list, not because
it's a list but because the list is not the name.

> (Didn't one of the New/Old Flavors also have the CADR to defmethod being a
> list at times?

I haven't said anything about the problem being that it is a list.
Indeed flavors did have (defmethod (frob foo) ...) and
(defmethod (frob foo :after) ...)
but that was *better* than what we have now becuase the name was the
whole list.  It's actually more confusing now where the name is spliced
into the top level of the defmethod.  But at least with the present
defmethod, foo is also arguably a name.

> Seems like I remember it having somethingto do with specifying
> before or after methods. Gnuemacs didn't like them either but a
> simple hack to ctags fixed that.)

But at least it was a general-purpose hack to the notion of names that
allows the cadr to be the name, even if it takes list syntax to jump over
it and find the other end.  (There is some problematic part if whitespace
has multiple spaces or tabs, and they have to be canonicalized by editors
that use textual representations, but that can also be dealt with.) My
point is that the same single fix makes it work for (defun (setf foo) ...)
where (setf foo) is in the cadr and is the name.

This is all just a personal opinion, mind you, not a law.  But it's a
personal opinion I know others hold as well and I have not seen
written down anywhere in recent times, though we all talked about it
long ago.  It is not something you can't violate--it's just something
I personally recommend you don't and I won't vote in favor of when it
comes to that in committees.

(I'd like to see old-style DEFSTRUCT syntax flushed, but I won't vote
to flush it without first deprecating it and providing a long
transition period.  But in the creation of new operators, where there
is no compatibility issue involved, I'll push for things that make
life simpler, not because it's impossible to do the other way but
because it introduces needless and avoidable pain to do it the other
way.  As such, this particular piece of simplicity is one I think is
important and worth pushing for where possible.)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Sunil Mishra  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Sunil Mishra <smis...@cleon.cc.gatech.edu>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

Marco Antoniotti <marc...@copernico.parades.rm.cnr.it> writes:
> Well, also the

>    (defmethod zut :after ((....

> wrecks havoc in cl-indent in Emacs.

> Cheers

They seem to have gotten a fix for this in xemacs. I was *quite* pleased
:-) (Though I wonder if it will deal with arbitrary method combinations
correctly...)

Sunil


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

Paul Rudin <pa...@shodan.demon.co.uk> writes:
> OK I didn't express myself clearly. I know that you can modify the
> default definition of defun, but I meant for the above to be valid in
> the absence of such modification.

Maybe I didn't express myself well either.  Just about nothing you can do
in the language is valid in the absence of accomodation by other programs.
You can't do (defun foo ...) without assuring you are in a namespace that
doesn't have FOO already there.  Saying that (defun foo ...) is valid always
assumes you have done this check.  Sometimes you "implement" this by
saying (shadow 'foo) and sometimes by (in-package "SOMETHING-ELSE") and
sometimes by (fmakunbound 'foo) but always you do something, even if
the something is the null thing because nothing is required.  

Even to bind a variable as in (let ((x 3)) ...) is invalid if the "..."
needs to access an outer x.   But we don't say you can't access both
x's at once without a change to the language, we just write
 (let ((x 2))
   (flet ((outer-x () x))
     (let ((x 3))
       (+ x (outer-x)))))
and suddenly we are on our way again without a need to involve the
language design committee.

You didn't merely say "for this to be valid you'd have to add a call
to shadow" you made the following claim (quoting whole paragraph):

> For this to be valid surely the standard would need to be modified?

Had you not made your statement this strong, I would not have bothered
to reply at all.

I just want to make it very clear that the language is a lot more
accomodating than that, and as a rule, I doubt there's much of anything
for which the above statement is true, in the sense that the language
permits you to build whole new languages inside it (unlike many other
languages).  And I get frustrated when people push back on the language to
solve problems they could solve themselves, especially when the "solution"
is about 1-line long.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/08
Subject: Re: Newbie questions [Followup to comp.lang.lisp]

Marco Antoniotti <marc...@copernico.parades.rm.cnr.it> writes:
> What about the

>  (defun foo (list x)
>    (declare (type cons list)
>             (type integer x)
>             (values integer))
>    <body>)

> I have always wondered why this is not an accepted solution (modulo
> syntax of course). I sort of understand that having simply VALUES as a
> 'declaration identifier' (3.3.3 ANSI CL) may cause some problems at
> the DECLAIM/PROCLAIM level (it wouldn't be clear what the declaration
> would apply to), but the idea seems correct.  CMUCL has an
> implementation of this scheme.

So does Genera.  It's not valid CL, because you're not naming what you're
declaring.  VALUES is intended for use in FTYPE declarations and in
THE expressions.  But it was commonplace in Genera to see both this and
ARGLIST declarations, which were both very handy for Control-Shift-A,
the thing that tells you the args and values of a function.

 (defun my-open (frob &rest open-args)
   (declare (arglist frob &key element-type direction)
            (values stream))
   (apply #'open (frob->filename frob) open-args))

> > Btw, DEFSTRUCT violates the rule about the CADR being just a name
> > and causes lots of problems in text editors.

> Well, also the
>    (defmethod zut :after ((....
> wrecks havoc in cl-indent in Emacs.

I don't like this defmethod syntax, but I don't think it would be a problem
for cl-indent if they implemented indent the way I implemented it in Teco.
They ported a lot of my and others' Teco libraries to gnu-emacs when they
brought it up, but they left behind a lot of features.  The Teco-based
indenter assumed anything starting with (def... ) should do body-indent
on the first line after the (def...) that was not a continuation line of
a subform that started on the first line.  [There were ways to override
this if you had definitions that didn't match the default, but this was
not a problem. def expressions vary widely in the number of forms they
have, and having a rule like "body starts at 2nd or 3rd form" is a bad one.
The right DEFAULT rule is "definitions have junk on the first line and
body on the rest of the lines".  Incidentally, this rule even accomodates
defstruct in its full-blown form.

I think I might have the code somewhere to the old teco-based indenter.
Maybe sometime for grins I'll publish it.  Teco was a wonder to behold.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Discussion subject changed to "Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])" by Kent M Pitman
Kent M Pitman  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/08
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])

This supposes that you have to pay $3000 to build a simple executable.
You do not.  This is WILDLY far off the mark and grossly misleading to
suggest as a straw man. I can think of almost no commercial
implementations full of goodies that cost this much.  Most
high-quality commercial implementations have at least one offering in
the $500-600 range, and those implementations usually have an
accompanying free version [in which you cannot dump images not because
it wouldn't be fun but becuase they NEED the revenue to be able to
continue supplying cheapskates (not saying that's you, but I believe
they're out there) with free implementations becuase they never want
to ever pay a dime in support of whowever brought them
happiness/success].  Vendors have to feed themselves.  But there are
numerous smaller/freer lisps out there, probably most of which have
the capability you ask for and don't cost a dime.  If you really think
that it costs $3000 to build a simple executable, I suggest the
possibility that you have not done your homework before speaking.  And
if you don't think it does, I SUGGEST YOU CONSIDER THE POSSIBILITY
THAT EXTREME STATEMENTS LIKE THE ONE YOU MADE ABOVE ARE AS MUCH OR
MORE THE CAUSE OF A PERPETUATED BELIEF THAT LISP IS TOO EXPENSIVE FOR
PERSONAL USE THAN THE ACTUAL FACT OF THE MATTER.

It does cost more to make a commercial redistributable app, and I think
there are some real issues there. But you have specifically said that
is not your issue.  And I just don't think that in the space of "for
personal use" Lisps, your criticism is even remotely fair.

People can, with their kids, teach them to click on the "lisp" icon
and then teach them to type (load "...").  That's all that's needed.
If that is not a fair exchange for a free implementation, I have to
say your public awaits your contribution of something better.  If kids
don't have the attention span required to do a two-step loadup instead
of a one-step loadup, they are not candidates to ever be lisp
programmers.  I daresay the path to being a serious programmer
involves more than just a few such steps, and anyone not willing to
take them might as well start lining up right now for a job in another
industry with fewer steps leading to it rather than diving in on the
mistaken assumption that everything will be handed to them on a silver
platter for free with no burden that they do even the slightest thing.
Geez, even getting my linux to run at my house (and it wasn't wholly
free-there was a substantial media cost) took me a billion (ok, only
probably a hundred) recompiles of the kernel (which I should remember
to go delete sometime :-).  Was THAT a barrier to linux success?
I just don't think so.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/08
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])

Erik Naggum <e...@naggum.no> writes:
> * m...@spam.not
> | Being able to build an executable program which can run on different
> | computers that don't have Lisp is not just a commercial concern.

>   but if you want to run it on such computers, won't they _get_ a Lisp?
>   ...
>   I regard the .fasl files as Lisp's "executables",

Excellent points.

Certainly within the freeware arena, they are no less painful to start
than x windows is to get running on linux.  Some people might think
starting a program from a shell instead of clicking with a mouse means
it's not a "real" program, but by that argument, linux out of the box
is such a system.  I still have to type startx manually because I haven't
found the place to edit in the thing that says xdm should run by default
at startup.  [hints by private e-mail are welcome].


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Kent M Pitman  
View profile  
 More options May 8 1999, 3:00 am
Newsgroups: comp.lang.lisp
From: Kent M Pitman <pit...@world.std.com>
Date: 1999/05/08
Subject: Re: Reasons for rejecting Lisp (was Re: Newbie questions [Followup to comp.lang.lisp])

Erik Naggum <e...@naggum.no> writes:

> * Kent M Pitman <pit...@world.std.com>

[my blathering about markets deleted]

>   this assumes that the issue in question is sufficiently important that
>   the open market will be where the decisions are made.

Yes, I agree this is an issue.  I don't think the market will decide small
things well--only coarse-grain things.  But many of these discussions
are over "What's Really Important" and I do think the market's failure to
spawn new variant products over certain issues is a quasi-proof that those were
not the key things people saw as important.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Messages 126 - 150 of 241 < Older  Newer >
« Back to Discussions « Newer topic     Older topic »