Welcome to another issue of Clojure weekly, my small routine blog contribution to the Clojure sphere! These are just a few links, normally 4/5 urls, pointing at articles, documentation, screencasts, podcasts or anything else that attracts my attention. I add a small comment so you can decide if you want to look at the whole thing or not. That’s it, enjoy!
cemerick/pomegranate · GitHub Pomegranate is a Clojure wrapper on top of eclipse.org/aether, a library for dynamic manipulation of project dependencies. Uhm, why should I need that? Well, if you want to add a dependency to your project and then use some library in your code, the responsibility is split into a pom.xml/project.clj that is resolved at build time and an import into your Java runtime. The real question is why you should have a piece of XML or a special Clojure file at build time to deal with. All that is needed is some mechanism to programatically declare coordinates about the dependencies (which now lives in your code, exactly where it’s needed, can be tested and read as documentation). Aether provide that mechanism and Clojure makes it possible with Pomegranate. The only downside I see is the “warm-up” time needed for your app to be sure dependencies are downloaded locally from some remote repository. If can deal with that in several ways, like preloading dependencies before real run.
xmonad/osxmonad · GitHub Sorry, this could be slightly tangential to Clojure. You might have heard of XMonad, a X-Window manager for unix written in Haskell. The main design of XMonad is to make window management from the keyboard possible. The source code of XMonad is strikingly short for the features it provides and it demonstrate what happens when a complex system is written in a functional language. If you have a Mac you can now enjoy the power of the XMonad manager on your machine with this port hosted on GitHub.
Why HN was down | Hacker News With great power comes great responsibility! HackerNews is not written in Clojure, is written in a dialect of LISP called ARC that Paul Graham invented. It shares with Clojure the same philosophy and it contains of course a REPL. When you can access a live system and such an easy way, you should always remember what can happen in case of errors, like this short story about hacker news being down. With other less powerful compiled languages you don’t get a REPL and for this reason you’re less tempted to do surgery on the live system, hopefully catching problems by doing some local testing first.
fogus: Enfield: a programming language designed for pedagogy What if, designing a brand new language with all the features you always dreamed of, you came up with something very similar to Racket (aka Scheme)? The news should not surprise you that much since what came up from language research in the ‘60 seems to be unbeatable event with today’s computer power. This is fun reading. Enjoy the list of features that a language like Scheme can offer right now, in which way it can mimic other paradigms or add static types. Racket is precisely what I’m using while exercising SICP, after a quick glance at the MIT Scheme I was able to be up and running with Racket in a fraction of a second.1 year ago