Paul Graham's Arc is released today... what is the long term impact? - lisp
This is a discussion on Paul Graham's Arc is released today... what is the long term impact? - lisp ; På Sun, 03 Feb 2008 14:47:00 +0100, skrev Pascal Costanza <pc@p-cos.net>:
A few points that come to mind:
Destructuring works differently and functions and let also allow
destucturing.
It is implemented in Arc.
The syntax if different so it requires ...
-
Re: Paul Graham's Arc is released today... what is the long term impact?
På Sun, 03 Feb 2008 14:47:00 +0100, skrev Pascal Costanza <pc@p-cos.net>:
A few points that come to mind:
Destructuring works differently and functions and let also allow
destucturing.
It is implemented in Arc.
The syntax if different so it requires different parsing.
(let x 5 (pr 5))
(with (x 5 y 6) (prf "X=~A,Y~A~%" x y))
prf is a subset of format implemented in arc.
Macro processing is implemented in arc.
You seem to have glanced at ac.scm and jumped to conclusions.
The real work is in arc.arc .
Also the you seem to miss the point. The issue isn't so much which
features to add.
It is to provide a simpler language which is terse but doesn't loose any
of scheme/CL's power.
The real effort is in determining what could be removed. The code has been
continually rewritten to simplify/tersify the language and also the
implementation. It is not easy to come up with a simple yet complete
language.
define-condition and defclass syntax doesn't jive well together with the
terse original lingo car, cons, cond, map etc.. In that sense it is a
attempt to get closer to the language originally envisioned by McCarthy.
--------------
John Thingstad
-
Re: Paul Graham's Arc is released today... what is the long termimpact?
On Sun, 03 Feb 2008 15:51:59 +0100, Pascal Costanza wrote:
> Eli Barzilay wrote:
>> Pascal Costanza <pc@p-cos.net> writes:
>>
>>> I seem to be missing something very important,
>>
>> I think that the best thing you should do is follow Kenny's advice and
>> use it (then look at the sources).
>>
>>
>>> so let me try to rephrase this as a question: Is there anything in Arc
>>> that can't be implemented as a plain thin library on top of
>>> (sufficiently powerful) Scheme or CL implementations?
>>
>> At least with MzScheme, it is not implemented as a library, but rather
>> as a compiler. It reads each sexpr, translates it to MzScheme code,
>> then evaluate the result.
>
> I wasn't interested in how they implemented the syntactic sugar. I was
> interested in whether it is more than syntactic sugar.
Arc has a couple of neat ideas (the building of the language from
'axioms' and funcallable containers), and the type system and building
the language/library up using set+annotate is kind of fun (arc.arc). My
personal preferences aside, it's a capable lisp, it's fun to use, but
there's nothing innovative or earth-shattering.
As an aside, i've never really been a fan of pg's style, but this is just
horrible imo:
(define (ac-mac-call m args env)
(let ((x1 (apply m (map ac-niltree args))))
(let ((x2 (ac (ac-denil x1) env)))
x2)))
That's the code to call a macro-function and compile the expansion. For
someone who goes on about brevity this and concise that .. WTF! Drop
those lets!
(define (ac-mac-call m args env)
(ac (ac-denil (apply m (map ac-niltree args)) env))
Cheers,
drewc
>
>
> Pascal
--
Posted via a free Usenet account from http://www.teranews.com
-
Re: Paul Graham's Arc is released today... what is the long termimpact?
On Jan 30, 1:12 pm, "John Thingstad" <jpth...@online.no> wrote:
> På Wed, 30 Jan 2008 20:42:31 +0100, skrev <attila.lend...@gmail.com>:
>
> my biggest grievance in CL is multiple-value-bind.
> Passing variables on the stack is something that is common and should be
> dead simple.
> I find the syntax alone makes me think twice about using it.
I've always hated it too. Try my version of the LET macro.
http://common-lisp.net/project/misc-extensions/
With it you can say
(let ((val1 val2 (form-returning-two-values)))
...)
-- Scott
-
Re: Paul Graham's Arc is released today... what is the long termimpact?
On Feb 4, 6:53 am, Scott Burson <FSet....@gmail.com> wrote:
> On Jan 30, 1:12 pm, "John Thingstad" <jpth...@online.no> wrote:
>
> > På Wed, 30 Jan 2008 20:42:31 +0100, skrev <attila.lend...@gmail.com>:
>
> > my biggest grievance in CL is multiple-value-bind.
> > Passing variables on the stack is something that is common and should be
> > dead simple.
> > I find the syntax alone makes me think twice about using it.
>
> I've always hated it too. Try my version of the LET macro.
>
> http://common-lisp.net/project/misc-extensions/
>
> With it you can say
>
> (let ((val1 val2 (form-returning-two-values)))
> ...)
>
> -- Scott
Redefining let, eh. Why not using a new name something like let+ or
whatever else?
BTW lisp is PITA when you want to do call be reference programming,
the C-ish styke with assignments.
cheers
Slobodan
-
Re: Paul Graham's Arc is released today... what is the long term impact?
Slobodan Blazeski <slobodan.blazeski@gmail.com> writes:
> BTW lisp is PITA when you want to do call be reference programming,
> the C-ish styke with assignments.
Not true.
It is trivial:
(defun f (*y)
(incf (ref *y)))
(let ((x 1)
(a (make-array 10 :initial-element 0)))
(f (& (aref a (incf x))))
a)
--> #(0 0 1 0 0 0 0 0 0 0)
..
..
..
..
..
..
..
..
..
..
..
With, for example, and out of the top of my hat:
(defmacro & (place &environment env)
(multiple-value-bind (vars vals store-vars writer-form reader-form)
(get-setf-expansion place env)
(when (cdr store-vars) (error "Can't expand this."))
`(let* (,@(mapcar (function list) vars vals))
(lambda (message &optional value)
(ecase message
((get) ,reader-form)
((set) (let ((,(car store-vars) value))
,writer-form)))))))
(defun ref (locative)
(funcall locative 'get))
(defun (setf ref) (value locative)
(funcall locative 'set value))
Also, you could have used group.google.com and found a lot of other
posts about it, using the 'reference' or 'locative' keywords.
--
__Pascal Bourguignon__
-
Re: Paul Graham's Arc is released today... what is the long term impact?
Slobodan Blazeski <slobodan.blazeski@gmail.com> writes:
> On Feb 4, 6:53 am, Scott Burson <FSet....@gmail.com> wrote:
>> On Jan 30, 1:12 pm, "John Thingstad" <jpth...@online.no> wrote:
>>
>> > PÃ¥ Wed, 30 Jan 2008 20:42:31 +0100, skrev <attila.lend...@gmail.com>:
>>
>> > my biggest grievance in CL is multiple-value-bind.
>> > Passing variables on the stack is something that is common and should be
>> > dead simple.
>> > I find the syntax alone makes me think twice about using it.
>>
>> I've always hated it too. Try my version of the LET macro.
>>
>
> Redefining let, eh. Why not using a new name something like let+ or
> whatever else?
Or "bind", perhaps?
-
Re: Paul Graham's Arc is released today... what is the long termimpact?
Paul Donnelly wrote:
> Slobodan Blazeski <slobodan.blazeski@gmail.com> writes:
>
>> On Feb 4, 6:53 am, Scott Burson <FSet....@gmail.com> wrote:
>>> On Jan 30, 1:12 pm, "John Thingstad" <jpth...@online.no> wrote:
>>>
>>>> PÃ¥ Wed, 30 Jan 2008 20:42:31 +0100, skrev <attila.lend...@gmail.com>:
>>>> my biggest grievance in CL is multiple-value-bind.
>>>> Passing variables on the stack is something that is common and should be
>>>> dead simple.
>>>> I find the syntax alone makes me think twice about using it.
>>> I've always hated it too. Try my version of the LET macro.
>>>
>> Redefining let, eh. Why not using a new name something like let+ or
>> whatever else?
>
> Or "bind", perhaps?
Hey, that's faaaaaar too long... :-P
Pascal
--
1st European Lisp Symposium (ELS'08)
http://prog.vub.ac.be/~pcostanza/els08/
My website: http://p-cos.net
Common Lisp Document Repository: http://cdr.eurolisp.org
Closer to MOP & ContextL: http://common-lisp.net/project/closer/
-
Re: Paul Graham's Arc is released today... what is the long termimpact?
On Feb 4, 10:07 am, Pascal Costanza <p...@p-cos.net> wrote:
> Paul Donnelly wrote:
> > Slobodan Blazeski <slobodan.blaze...@gmail.com> writes:
[...]
> >> Redefining let, eh. Why not using a new name something like let+ or
> >> whatever else?
> > Or "bind", perhaps?
> Hey, that's faaaaaar too long... :-P
In honor of Arc, I think it should be called BND. 
Cheers, Pillsy
-
Re: Paul Graham's Arc is released today... what is the long termimpact?
On Feb 4, 2:59 am, Slobodan Blazeski
> Redefining let, eh. Why not using a new name something like let+ or
> whatever else?
let-values
let*-values
letrec-values
-
Re: Paul Graham's Arc is released today... what is the long termimpact?
On Feb 4, 10:16 am, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
> Slobodan Blazeski <slobodan.blaze...@gmail.com> writes:
> > BTW lisp is PITA when you want to do call be reference programming,
> > the C-ish styke with assignments.
>
> Not true.
>
> It is trivial:
>
> (defun f (*y)
> (incf (ref *y)))
>
> (let ((x 1)
> (a (make-array 10 :initial-element 0)))
> (f (& (aref a (incf x))))
> a)
>
> --> #(0 0 1 0 0 0 0 0 0 0)
>
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
> .
>
> With, for example, and out of the top of my hat:
>
> (defmacro & (place &environment env)
> (multiple-value-bind (vars vals store-vars writer-form reader-form)
> (get-setf-expansion place env)
> (when (cdr store-vars) (error "Can't expand this."))
> `(let* (,@(mapcar (function list) vars vals))
> (lambda (message &optional value)
> (ecase message
> ((get) ,reader-form)
> ((set) (let ((,(car store-vars) value))
> ,writer-form)))))))
>
> (defun ref (locative)
> (funcall locative 'get))
>
> (defun (setf ref) (value locative)
> (funcall locative 'set value))
>
> Also, you could have used group.google.com and found a lot of other
> posts about it, using the 'reference' or 'locative' keywords.
>
> --
> __Pascal Bourguignon__
Cool thanks
Slobodan