Arc Forumnew | comments | leaders | submit | sophacles's commentslogin
1 point by sophacles 6120 days ago | link | parent | on: NewLISP anyone?

Unless I'm not understanding something, and am not quite grokking this whole list/functional language thing (entirely possible I'm still learning).

newLisp appears to have the following from this list (by way of a quick look at the documentation on the site):

macros via define-macro and lamda-macro (and not autmatically hygenic ones...)

pass by reference.

And closures via let and lambda forms.

garbage collection

hash tables

Im really not for or against newLisp. It seems that since you last looked some of the stuff got implemented. The thing Im really not sure of is macros. It seems to me that the newLisp maros are very much the same as arc macros. If this is wrong, can someone please help me grok it?

Erich

-----

11 points by Jekyll 6120 days ago | link

One of the things I don't like about newlisp is that from their site, they appear intentionally misleading about what they can and can't do.

They don't have hash tables, this they openly admit and they make do with self balancing trees.

They don't have macros, they have f-expressions. F-exprs are strictly more powerful, but execute at run time not at definition time. This means every abstraction you use incurs a penalty fee each time it is executed, rather than just once when it is compiled. They call what them macros anyway.

They don't have garbage collection at all. The whole language is basically allocated on the stack, and objects are deleted or copied and returned when a function ends. This means they can't have true closures, or pass by reference with indefinite extent for the objects.

As far as I can tell, the hacks they suggest to get round the lack of closures won't work if you want to create and destroy many anonymous fns. bound to data with indefinite extent. They still refer to these hacks as `closures'.

Their pass by reference work around, amounts to passing symbol names from different contexts and can't do the right thing when you(for example) want to merge existing lists and then rebind one the original symbols.

Having said all that, if one of the newLisp guys wants to prove me wrong, and show something like partial application code to demonstrate that it really does have true closures, it'd be great to see, and I'd probably go back to the language and have another go with it.

-----

-1 points by newguy 6119 days ago | link

"...if one of the newLisp guys wants to prove me wrong," No, first you have to prove yourself right.

"...they appear intentionally misleading..." Intentionally? How so?

"...they still refer to these hacks as `closures'." Cite please. And "hacks"? What if I called you a jerk?

-----

9 points by Jekyll 6119 days ago | link

>No, first you have to prove yourself right.

Can't prove a negative, but I've already explained why I think I'm right.

>Intentionally? How so?

When they claim to fake closures with contexts, they're wrong. Now they're either confused or trying to confuse other people.

>Cite please.

"In newLISP lexical state-full closures are not realized using lambda closures but using lexical namespaces." http://www.newlisp.org/ExpressionEvaluation.html

It's the first hit on google for `newlisp closure'.

>What if I called you a jerk?

I would be immediately converted to newlisp by the strength of your arguments and the size of your e-penis.

-----

1 point by sophacles 6139 days ago | link | parent | on: Er.. can't install?

Not certain if this is will work but:

cd into $path/to/arc/arc0

$ ../bin/mzscheme -m -f ac.scm

I'm pretty sure that arc is looking in . for the rest of its loads.

Best of luck, Erich

-----

1 point by sophacles 6140 days ago | link | parent | on: Socket processing

See my earlier post about "useful network function" (it was posted from work so its by Erich). It has the relevant scheme function that needs to be put in ac.scm. There is a bit more explanation in there too.

Regards, Erich

-----