Arc Forumnew | comments | leaders | submitlogin
2 points by krapp 6 days ago | link | parent | on: Noob resources for Arc/Anarki?

>"Package manager" means wildly different things and has wildly different responsibilities in different contexts and languages and platforms

I disagree. Most package managers for most languages share the same core functions and responsibilities: import and export code (likely from or to a repo), organize code into "packages" or "applications" according to some hierarchy, describe dependencies for packages using metadata and manage those dependencies when importing or updating.

The "special sauce" between them is in the way packages are defined and the metadata, and the way dependencies are handled, and those are details the Arc community could argue about until the heat death of the universe. But ~90% of what new people will want from Arc is to import News as an application or import libraries into their own local version of News.

1 point by akkartik 6 days ago | link | parent | on: Noob resources for Arc/Anarki?

I'm not following "..just press play and start using it to automate everything." Is there a specific task you're trying to use Arc for?

It's definitely true that Arc has lots of deficiencies when it comes to tooling. We're not going to fix them all at once. So if you have suggestions for the most important three (or dozen!) tools you'd like it to provide, I'd love to see them. More specific tool suggestions are superior here to general ones. "Package manager" means wildly different things and has wildly different responsibilities in different contexts and languages and platforms. So I'd particularly like to see suggestions that talk about a specific situation that applies to you. "In ___ context, If I run ___, Arc should ___."

3 points by nupa 6 days ago | link | parent | on: Noob resources for Arc/Anarki?

I suppose that's fair. I guess I'm just angsty because arc clearly delivers on the promised elegance of lisp better than common lisp does, but arc isn't yet at a point where I can just press play and start using it to automate everything. Someday I hope to get to a point where I can contribute to anarki myself and make it into the power tool I know it ought to be, but I'm still at the stage where build tools scare me and everything seems needlessly complicated.
2 points by akkartik 7 days ago | link | parent | on: Noob resources for Arc/Anarki?

Interesting, I didn't realize IDLE comes bundled with Python. Looks like it came out in Python 2.6! https://docs.python.org/2.6/library/idle.html. That's from 2008.

Bundling a package manager for Anarki would be a little like being all dressed up with nowhere to go. There just aren't any libraries outside of the repo, to my knowledge. The community tends to add code directly to the repo since anyone can easily get commit access. That seems more elegant than a package manager, at least for this stage of Anarki's life.

2 points by nupa 7 days ago | link | parent | on: Noob resources for Arc/Anarki?

As of Python 3.7 at least, it comes with pip package manager and IDLE ide already installed. Yeah, you can use other tools, but it comes with the bare minimum all right there in the installer -- everything "just works" in a way I've never gotten with a lisp to date.

Although someone recently suggested I try Portacle, which is common lisp bundled with emacs and quicklisp already set up. That's definitely got my interest.

I still wish it was as "elegant" as arc, but maybe I'll find out it's complicated for good reason. We'll see.


relevant HN thread: https://news.ycombinator.com/item?id=19430840
3 points by krapp 37 days ago | link | parent | on: Noob resources for Arc/Anarki?

>I install packages (although I think the only ones I use are ones I've created) by downloading the file, then calling `(load "/path/to/file")`.

To be fair, though... when most people say they want to "browse and install packages" for a language, they don't mean including local files through a REPL. Although that is the best we can do in Arc for now.

3 points by zck 39 days ago | link | parent | on: Noob resources for Arc/Anarki?

I can't help with #1, as I'm not on Windows.

> 2. Browse and install packages.

I install packages (although I think the only ones I use are ones I've created) by downloading the file, then calling `(load "/path/to/file")`.

> 3. Write code with syntax highlighting.

I use Emacs. I use the same syntax highlighting as Common Lisp with this line in my Emacs config: https://bitbucket.org/zck/.emacs.d/src/de1b94f07f5d89fb88e1b....

There is an Arc editing mode that ships with Anarki (https://github.com/arclanguage/anarki/blob/9e53a1f2ed0158869...), but I've never tried it. I should!


> Robert Tappan wrote the server code of the small company in Common Lisp.

Probably should reference Robert with his last name Morris? I imagine not that many people would know his middle name. I know I didn't.


Did some digging after running into this forum. Perhaps these articles are of interest to some of you.
3 points by waterhouse 45 days ago | link | parent | on: Show Arc: Serializable Closures

It's possible to record the fact that some cons cells (or other structures) are identical. The Lisp reader's #n= notation can be used for this, although usually it's only used to print circular lists. Common Lisp's print-circle can be used to demonstrate this:

  * (let ((x (cons 1 2))) (princ (list x x)) nil)
  ((1 . 2) (1 . 2))
  NIL
  * (let ((*print-circle* t)) (let ((x (cons 1 2))) (princ (list x x))) nil)
  (#1=(1 . 2) #1#)
  NIL
Now, if you have a running process, and you want it to seralize a closure (or, generally, an object) that points to a cell that happens to be identical to something else in the process, and you want to read the closure back in and have its pointed-to cell continue to be identical to that other thing... you'll need something more sophisticated. If each object is given some unique id, that would be one approach; that sounds like the mailboxes thing. Another approach would be... say, if the other cell is the 5th element of a list identified with the global name 'blah, then conceivably that could be a good syntax. This might be useful for modules, separate compilation, and/or saving arbitrary process state.
3 points by rain1 46 days ago | link | parent | on: Show Arc: Serializable Closures

what needs explained?
2 points by whitten 47 days ago | link | parent | on: Show Arc: Serializable Closures

Could you elaborate on this or give me pointer what we re it is discussed?

As a side question. Does anyone understand why they have both an arc news app and a discord forum? Seems to me like that would just separate the community.

I don't 'discord' so maybe someone else has insight?

I do wonder how much activity occurs in one vs. the other as it could be a good measure to determine which one is more appealing to a general audience.

2 points by rocketnia 51 days ago | link | parent | on: Running in DrRacket?

Thanks. I'm afraid I've never encountered something like that, but I can suggest a few things just in case....

Since arc.cmd is practically a one-line script, what do you get if you try to run the `racket` executable directly, like so?

  racket -t boot.rkt -e "(anarki-windows-cli)"
I've found pretty much just one thread online where people reported a similar issue (https://github.com/Microsoft/WSL/issues/2323). People attempted various fixes in the thread, and they didn't work for everyone.

Some of the approaches they took:

- There's a diagnostic tool which some people found limited success with. It would fix the location of their temp folder. Then a few days later it would break again. Here's a link to the comment that links to that tool: https://github.com/Microsoft/WSL/issues/2323#issuecomment-31...

- One person gave detailed instructions for diagnosing and fixing permission issues, in case that's what it is: https://github.com/Microsoft/WSL/issues/2323#issuecomment-41...

- It seems it might be some difference depending on whether the account you're doing this with is roaming or an administrator. At least, a lot of people in the thread thought it would make a difference. Maybe your command prompt works with Arc because it's a different user.

If you find out any more about what's going on, I hope you'll keep us in the loop. :)

Of course, since you already have this working via the command prompt, it's understandable if you prefer not to mess with it.


Yup, that's right.

IIRC, Laarc (https://www.laarc.io) (Hacker News Clone) is running Arc (don't quote me on that though).
3 points by akkartik 51 days ago | link | parent | on: Noob resources for Arc/Anarki?

On a tangent, I'm curious what bits you find are included with Python :) I use it for my dayjob, while it has lots of libraries I can't think of what IDE or commandline tools you're thinking of.
2 points by krapp 51 days ago | link | parent | on: Noob resources for Arc/Anarki?

>I've heard of foreign function interfaces, does Arc have one of those?

If Racket interop counts, then yes, albeit not seamlessly.

>it's an amazing core but not much else.

Yeah, it's mostly News and some random experiments. Fun to mess around with, though.

2 points by nupa 51 days ago | link | parent | on: Noob resources for Arc/Anarki?

Thanks for the advice! I figured I was just missing something, but if it doesn't exist yet then that's reasonable enough.

I've heard of foreign function interfaces, does Arc have one of those?

Regardless, I'm sort of getting the impression that Arc is something I should come back to someday when I'm able to contribute tooling to it -- it's an amazing core but not much else.

3 points by krapp 51 days ago | link | parent | on: Noob resources for Arc/Anarki?

In Windows, the install instructions in the readme should work. You may or may not have to set environment variables, I don't remember if I had to do that, but I don't remember having any issues. You'll probably want Git and MinGW as well.

If by "browse and install packages" you mean for Arc, you can't, yet.

I use Sublime Text with the syntax set to Lisp (which works well enough) and the terminal plugin, so I can open a Powershell prompt with Ctrl-Alt-T.

2 points by nupa 51 days ago | link | parent | on: Running in DrRacket?

Apologies, I just saw this reply now. It looks like this:

    PS C:\git\anarki> .\arc
    Program 'arc.cmd' failed to run: Access is deniedAt line:1 char:1
    + .\arc
    + ~~~~~.
    At line:1 char:1
    + .\arc
    + ~~~~~
        + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
        + FullyQualifiedErrorId : NativeCommandFailed

Just in case anyone might care, the current version of news deprecates npage and the subpage templates for a single layout macro and no longer uses the table layout, so that all news pages have a consistent look and navigation. I'll get around to finishing my vague plans to clean up and update the HTML eventually, since there are still some inline styles and font color tags and such that need to be gotten rid of.

Also, there's no longer any (gen-css-url) or votejs*, those have been moved entirely to external js and css files (except for the topbar color.)

Also eventually, I'm hoping to separate the layout stylesheet from the color stylesheet so that the latter can be swapped out as themes.

[0]https://github.com/arclanguage/anarki/blob/master/apps/news/...

3 points by uu 52 days ago | link | parent | on: Variables & scoping complaint

Thank you, that's 100% on point!

Setting local variables should be simpler (or equivalent to) setting global variables. It's so much easier to do (= v 10) than (let ((v 10) ...)) despite "let" / "with" arguably being preferable to "=" in most cases.

2 points by rocketnia 55 days ago | link | parent | on: Variables & scoping complaint

Oh, right, here's another reason I don't like the CoffeeScript/Ruby/MATLAB approach where a variable is declared automatically at the outermost point where it's assigned: I like to be able to declare local variables that shadow variables from outer scopes. When `=` declares non-shadowing variables only (since the rest of the time it acts as an assignment rather than a declaration), shadowing is more cumbersome to do.

Is this thread part of a conversation happening somewhere else?

I'm curious what _unwriter's response would be

It's in the same place. Try adding some text outside the table tag. For example:

  (mac npage (title . body)
    `(tag html
       (tag head
         (gen-css-url)
         (prn "<link rel=\"shortcut icon\" href=\"" favicon-url* "\">")
         (prn "<meta name=\"viewport\" content=\"width=device-width\">")
         (prn "<base target=\"_blank\">")
         (tag script (pr votejs*))
         (tag title (pr ,title)))
       (tag body
         (center
           (tag (table border 0 cellpadding 0 cellspacing 0 width "85%"
                       bgcolor sand)
             ,@body)
           (prn "Copyright blah blah")))))

This seems like egregious hype mongering. Two examples:

a) "Pure functions are easily parallelizable since they encourage immutable data structures which reduce the side-effects that make code hard to run on multiple processors. This is how Bitcoin will reach its infinite scalability."

Pretty abrupt transition there from a sentence that had me nodding along to one that gives me whiplash. Wait, wha? Pure functions are used in lots of places outside Bitcoin. None of them brags infinite scalability. So perhaps you need more than pure functions?

b) "@TensorFlow uses the functional programming paradigm of lazy evaluation. A tensor flow graph exists separately to the computation of that graph.

"Bitcoin can and will be used to create true artificial intelligence."

I don't think I need to say anything about the last sentence. For the rest, the author needs to make up their mind whether the paradigm is functional programming or lazy evaluation. Lazy eval is just a mechanism. Tensorflow uses it in the part of the system that is stateless. Other parts of ML are incredibly (and incredibly subtly[1]) stateful.

My homebrew blog server has a part with lazy evaluation. It's a few lines of code. It's not going to give me infinite scalability anytime soon.

[1] Since many ML systems don't explain their models, there's a state dependency from any results they provide to all training data they've ever seen.


Saw this on HN and was going to print it off to read later. But its 38 pages discouraged such and I bookmarked it.

Looks interesting though.

More