Arc Forumnew | comments | leaders | submit | pg's commentslogin
13 points by pg 6405 days ago | link | parent | on: How to achieve your goal for Arc

That's pretty obsolete. When I wrote that I was in the middle of trying to write a new Arc whose source was as clean as formal semantics but was actual working code. That turned out not to work because the resulting language was so slow I didn't want to use it for anything, and without applications to drive me I stopped caring about the language. What eventually happened after various experiments was that Robert and I wrote a new implementation that was a compromise between cleanness and practicality.

So now instead of starting with cleanness and trying to achieve practicality, the plan is to always work on practical stuff (like "always have running code") but constantly push the source toward cleanness. I feel like a lot of the definitions in arc.arc for example are close to final form.

-----

21 points by pg 6405 days ago | link | parent | on: How to achieve your goal for Arc

Pg appears to be unresponsive in taking actions that would further that goal.

I read almost everything here. Just because I don't respond immediately to something, that doesn't mean I'm not planning to fix/work on it.

-----

10 points by nex3 6405 days ago | link

That's really good to hear. It's easy to feel like we're just spinning our wheels, but knowing you're paying attention and that our work might actually be useful is heartening.

-----

3 points by almkglor 6405 days ago | link

pg is Big Brother For Life!

-----

7 points by pg 6406 days ago | link | parent | on: Does Arc allow cyclic lists?

You can make them (and all kinds of other circular structures) but there's currently no way of printing them out. Fixing that is not a top priority. There are plenty of things you don't want to print in the repl, like million-item lists. So in the repl the way to deal with this is by using e.g. (do1 t ...).

I admit it's a problem if you explicitly want to print a circular list, e.g. to store it in a file. But in my experience that is rare.

-----

1 point by absz 6406 days ago | link

I know that mzscheme has a method for printing out circular lists:

  > (define x '(1))
  > (set-cdr! x x)
  > x
  #0=(1 . #0#)
I'm sure there's a good reason that Arc can't just leverage it, but what is said reason?

-----

3 points by pg 6405 days ago | link

Actually it probably just got lost somewhere in converting from nil-terminated lists.

-----

4 points by pg 6409 days ago | link | parent | on: Ask PG : are they axioms or core functions ?

There's currently a lot of stuff in ac.scm that could be moved up into Arc. I'll get to it eventually.

-----

5 points by pg 6409 days ago | link | parent | on: Arc2.tar

BTW, just noticed a bug: hours-since should be called minutes-since. Fix in next rel.

-----

8 points by pg 6410 days ago | link | parent | on: ~Tilde and macros

Yes, ~f means the same as no:f. So far I like the brief and distinctive look of negated functions thus: ~foo. But since potential symbol-syntax chars are rare, I might use ~ for something else one day if negated fns turn out not to be too common. There are currently only 9 in news.arc (1410 LOC).

Edit: Looks like there could be 4 more. Most of news.arc was written before ssyntax, so it's not maximally up to date.

-----

8 points by pg 6410 days ago | link | parent | on: ~Tilde and macros

no:litmatch only works in functional position, because (no:litmatch ...) is transformed in ac into (no (litmatch ...)).

To add to the confusion, it's a bug that ~litmatch doesn't work in functional position. There's a comment reminding me to fix that in ac.scm.

-----

1 point by parenthesis 6410 days ago | link

Wouldn't it make more sense for (~foo ...) to expand into (no (foo ...)) ?

-----

2 points by absz 6410 days ago | link

Not really, because that would make (keep ~foo lst) meaningless, and that's an important use of ~.

-----

5 points by pg 6410 days ago | link | parent | on: ~Tilde and macros

What you're thinking of can be done, but only by calling eval explicitly. I.e. what you could do thus with or if it were a function:

  (apply or args)
you have to do thus with the real or, which is a macro:

  (eval (cons or args))
This is not surprising, because macros live in the world of expressions, not values.

-----

3 points by pg 6410 days ago | link | parent | on: Arc2.tar

I just arranged for static files to be read from a separate dir; it will go out in the next release.

-----

3 points by lojic 6375 days ago | link

Can you allow paths also?

http://arclanguage.com/item?id=5599

-----

4 points by pg 6410 days ago | link | parent | on: Arc2.tar

We're still using 352, yes, but it may work on later versions.

-----

More