Arc Forumnew | comments | leaders | submit | zck's commentslogin

Also, you look like you're new to the Arc Forum. Welcome! I've been trying to notice when I see someone new, so we can grow the community. What brings you to Arc? What are your impressions so far?

-----

2 points by MaxLambert 4234 days ago | link

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)

-----

1 point by akkartik 4234 days ago | link

Yeah I've seen that image too. It's older, and predates the public release of Arc by a few years. The current logo here came even later. Probably just an abortive attempt.

-----

5 points by zck 4234 days ago | link

pg talks about that chair in Taste for Makers (http://www.paulgraham.com/taste.html), under "Good design is often slightly funny."

-----


It's not a chair, it's a lowercase a.

Interestingly, back when I was first playing around with Arc, I also thought the logo was odd. I designed a new one based around combining the letter A with the concept of an arch (http://www.paulgraham.com/arcfaq.html).

You can see my logo, with a favicon-sized image, here: http://imgur.com/a/RMGu4#sSFHTHt It uses the same colors as the existing one, and has the black border around the outside.

On the off chance anyone developing Arc sees it and wants to use it, that would be awesome, as long as it's properly licensed -- I'm not sure what the proper free license is for things that aren't code. Creative Commons withe the attribution and share-alike clauses? http://creativecommons.org/licenses/by-sa/4.0/

-----

2 points by zck 4245 days ago | link | parent | on: Streams

Land of Lisp also has a good discussion of this topic, but refers to it entirely as "lazy lists" and the like. I think it also convinced me that I want laziness to be almost transparent, so you don't need to have different functions to work with lazy data types versus strict ones. Of course, I'm not opposed to some sort of library adding them in a way that's elegant, even if that library isn't included in Arc.

I'll have to read this more this later, but if you aren't using a unit test library yet, I'd like to pimp mine again: https://bitbucket.org/zck/unit-test.arc/ . I'm willing to write some tests, but that will have to wait until next week, as I'm away this weekend.

-----

1 point by akkartik 4244 days ago | link

That reminds me: I never did get around to adding your test harness to anarki like I promised. I'll do that if I get around to adding some lazy tests this weekend. Otherwise feel free to do so when you look at this again.

-----

1 point by akkartik 4239 days ago | link

Now that anarki has its first suite of tests using your harness, I've designated all prior tests as "old tests" to encourage us to move away from our patchwork of prior solutions.

https://github.com/arclanguage/anarki/commit/a30d51ce87

-----

2 points by zck 4248 days ago | link | parent | on: Did arc language project alive?

Asking whether Arc is alive, or completed, tends to bring up arguments over definitions.

Perhaps if you talk about what you want to do with Arc, we can discuss whether it's a good fit or not. Why are you not satisfied with Clojure? What do you like about it that you want to keep?

-----

2 points by shader 4240 days ago | link

What do you mean by "definitions"...

-----

1 point by rocketnia 4240 days ago | link

Nice one. :-p

-----

3 points by zck 4256 days ago | link | parent | on: How do you print a decimal value?

Documentation on 'num : http://arclanguage.github.io/ref/string.html#num

-----

2 points by zck 4258 days ago | link | parent | on: Pg is "going to check out of HN"

I'm not sure what this means for Arc, but other than pulling the plug on this site, the only thing I can see that would be bad for the community would be if he publicly said that Arc's dead, or something like that.

-----

2 points by thaddeus 4257 days ago | link

I don't think pg will let arc die [1], but I still will suggest moving on to Clojure.

1. https://news.ycombinator.com/item?id=5032907

-----

1 point by akkartik 4258 days ago | link

For future reference, if this site ever dies: I designate #arc on freenode as our fallback position.

:)

I'm not too concerned about him even saying arc is dead. What I value is the community. Anarki shall abide! :)

-----

3 points by zck 4258 days ago | link

I agree -- while it would be sad if pg stopped using arc, that itself wouldn't be the end of the world.

The problem I see is that if pg publicly stops using arc, the already-slow trickle of newbies would slow even further.

Honestly, I'm starting to tire of this community being so small. I've been avoiding Clojure -- mostly because I really like Arc, partly because I've had bad experiences with some of the people in Clojure's community -- but Arc isn't getting to be much easier to get things done. And I'm not sure I'm going to be able to put it off much longer.

-----

2 points by malisper 4257 days ago | link

The problem with Arc as opposed to Clojure is that it is incomplete. It is missing some of the most basic features such as a a module system, a good debugger, and useful error messages. The reason none of us has come up with a solution to any of these deficiencies is that they are hard problems solve. We are all just waiting for pg to try to fix these problems instead of going out and solving them ourselves. If someone can solve these issues, pg or not, Arc should gain traction. I hate to say it, but if no one is going to do anything, Arc might as well already be dead.

-----

2 points by akkartik 4257 days ago | link

I'm certainly not waiting for arc to become perfect. My side project may well end up needing me to reinvent a computing stack from scratch: http://akkartik.name/about. But I fully expect it to take 20 years, so don't hold your breath :)

-----

2 points by lark 4256 days ago | link

Are you fully sure there is no other way to do what you want to do without it taking 20 years?

That's a question worth pondering, not just because big things tend to fail or good design is simple, but also because life has a way of changing what people choose to do over time.

-----

3 points by akkartik 4255 days ago | link

Yeah, I'm actually constantly looking for shortcuts, ways to not need to reinvent the stack, ways to build things that will help existing projects, or allow people to use existing languages and tools.

When I said 20 years I wasn't saying I have a plan that's going to take 20 years. I meant that I'm building small projects that -- when I step back -- seem to be headed in that general direction over time. Projects like wart[1], tracing tests[2] and layers[3]. I'm building these little projects out in the open, so hopefully I won't fall victim to the "hacker comes out of basement after 20 years with a compiler and OS that nobody cares about" failure mode. No, my goal is to fail in some more creative way :)

I'm less worried about my goals changing. On the one hand, if they do they do, one can't be anything but fatalistic about it. On the other hand the goals I outlined above seem to have hooked into my motivation at a deep level. I may well end up switching solutions I explore, but it seems like the goal is unlikely to change.

I haven't really started building anything for the past couple of months, but I've been thinking lately about three potential little projects: a) a simple multitasking OS without virtual memory or processes, maybe even without preemptive scheduling, b) a better language for teaching programming by separating scope from the notion of functions, and c) an assembly language with structured programming and lisp macros somehow. Something 'easy' to build without needing an entire C compiler. Rephrased: "I'm willing to do my own register allocation. What can you do for me, lisp?" :)

Mostly I just get up every morning and work on whatever I want. And these are the things I've been ending up working on.

Thanks for the question!

[1] http://akkartik.name/post/wart

[2] http://akkartik.name/post/tracing-tests

[3] http://akkartik.name/post/wart-layers

-----

2 points by thaddeus 4256 days ago | link

I've had bad experiences with some of the people in Clojure's community

When arc advances enough to appease you, it will also be appealing to others; then when a larger community develops around arc you will start to have bad experiences. That's the nature of mass appeal.

Even pg noticed the quality of HN's content and community degraded with popularity, which is why he's adding the pending change discussed (amongst others).

And let's all be honest, if arc solved half the problems Clojure handles, I doubt you would notice much of a difference between the languages. After all they are already very similar.

-----

2 points by akkartik 4256 days ago | link

By Steve Yegge's analysis, clojure is conservative and arc is pretty liberal.

https://plus.google.com/110981030061712822816/posts/KaSKeg4v...

-----

2 points by thaddeus 4256 days ago | link

If you were to draw a line with liberal being at one end and conservative on the other, then plot various languages on that line you'll find arc and clojure would be close together as opposed to far apart.

Even Yegge's post would seem[1] to confirm this with his own data:

  Assembly language: Batshit liberal.
  Perl, Ruby, PHP, shell-script: Extremist liberal.
  JavaScript, Visual Basic, Lua: Hardcore liberal.
  Python, Common Lisp, Smalltalk/Squeak: Liberal.
  C, Objective-C, Scheme: Moderate-liberal.
  C++, Java, C#, D, Go: Moderate-conservative.
  Clojure, Erlang, Pascal: Conservative.
  Scala, Ada, OCaml, Eiffel: Hardcore conservative.
  Haskell, SML: Extremist conservative.
And as I suggested, if arc were to advance and cover off some of the things Clojure does already, then they would move closer on that plot.

1. Arc not present I approximate with scheme. Note that those categories are wonky and divisions wouldn't plot evenly.

-----

2 points by akkartik 4256 days ago | link

Yeah, our differing analysis is because:

1. I assume arc to be like lisp. Many of the things that need a new interpreter atop scheme (lisp-1, quasiquote, unhygienic macros) are borrowings from lisp. The only major scheme-ism arc retains is call/cc. Am I missing anything?

2. I actually think arc is more batshit liberal than traditional lisp. Perhaps I'm reading too much into the absence of a module system, but I consider it a deliberate omission.

3. You're assuming that there's only one way to build out the missing infrastructure, and that is to be more like clojure. I'm skeptical of that.

-----

2 points by thaddeus 4256 days ago | link

Yeah, I can see how one could draw a little larger of a distinction between Arc and Clojure using the conservative/liberal categories, but even so I'm not convinced it even stands up as a good overall measure for similarity/differences (even if it's a good one). So setting that one criteria aside for a moment, I look at Arc and Clojure and here's what I also see:

- They are both Lisps with dynamic type handling, prefix notation, strings as sequences, heavy use of hash-maps, a large number of functions and macros with similar names doing the same things.

- The syntax's are so similar you could pretty much swap out color scheme templates (in fact I initially used the arc textmate bundle for Clojure).

- They both depend upon pre-existing language for compilation. Clojure drops into java, Arc drops into scheme.

- The online comparisons between them are more frequent than arc and any other language.

I could go on, but I think you get the point.

And while I know you could create a list to show differences I'm simply saying that overall they are very similar which was my initial claim.

As for "having to be more like Clojure" to advance, well no, but I'm pretty sure that it's more likely than any other unstated options. Here's what I do see to support this:

- pg himself has stated Clojure is bringing LISP back into popularity and recommended clojure for use over other languages. (https://news.ycombinator.com/item?id=1804145, https://news.ycombinator.com/item?id=4486880)

- There are many posts on the arc forum showing/suggesting Clojure like features. I don't see this kind of thing happening for arc and say erlang or any other language. (examples: http://arclanguage.org/item?id=18235, http://arclanguage.org/item?id=18036, http://www.arclanguage.org/item?id=8330, http://www.arclanguage.com/item?id=8251, http://www.arclanguage.org/item?id=13895, http://arclanguage.org/item?id=8299 etc etc...)

-----

2 points by akkartik 4256 days ago | link

Ok, I'm convinced :) By pg's comments in particular.

(There's a lot of red herrings in your comment, though. That they look the most similar syntactically isn't too surprising, and it's irrelevant that erlang can't compete, or that they build on an existing language, etc. You're measuring position to compare trajectories.)

In any case, it feels quite delusional to compare arc to clojure at the moment :)

Let me ask you this: if you have clojure why do you care about arc? Genuinely curious.

-----

2 points by thaddeus 4256 days ago | link

> “There's a lot of red herrings in your comment, though. That they look the most similar syntactically isn't too surprising, and it's irrelevant that erlang can't compete, or that they build on an existing language…

I realize many of my arguments have holes in them when viewed independently, but when put together those “soft arguments” contribute to painting an overall picture that supports my claim better than had I not given them. Albeit the "they build on an existing language" is pretty weak overall.

> “You're measuring position to compare trajectories

Position is not something you can measure it's something you can map/use. That aside, I don’t believe what it is I think you intended to say is true. I used position to substantiate the claim of similarity, I used trends to substantiate the trajectory (i.e. the last half of my reply, what people are saying and what they are doing are trends).

> "if you have Clojure why do you care about arc?"

I like both languages. I don’t use Arc because its unfinished and unusable for the things I need to do. I often get the sense that when I promote Clojure on the Arc forum that people get defensive and wonder why I'm even around, but remember I am only saying what pg himself is:

  > Would you recommend Arc to modern startups in general?
  PG: No, I don't think so, not in its current state.
  > Why not?
  PG: It's still missing some things that most people take for granted.
  > Are there any Lisps you would recommend.. ?
  PG: Clojure is probably the best bet...
https://news.ycombinator.com/item?id=4486880

I like the arc language and I like the community. I view arc as unfinished and look forward to giving it a shot when it is, but until then I am going to continue to be realistic about the current state and promote Clojure as an option.

-----

2 points by akkartik 4255 days ago | link

"I used trends to substantiate the trajectory, i.e. the last half of my reply, what people are saying and what they are doing are trends."

If you think arc is whatever pg says it is, then what we are saying and doing here is irrelevant :)

If you think arc is whatever we're saying and doing here, the things we take from clojure seem a tiny minority compared to the sum total of conversations. I'd say arc starts out kinda like clojure, but is looking to steal ideas from all sorts of languages including erlang.

---

I tried to phrase my question very carefully to avoid seeming defensive about something I don't care about. So let me just come out and say it: I have no problem with you talking about clojure all you want here. If you did, maybe I'd get to talk to you more! :) Arc is indeed absolutely unfinished, no disagreement there either.

Maybe what I'm actually defensive about is the prospect of any two languages becoming more and more similar. That just seems bad, nothing good can come of it. I'd rather see arc and clojure evolve in different directions and give me more ideas and more data about how good those ideas are.

Copying ideas and creating hybrids is totally fine, that's what we are good at. But then the hybrid starts at the intersection of its influences and sets off on a whole different trajectory.

So let me rephrase my question: is there something you miss from arc in clojure that has you wishing for a superset?

(The answer may take time to emerge from the subconscious. At least it has for me in similar questions.)

-----

2 points by thaddeus 4255 days ago | link

My comments are a targeted response to statements made in a specific comment (http://arclanguage.org/item?id=18421). I think you're treating the conversation in this thread as you treat this forum; as some place to mingle languages and abstract all ideas. That's fine if you want to do that, but I'll suggest you'll be more effective if you follow the thread and consider context when responding.

And I'm suggesting more care be taken in this regard, because it leads to you being offended (i.e. "If you think arc is whatever pg says it is, then what we are saying and doing here is irrelevant...") on statements that should be considered only in relation to the thread. It also leads to unintentional attacks such as "In any case, it feels quite delusional to compare arc to clojure ...". I don't think you realize you suggested I'm being delusional by adding that comment... Arc and Clojure are both modern lisps that have eliminated the overuse of brackets, so really is it delusional to suggest these two languages are more similar than not? Am I creating some injustice by telling someone, that's already leaning towards Clojure, that these languages are very similar anyway?

I'm going to end this thread here as I think it has already gone off the rails.

Cheers.

-----

2 points by akkartik 4255 days ago | link

Sorry I'm causing offense. It was indeed utterly unintentional, and fwiw, I actually was never in the slightest conscious of feeling offended by anything in this thread. I'm entirely the offender and not an offended party.

I didn't mean to trigger associations like "injustice". When I said "delusional to compare arc to clojure" I was trying to be self-deprecating. Arc is just a toy, clojure is real. You're absolutely right in your defense of clojure.

-----

2 points by thaddeus 4255 days ago | link

Not to worry, I've known you long enough now to know you're not mean spirited or intending offence. Hopefully I didn't get too grumpy, but I needed to put and end the thread because I could see we had different ideas on what the thread was even about.

-----

1 point by akkartik 4257 days ago | link

I can relate to the frustration. It's hard to predict when the next great stack will come along. I try not to make irreversible choices so I can jump to it as long as possible.

-----

2 points by rocketnia 4258 days ago | link

pg: "Comments get from pending to live by being endorsed by multiple HN users with over 1000 karma."

Funnily enough, akkartik, you're the only recent poster with that much karma. XD

-----

2 points by akkartik 4258 days ago | link

No danger of it happening here. Arc forum is running some ancient version from what I can tell. They probably learned to stop messing with it after the voting ring detector went haywire. I wonder how many of us remember that :)

-----


The error message indicates you're running anarki. What version are you running? Did you make any changes to it?

-----

2 points by cooler 4261 days ago | link

I just gitclone it,so it should be the latest version,and no change.

Thx.

-----

3 points by zck 4267 days ago | link | parent | on: Listtab

Glad to help out!

Also, it looks like you're new here. Welcome! Feel free to post any questions or thoughts about Arc; this forum is really welcoming to newcomers, and I'd like the community to grow bigger.

-----

2 points by zck 4267 days ago | link | parent | on: Listtab

If nothing else, you can use 'listtab to convert an association list (http://arclanguage.github.io/ref/assoc.html) to a table:

    arc> (= al '((k1 v1) (k2 v2)))
    ((k1 v1) (k2 v2))
    arc> (alref al 'k2)
    v2
    arc> (listtab al)
    #hash((k1 . v1) (k2 . v2))
And it is more readable for long argument lists:

    arc> (obj 1 2 3 4 5 6 7 8 9 0 a 2 b 3 r 4) ;; Is 0 a key or a value?
    #hash((r . 4) (1 . 2) (b . 3) (3 . 4) (a . 2) (5 . 6) (7 . 8) (9 . 0))
    arc> (listtab '((1 2) (3 4) (5 6) (7 8) (9 0) (a 2) (b 3) (r 4))) ;; a val.
    #hash((r . 4) (1 . 2) (b . 3) (3 . 4) (a . 2) (5 . 6) (7 . 8) (9 . 0))

-----

2 points by zck 4276 days ago | link | parent | on: Rewriting in to accept a list?

>Sorry, I know this isn't Stack Overflow, but virtually no one follows the arc-lisp tag there, and I don't know anywhere else to post.

Don't worry about this. I'm happy whenever anyone's talking about Arc. I'd love to have the problem that people are posting too much here.

I've been confused by this issue too. There are two things here.

1. First, instead of using 'in, you can use 'pos:

    arc> (pos 1 '(1 2 3))
    0
2. Let's make your macro work anyway:

First, reproduce:

    arc> (inl 1 '(1 2 3))
    Error: "_quote: undefined;\n cannot reference undefined identifier"
Huh, it works if you use 'list:

    arc> (inl 1 (list 1 2 3))
    t
Or without 'list:

    arc> (inl 1 (1 2 3))
    t
This is interesting. Let's use 'macex1 to see what happens:

    arc> (macex1 '(inl 1 '(1 2 3)))
    (in 1 quote (1 2 3))
So the problem is that '(1 2 3) really is a list with two things in it: the symbol 'quote and the list (1 2 3). I'm a little bit uncomfortable with this explanation, but this seems to mean that you don't want to pass a quoted list into a macro, but unquoted. This is the way most macros are used, but I hesitate to make it a global rule. Some day I'll understand macros better.

-----

1 point by akkartik 4276 days ago | link

  arc> (inl 1 (list 1 2 3))
  t
I wouldn't rely on that:

  arc> (inl list (list 1 2 3))
  t
  arc> (let x list
         (prn list)
         (inl list (list 1 2 3 4)))
  #<procedure: list>
  t
So you're actually searching a list that includes the function list.

"..you don't want to pass a quoted list into a macro, but unquoted. This is the way most macros are used, but I hesitate to make it a global rule."

The rule is, the arg is eval'd if it's eval'd in the expansion. (Since macros don't eval args, they eval the return value.)

  (mac foo (x) (cons 3 ,x))  ; will eval x
  (mac bar (x) (cons 3 ',x))  ; won't eval x

-----

More