clojure

TwitterFacebook
Get flash to fully experience Pearltrees
datatypes

trie

remote slime repl

http://asymmetrical-view.com/2009/08/20/emacs-slime-remote-repl.html SLIME is a powerful extension for Emacs that transforms Emacs into an IDE for Lisp. It sets up Emacs so that it can connect to and interact with a Lisp running as a separate process – even on a separate server. This configuration allows you to connect to a running application with Emacs, allowing you to inspect the state of and debug a running application. In this post I will walk you through how to set up and use this scenario using Emacs, SLIME and SSH to connect to a remote JVM running Clojure . SLIME and Swank
Overview PCollections serves as a persistent and immutable analogue of the Java Collections Framework . This includes efficient , thread-safe , generic , immutable , and persistent stacks, maps, vectors, sets, and bags, compatible with their Java Collections counterparts. Persistent and immutable datatypes are increasingly appreciated as a simple , design-friendly , concurrency-friendly , and sometimes more time- and space-efficient alternative to mutable datatypes. Persistent versus Unmodifiable

pcollections - Google Code

http://code.google.com/p/pcollections/
http://www.tbray.org/ongoing/When/200x/2009/12/08/WF-Tuning-Clojure I’ve been work­ing on, and writ­ing about, run­ning Clo­jure Wide Finder code. But I was never sat­is­fied with the ab­solute per­for­mance num­bers. This is a write-up in some de­tail as to how I made the code faster and also slower, in­clud­ing lessons that might be use­ful to those work­ing on Clo­jure specif­i­cally, con­cur­rency more gen­er­ally, and with some in­ter­est­ing data on Java garbage col­lec­tion and JDK7. [Up­date: My re­la­tion­ship with the JVM is im­prov­ing, based on good ad­vice from the Net. This ar­ti­cle has been partly re-writ­ten and is much more cheer­ful.] [This is part of the Concur.​next se­ries and also the Wide Finder 2 se­ries.]

ongoing · Concur.next & WF2 — Tuning Concurrent Clojure

http://gnuvince.wordpress.com/2009/05/11/clojure-performance-tips/

Clojure performance tips « Occasionally sane

I originally wrote this in a Google Groups thread , but I figured it’s worth repeating here. Somebody posted a Java and Clojure snippet to the Clojure Google group and mentioned that the Java code was vastly faster than the Clojure code and he wondered if Clojure could get within reach of Java’s speed. In my own clj-starcraft project, I faced — and actually, still face — performance problems vis-à-vis Java. Specifically, at the time of this writing, my Clojure code is roughly 6 times slower than Java (Clojure takes around 70 seconds to parse 1,050 files, Java takes 12.)
Clojure issue tracking now lives at http://dev.clojure.org/jira , and the wiki is at http://dev.clojure.org . These Assembla pages are kept online for historical interest only. you can add new (e.g. helper) methods not in any super, must have different name (can't add overloads to supers). No way to call those from outside the methods other than via reflection http://www.assembla.com/wiki/show/clojure/New_new

New new | Clojure | Assembla

Protocols | Clojure | Assembla

http://www.assembla.com/wiki/show/clojure/protocols Clojure issue tracking now lives at http://dev.clojure.org/jira , and the wiki is at http://dev.clojure.org . These Assembla pages are kept online for historical interest only. Which interfaces are implemented is a design-time choice of the type author, cannot be extended later (although interface injection might eventually address this) implementing an interface creates an isa/instanceof type relationship and hierarchy Avoid the 'expression problem' by allowing independent extension of the set of types, protocols, and implementations of protocols on types, by different parties
Online Learning is a relatively old branch of machine learning that has recently regained favour for two reasons. Firstly, online learning algorithms such as Stochastic Gradient Descent work extremely well on very large data sets which have become increasingly prevalent (and increasingly large!). Secondly, there has been a lot of important theoretical steps made recently in understand the convergence behaviour of these algorithms and their relationship to traditional Empirical Risk Minimisation (ERM) algorithms such as Support Vector Machines (SVMs).

Online Learning in Clojure ← Structure & Process

http://mark.reid.name/sap/online-learning-in-clojure.html

Blog Archive » Understanding Clojure’s PersistentVector implemen

Update: See also the description of PersistentHashMap . One of the unique features of Clojure is that the core data structures are persistent (immutable with efficient structural sharing). This includes data structures Vector and Map that are mutable in most other languages. To be useful, operations on persistent data structures need to have performance characteristics that are similar to their mutating counterparts; e.g., the cost of random access on a persistent vector (put/get) needs to be comparable to random access to a mutable vector. http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation/
http://java.ociweb.com/mark/clojure/article.html

Object Computing, Inc. - Java News Brief - March 2009

Contents The goal of this article is to provide a fairly comprehensive introduction to the Clojure programming language. A large number of features are covered, each in a fairly brief manner.
Monads in functional programming are most often associated with the Haskell language, where they play a central role in I/O and have found numerous other uses. Most introductions to monads are currently written for Haskell programmers. However, monads can be used with any functional language, even languages quite different from Haskell. Here I want to explain monads in the context of Clojure, a modern Lisp dialect with strong support for functional programming. A monad implementation for Clojure is available in the library clojure.algo.monads . Before trying out the examples given in this tutorial, type (use 'clojure.algo.monads) into your Clojure REPL. http://onclojure.com/2009/03/05/a-monad-tutorial-for-clojure-programmers-part-1/

A monad tutorial for Clojure programmers (part 1) « On Clojure

It's great to see all of the Clojure libraries springing up as people pull Clojure towards their application domains, and shape it for the styles of programming they prefer.

clojure maps

Streams in clojure

(Note: this section describes work in progress, currently only available in SVN) I've been working on a stream model for Clojure. The basic idea behind streams is that they are ephemeral - they flow by once. Streams have nice laziness and performance characteristics when building pipelines of computations.