Having fun hacking with it so far, but I thought I'd bring up one compatibility glitch that hit me early on:
The definition of 'date' in arc.arc assumes a BSD-compatible 'date' binary on the host system. Unfortunately, the allowed arguments for GNU date are quite different. AFAICT, it is in fact impossible to convert the epoch-seconds timestamp format into a formatted date using the GNU version of the utility. Since the bundled web server uses the 'date' function to generate logfile names, any attempt to run a webapp on Linux immediately blows up.
I've hacked up a new implementation at the MzScheme layer using native date structs, but it would probably be worth porting a more complete date/time logic library to Arc, and relying on something like a native 'current-milliseconds' call only.
"In Arc, data structures can be used wherever functions are, and
they behave as functions from indices to whatever's stored there.
So to get the first element of a string you say:"
I think there's something wrong with the word 'from'.
2. When you say:
"There's also a more general loop operator that's similar to the C
for operator and tends to be rarely used in practice, and a simple
repeat operator for doing something n times:"
I assume that the operator is actually called 'loop'. Since there's no example and no font distinction it's note clear.
3. I like this a lot:
"[... _ ...] is an abbreviation
for (fn (_) (... _ ...))."
4. This feels backwards to me: "(foo:bar x y) is equivalent to (foo (bar x y))". I was expecting (bar (foo x y)), but perhaps that's just my brain. foo:bar reads to me like do foo then do bar.
5. Why have rem when you have keep and ~?
6. What's the rationalie for the name 'obj' when creating hashes?
1. It would be nice if you could change it to html instead of txt so footnotes (and possibly references to other sections, if you're really ambitious) can be links so it's easier to skip around (using 'open in new tab') without losing your place. It would also be useful for fixing jgrahamc's 2nd issue.
2. I'm having a bit of trouble getting the do / when section (my only prior experience with lisp is scanning some PCL way back when reddit was young - I use lisp-in-a-box as a calculator a lot when playing Eve Online, but that's not really useful experience here). If I'm understanding it correctly, it seems accurate to say that (if a b) is valid and will return b when a is true and do nothing otherwise. Is that right?
I think what I'm getting hung up on is that you talk about 'if' with 3 arguments, then with more than 3 arguments, then you explain 'do', and then when you combine them back together it looks like you're using 'if' with 2 arguments, with the 'do' part being, in it's entirety, the second argument...but otherwise you never address a plain old 'if' with 2 arguments.
Thanks. Just finished reading the tutorial and everything else seemed to mostly make sense (for the things not covered by that 'mostly', I suspect it's to do with the lack of descriptive names / real-world-application examples, which is fine; I'm sure it'll fall into place once I install it and actually start playing around a bit. :)
I know a couple:
4. That's the "compose" operator. In math notation, the symbol looks like a small mid-line circle.
6. From the intro: "it uses overlays on hash tables instead of conventional objects". Python kind of does the same, where you can get an object's attributes as obj.__dict__.
Thanks for the release, this is very exciting. After a preliminary examination and a quick read through the tutorial, three of my personal CL annoyances are non-issues with Arc. 1.) I love the short function names. 2.) "let" appears to do destructuring automatically - thank you! 3.) It's a Lisp-1!
wow pg thanks for arc!
i been waiting for it to come out for like year and a half!
( on a side note can you make the text in the box default by
remove textarea { color:#000000; in news.css(line 10) or
make the textarea have white background - its hard to read
black text in default black textbox)
Like everyone else, I'm pretty psyched. I recently re-read ANSI Common Lisp and On Lisp... Looking at the differences between "normal" CL and Arc... I tend to think it really does match the "hacker" mindset quite a bit more.
For what it's worth I'm trying it out on v360 because thats what I happened to have installed, and so far no problems. Although I haven't really done much. If I run into anything I will post.
I went through some of the examples in the tutorial with v360, but when I tried the hello web app, it failed. Not sure if it's due to v360, or not. I guess I can uninstall it and install v352 :(
Same here on a ubuntu 7.10 gutsy 64amd. There's no (easy) way to do an install for v352 w/o doing a source compile (works) and manually installing the files (can't be stuffed).
An instance of MzScheme will only use one cpu even on multi-cpu machines. In order to use more than one cpu, start several instances and let them communicate either via tcp or via files.