Arc Forumnew | comments | leaders | submit | pmarin's commentslogin
1 point by pmarin 3342 days ago | link | parent | on: Documentation

It is not working. When I try to login It is sending a new password to my faked email account...


1 point by evanrmurphy 3342 days ago | link

Apparently someone has changed the password. That's disappointing.


3 points by thaddeus 3341 days ago | link

> That's disappointing.

It is.

Should we not start a new forum called the Anarki forum? After all, this forum already suffers from this dichotomy and could benefit from a clean separation.

Plus add on the fact that we can't accomplish very simple things like a front page guiding new users is embarrassing. And although we could create another added resource I find front page management is really important. It would save us all from having to answer the same question 50 million times over. I, for one, would never come back to this forum if the active & engaged community members were to move over to a new one.


2 points by evanrmurphy 3341 days ago | link

+1 that no front-page control is a hindrance.

Don't forget


3 points by pmarin 3342 days ago | link | parent | on: Documentation

I started it.


1 point by pmarin 3449 days ago | link | parent | on: Arc based on?

Scheme From Empty Space:


1 point by akkartik 3449 days ago | link

Jeez, I just spent 20 minutes on a role playing game. Is there a direct link to the download? :)


1 point by pmarin 3449 days ago | link

The previous version:


1 point by pmarin 3682 days ago | link | parent | on: Why does pr return it's first arg?

Try 9term. you can edit the text buffer and resend it to arc. You will need to read carefully the man page if you are not familiar with Plan 9 tools.


1 point by pmarin 3694 days ago | link | parent | on: Toy lisp interpreter in lua

I am also writting my own toy lisp: Muddy Scheme in Tcl. I am planning to implement R4RS and to add all the feactures of Arc (without continuations and with different thread model). I want to try if is possible to have one interpreter with two modes scm/arc, only changing the eval functions and special forms.

Of course It is too slow for real use, It is just a learning tool (I even had to learn how to do the mark and sweep garbage collector).

The code (use only the gc2 branch):


1 point by meric 3693 days ago | link

"This interpreter tries to follow the awesome "Scheme from Scratch" articles written by Peter Michaux." I learnt alot from his code too! I thought about doing some thing like "implement R4RS" eventually but figured I should learn a bit more about lisp first. I think its possible to do scm/arc together.. I'm not sure you even need to change the eval function...


1 point by pmarin 3727 days ago | link | parent | on: Scheme from Scratch - Introduction

How about Arc From Scratch?


3 points by fallintothis 3727 days ago | link

Smart-ass answer: once you build up to mzscheme, you can run Arc. ;)

To elaborate: Scheme and Arc aren't that different to implement. Parsing & literals are largely the same (Arc doesn't use booleans, vectors, et al.), Lisp constructs are fairly standard (quote, if, assign, fn, etc.), and Arc even borrows high-level features like TCO and continuations. Scheme uses hygienic macros, which seem harder to implement than Arc/CL-style macros anyway. Moreover, Arc is simple: the "primitive" things are in ac.scm and the "meat" is in arc.arc. Once you get the Scheme side working, you get the rest of Arc for free.

Good series, though. With the above in mind, it'd be pretty easy to tweak Scheme-from-Scratch into Arc -- and a good exercise, at that.


With the vaporware Parrot VM theorically is possible but I have no idea how.


3 points by garnet7 3753 days ago | link

Arc is listed among the [Parrot-supported languages]( Dunno what kind of shape the implementation is in though.

Parrot is having regular releases, and Rakudo is coming along, so I wouldn't call Parrot vaporware.

Also, my understanding is that code running under any parrot-hosted language can call code from any other parrot-hosted language. I haven't tried this out yet. This would, of course, be very nice for Arc.


2 points by thaddeus 3752 days ago | link

looks great

do see

also, I am guessing by the time stamps that version 2 of arc was the current build so 3.1 would likely have problems.


5 points by stefano 3746 days ago | link

Autor here. The implementation on github is for arc 2 and is really outdated. I've got a lot of improvements, including support for arc3 and a self hosting compiler that I haven't released yet. I've stopped working on it after seeing how slow Parrot is at the moment (or at least how slow it was a few months ago). The implementation is quite complete and can load a slightly modified version of arc.arc (mostly to avoid overriding internal functions) but could be easily modified to load the official arc.arc. To give an idea of how slow it currently is, just loading arc.arc takes a few minutes (but it can be pre-compiled, so startup is fast). On my computer it took something like 9 minutes, after an optimization to my code generator I brought it down to 4 minutes, and after a new release of Parrot it went back to 9 minutes (without changing my code, it was the VM's fault). After that, I stopped the development. Another show stopper is that just spawning a new thread makes the VM segfault, thus preventing me to run a slow version of news.arc.

If someone is interested, I can push this new code to the github repo. It probably needs some modifications (not too many hopefully) to work in the latest Parrot, since they've been changing a lot of stuff in the last months. Keeping up with these continuous changes is also among the reasons why I stopped the development. Every month, after a new Parrot release, something broke because the API, or the build system, changed.


2 points by pmarin 3746 days ago | link

I believed that after the version 1 there should be any modification in the API. You have the same problem with Parrot than the rest of the developers. I think the only proyects that are still update are Partcl and Rakudo.

I follow Partcl becouse I am a Tcl user. It is being rewriting in NQP. The Pir version could pass 4089/7397 test from the official test suit. It a lot slower that the official version.

Can you explain how is possible(theorically) to use libraries from various languages with another language in Parrot? The library have to be compiled to Pir?


3 points by stefano 3746 days ago | link

They're still deprecating stuff after every release, and the following month deprecated stuff is removed.

All languages on Parrot compile down to a common denominator, Parrot's assembly language (PIR), either dynamically at run time or before execution. It has an object system and common function call conventions, this means that as long as a language supports calling functions and a compatible object system (or some wrappers around it) it can call any function and use any object as other languages running on the VM. Arc doesn't have an object system, so some wrapper would be needed. To get seamless interoperability the language implementation should define a mapping between the language's primitive types and the corresponding Parrot's types. Primitivearc currently lacks the wrappers around the object system to interoperate with object oriented libraries (adding them wouldn't be a huge task I think), but it can already call any function loaded into the VM. To call a Perl 6 function (this doesn't work because 'load assumes an Arc file but it could be easily modified to call the correct compiler, since the mechanism is already present in Parrot):

  file foo.p6:
    sub foo(%tb) {
      return %tb{"bar"};

  Arc REPL:
    > (load "foo.p6")
    > (foo (listtab '((bar "Baz!"))))


1 point by s-phi-nl 3745 days ago | link

Conanite's Rainbow has a wrapper around the Java object system that you might want to look at.


2 points by adm 3746 days ago | link

maybe work on this can be resumed after, Rokudo star release.


1 point by pmarin 3955 days ago | link | parent | on: (draft) Using Git Commits for Hacks

Maybe this is unrelated but why not use a makefile approach:

    target (library.version or patch): dependencies (other libraries or patches)
        command1 (git clone "library1 path")
        command2 (git clone "library2 path")
Of course someone should make something similar to make(1) in arc.


3 points by pmarin 3956 days ago | link | parent | on: Arc Logo

I see the lowercase a. The blue and black colors are too similar in my screen, I had to use the ancient xmag program to zoom the logo ;)

Anyway, I like the logo.


3 points by pg 3956 days ago | link

You could have just clicked on the link:


2 points by pmarin 3966 days ago | link | parent | on: Thank you pg and rtm!

The HN link to this post make me feel that there is something wrong with all the news systems when the content of a link is taken outside of its original context.


2 points by CatDancer 3966 days ago | link

Though there is the compensating power of the Internet in that I was able to instantly place a disclaimer at the top of my piece :-)