680 karma · joined July 17, 2008
x
xx xx
x
Worst-case would be going from far left to far right, which would take 3 presses.A Ruby -> Python -> Perl -> Lua -> OCaml -> Haskell -> C -> Java -> Brainfuck -> Whitespace -> Unlambda -> Ruby quine!
In its early stages it was continuation-based, but now it's just regular ol' closures. You can still use continuations rather easily though; some of it is modeled on the PLT stack (send/suspend, etc.).
Earlier progress: https://gist.github.com/717381/433d743dc4a7d91705692ff1dc6ca...
Source code: http://bitbucket.org/alex/web/src
I've noticed this about the Market - there are a lot of blatant clones of better-executed iOS apps.
I modeled Anatomy, Atomo's documentation system on it: http://atomo-lang.org/docs/core.html
I've also written a few wrappers for Haskell libraries over at http://darcsden.com/alex - see http, json, and command.
Basically, you define your methods in Haskell, and call them from Atomo; these methods can be defined as an expression (=:::), a value (=::), or some arbitrary VM action to be executed to yield a value (=:). (Admittedly those operators have gotten a bit silly.)
The definitions use QuasiQuotes for the method pattern, and can use them for expressions as well, though that's not encouraged (operator precedence and macros make it a tricky thing to do at compile time). They look a bit noisy - [$p|x foo: y|] but that'll be fixed come GHC 7, where that pesky $ is removed.
I'd call it "fast enough," but it's no speed demon. It's pretty early on; I just started planning Atomo's design this June. There's almost certainly some low-hanging fruit when it comes to optimization, and it is something I've been keeping a close eye on for a while now. It's only been getting faster, and in my testing of GHC 7 I saw pretty substantial performance boosts for free. And that's the nice thing. It's built on a fantastic platform, which you can drop into very easily whenever you want with a nice DSL.
Glad you like it, though. I completely understand the caution when it comes to performance of such a high-level language.
When you said "for 0, fib is 1," you could just as easily say "for the current scope object, x is Object clone." This is exactly how it works. Method dispatch is 100% pattern-matching, and Atomo's scopes are 100% message dispatch, combined with delegation.
When you say "0 fib = 1", the method is inserted on Integer. When you send a message to an Integer, you're sending (pseudocode) `Single "fib" (Integer 0)`. The methods on Integer pattern-match on that, in this case with `PSingle "fib" (PMatch (Integer 0))`. If that pattern fails, it moves on to "1 fib = ...", and finally to the least-precise "(n: Integer) fib := ...".
Not sure if that answers your question, but I thought I'd expand on it a bit.
I fell in love with darcs (switched from git) and wanted a place to put my stuff, since github would no longer be of much use to me. So I made it. Right now I just add things as I need them, or think they'd be a good idea (like "ssh username@darcsden.com init reponame"). Been meaning to get around to built-in issue tracking, but I'm busy working on other projects.
Source here: http://darcsden.com/alex/darcsden
I was a part of that "subculture" in middle school. My classmates wear the same clothes (I spotted a cheap plastic trenchcoat the other day, ugh), listen to the same music (Malice Mizer fandom, X-Japan wristbands/purses), and have the exact same mannerisms that I grew out of come high school (I'm now in college).
Still a fun bunch, though I still cringe from time to time. It's just weird being back in that "loop" after so long, to see that nothing has changed.
No fuss, no tricks, non-crappy administration area. They even provide their own name servers for free. I've been using them for years and have no complaints.
It's a reverse engineering of a popular MMORPG called Ragnarok Online (or RO). Last time I was working on it, you could log in with the official client, walk around, teleport, chat, etc. (The walking had to be done in C, though; one pathfind per walk request is not something I'd want to leave to Erlang.)
Actually, the article seems to be wrong? It seems to imply that this shouldn't work:
Io> x := Object clone do( forward := 0; a := 1 )
==> Object_0x1003a2e90:
a = 1
forward = 0
Io> x a
==> 1
Io> x b
==> 0
Io> x b := 2
==> 2
Io> x b
==> 2
(paragraph: There are some things you should know about forward(). It's very powerful. Too powerful. [...])Seems like Io's "forward" is a lot like "did-not-understand" (and similar mechanisms in Ruby/etc. languages), but it takes priority over messages that would've otherwise been understood.