605 karma · joined February 24, 2010
What does AMA mean?
I forgot to mention though that the idea is to use the shortest names possible for the core language operators. That's when they're the biggest win, since you'll learn those well enough not to need descriptive names, and they cut program length more substantially since they're used so often.
If someone was unable to get a standing desk, do you think kneeling at a normal desk might be better than sitting all the time?
Part of Arc's design philosophy is to never inconvenience advanced users in order to serve novice ones. Long, descriptive names help people unfamiliar with a language's operators better understand what they do, but the length can become a burden once they do know.
For example, when I first started learning Arc, it would have saved me some headache if afn had been named anaphoric-function. Now I would find that a real nuisance. I love being able to invoke such a powerful abstraction with just three keystrokes.
Here's an interesting exercise. This is the given solution to the Arc Challenge [1]:
(defop said req
(aform [w/link (pr "you said: " (arg _ "foo"))
(pr "click here")]
(input "foo")
(submit)))
What would you prefer that it looked like? If you replaced all the abbreviated names with long descriptive ones, you'd have something like: (define-operator said request
(html-anaphoric-form
[html-with-link
(print "you said: " (argument _ "foo"))
(print "click here")]
(html-input "foo")
(html-submit)))
---I wouldn't say that understanding Arc's source is a prerequisite for installation. The problem is more just that the instructions are complex [1].
It would probably help if they were updated to let people know that with arc3.1, you don't have to worry about installing version 372 of MzScheme [2]. (Unless there's some reason why you'd prefer people installed arc3.0.) Navigating their website to download the specific old version of MzScheme is especially confusing since they rebranded as Racket.
This reduces the install and run to (on Ubuntu 10.04):
$ sudo aptitude install mzscheme
$ wget http://ycombinator.com/arc/arc3.1.tar
$ tar -xvf arc3.1.tar
$ cd arc3.1
$ mzscheme -f as.scm
---Usage examples:
arc> help.acons
[fn] (acons x)
Determines if `x' is a `cons' cell or list.
Unlike 'alist, this function will return nil if given an empty list
See also [[atom]] [[alist]] [[dotted]] [[isa]] [[cons]] [[list]]
nil
arc> help.alist
[fn] (alist x)
Return true if argument is a possibly empty list
Unlike 'acons, this function returns t when given an empty list
See also [[atom]] [[acons]] [[dotted]] [[isa]] [[cons]] [[list]]
nil
arc> help.afn
[mac] (afn parms . body)
Creates a function which calls itself with the name `self'.
See also [[fn]] [[rfn]] [[aif]] [[awhen]] [[aand]]
nilHere's an approach that's a variation/refinement of my current one: Instead of just orphaning old clients when their sandboxes get GC'd, leave them with a local copy of their REPL history. If they try to use the REPL again after a long period of silence, a new sandbox will be allocated for them (as it would be for a fresh client), and all the commands in their REPL history loaded in to bring it back to its previous state.
This approach could potentially pave the way for users having persistent REPLs, even across page reloads.
---
If you got it when you first arrived or in some other context, you're bug reporting. Tell me more!
In either case, if you (wait a few minutes and) reload the page, it will probably work. Thanks for your patience.
Yes. Arc's reference implementation inherits TCO from Racket.
I'd like to find a more graceful way of handling this. Any suggestions?
You make a good point, though. Maybe basic HTML just has Discard to stay consistent with standard.
This is an excellent point.
There are two situations where Cancel buttons are proper.... The first situation is confirmation windows.... The second situation is progress bars.
Would this suggest that Cancel buttons are never appropriate on basic HTML / mobile websites? This seems like an extreme rule to me, but maybe it's good advice.
Thanks though, you've saved me countless future misspellings of that word.
I think this is less binary than the article suggests. In addition to expression and repression of anger, there is also "letting things go." When you can forget about something that made you mad, you get the satisfaction of knowing you didn't let it phase you (arguably better than catharsis) without all the problems associated with revenge and obsession.
I really like this paragraph from http://paulgraham.com/top.html:
Turning the other cheek turns out to have selfish advantages. Someone who does you an injury hurts you twice: first by the injury itself, and second by taking up your time afterward thinking about it. If you learn to ignore injuries you can at least avoid the second half. I've found I can to some extent avoid thinking about nasty things people have done to me by telling myself: this doesn't deserve space in my head. I'm always delighted to find I've forgotten the details of disputes, because that means I hadn't been thinking about them. My wife thinks I'm more forgiving than she is, but my motives are purely selfish.
Very interesting definition. Thanks for sharing that.
It vaguely reminds me of Amartya Sen's Development as Freedom, in which he explores how the right to certain opportunities may be as essential to freedom as the right to property.
The connection may only be superficial, but that was a good book too. (Sen was a Nobel Prize winner.)
And of course, the Clojure setup is actually attractive if you're already using Emacs, especially since it offers integration with SLIME. No one has been able to do that with Arc yet, as far as I know. (With Racket, I'm not sure.)
I have less experience in CL and Racket. I would think that since CL's macros are unhygienic, they would be easy to write as they are in Clojure. It could be that I just haven't gotten the hang of Racket's macros yet, and that once you do they aren't any harder. Let me know if this is the case.
Great insight. Thanks for teaching me about this.
I was actually impressed by the appearance, and I don't see many other commenters italicizing their disgust, so this is probably an overstatement.