These docs (https://arclanguage.github.io/ref/) are the ones I was talking about. I haven't read much, but there's no mention of parentheses anywhere. Also, there are symbols in circles to the left of concepts, e.g. F ! ? M, but no explanation of what they mean.
Generally, the docs seem rather terse to me; there's a lot of stuff that only makes sense now, after reading (http://aphyr.com/posts/301). "Clojure from the ground up" does start slowly, but by the end of Chapter 4, I really understood the idea of recursion and representing code as a tree, something that I don't think I could have got from the Arc docs.
Re #2 and #3: I think Clojure also puts a heavy emphasis on closures, first-class functions, and recursion (although it seems you have to jump through a hoop to get TCO working (Java and JavaScript don't support TCO (yet))).
Arc may be more minimal and have simpler macros, but I think it'll take me a lot less time to actually start making things with Clojure because there are more resources available for learning it, and it has good support for making web apps (good libraries, good compiler to JavaScript). The Arc docs seem to be good, but targeted more at people who are already familiar with Lisp.
I tend to learn best by creating things, and seeing as I already know HTML and CSS, a language that would allow me to dive right in by creating web apps would be great.
There's also the fact that if someone asked me why I chose Arc over any other Lisp, I wouldn't really know what to say. I like the sound of your philosophy, but at the moment I don't really have the knowledge to understand how Arc is different from other Lisps (other than by being very minimal).
Maybe once I've got some practical experience and a good grasp of the basic concepts behind Lisp and macros, I might start learning Arc, and be able to appreciate it for what it is.
Thanks! I don't really have any concrete questions, but any advice on learning Lisp would be welcome. Maybe I should learn Scheme and read SICP before learning Clojure? Maybe I should forget Lisp altogether until I have more experience with programming in general? I get the feeling Arc is not the best place to start learning Lisp.
I did have a short look at the tutorial, but I had a bit of a hard time diffing it mentally, as I am still fairly new to Lisp. But I will definitely point him in that direction if he is interested in having more than a cursory glance.
I saw this yesterday and got pretty excited. A while back, I stumbled across the same source of inspiration: http://www.lwh.jp/lisp/index.html
Being mainly a CL hacker who came from Python, Arc has looked interesting to me for a while, but I couldn't justify running a small language on a HUGE backend like Racket... So I started implementing the environment described at the link above, which you did as well. Incorporating my initial work with quite a bit of yours, I spent 24 hours hacking together something similar. I haven't done nearly enough to it yet, but I added some new types and support routines. The code layout is slightly reminisce of Quake code. Take a look if you're interested: https://github.com/camden-smallwood/arc
Thanks to your advices. The runtime is based on Node.js, so there is no tail recursion elimination, I'm finding a method to transform recursion code to iteration code automatically, do you have some advice?
In tcl the syntax is build from strings and in tclisp the syntax is build from symbols and cons cells.
tclisp could have a better syntax checking and real macros.
thx.but how to arc>? i stop the app ,cd arc, echo “admin” > arc/admins,,,arc> (load-userinfo) ,,,,and arc> (load "lib/news.arc"),,,rhc app-start news...what wrong?still cant find admins privilege in my page.
i got it done....and i check ur and my site find that both of us cant submit a simple url like(www.google.com but http://google.com works) with a title ,but only can submit a textwith a title...that's a new problem...if u could tell me what is the right step after the 8step as ur instructions as well.that will be great!---best wishes!
thx,bro,u really rock...so i rebuild a new site http://news-tvvocold.rhcloud.com and i can sign up and login in...but i can't submit still...why that? follew ur instructions i cant push (stuck at 5th step)so i use this
arc> (nsv)
rm: cannot remove"arc/news/story/*.tmp": No such file or directory
load items:
ranking stories.
tcp-listen: listen failed
port number: 8080
system error: Permission denied; errno=13
context...:
zz
/var/lib/openshift/53755de6500446c100000b1a/app-root/data/arc/ac.scm:1227:4
and i repeat again :arc> (nsv)
rm: cannot remove"arc/news/story/.tmp": No such file or directory
load items:
ranking stories.
user break
context...:
/var/lib/openshift/53755de6500446c100000b1a/app-root/data/arc/ac.scm:1084:20
recur
recur
user break
context...:
/var/lib/openshift/53755de6500446c100000b1a/app-root/data/arc/ac.scm:1084:20
recur
recur
tcp-listen: listen failed
port number: 8080
system error: Permission denied; errno=13
context...:
zz
/var/lib/openshift/53755de6500446c100000b1a/app-root/data/arc/ac.scm:1227:4
if u update the full instructions that will be great and grateful,,,thx very much!
(add this will be helpful
Thank you for the reply and a warm welcome)
I thought it was a chair because of the images on wikipedia page and here http://www.paulgraham.com/arc.html
I got interested in Arc after reading "Hackers & Painters", can't tell anything about my impressions because I don't know much about the language yet, I've discovered it only recently.
I'll definitely learn more about it and then I will have something to say)
"Once you or I have a self-hosted compiler, if it can compile to a platform, it can also run on that platform."
In theory yes, but it wouldn't be a good idea for jasper because it is a relatively thin layer on top of javaScript. So a backend for a different platform would have to emulate a lot of JS quirks, which would be complicated and produce slow code.
So if you want to make a cross platform language, it should be a thicker layer on the first platform from the beginning.
"Nevertheless, I think I'm still headed in that direction."
Always make backups of your compiler binaries or don't overwrite old compiler binaries so in case of a bug you don't end up with only one, broken, compiler binary.
I actually worried that it wasn't painless enough, and that I should have waited for the web repl to be done before submitting.
These long strings contain the compiled macros. They are only there for debugging. They belong in comments instead of strings, but I didn't think of it at that time.
Motivation:
I want to have a lisp which, runs in the browser, interops easily with existing javaScript libraries, and is reasonably fast. clojureScript sort of is this, but its macros are kind of a kludge (clojureScript macros are written in clojure and have to be in a seperate file from the rest of the code, also hygienic only), interop isn't seamless, and I don't want to start a jvm every time I want to compile some code. A straight arc to javaScript compiler would have to be really smart to produce fast code, and interop wouldn't be seamless either. So I decided to try writing my own language.
Implementation:
Since macros can call functions which were defined in the same file, the functions needed to be evaluated right after being compiled. So I couldn't just do a simple "jasper code in, javaScript code out" compiler in haskell. So there is a self hosted[1] compiler/repl.
Current status:
It is already sort of usable, but I wouldn't recommend anyone else to use it for anything beyond throw away tinkering, because I still might decide to make big changes to the semantics.
Not sure if that are the things you wanted explained.
[1] Self hosted compilers are a pain in the behind, one has to mentally switch between the language version the compiler is written in and the language version the compiler is compiling and when you break you compiler you can't use it to compile the fixed version.