News for hackers. Stuff that matters.
Re:Common Lisp, Clojure and Evolution by mahmud on Sunday February 27, 2011 @02:21PM (#2268621)
Well, what do you know, Clojure records and hash-tables are equal (strongly.)

I will announce this great news to a few of my closest friends :-)

Re:Common Lisp, Clojure and Evolution by jkkramer on Sunday February 27, 2011 @02:34PM (#2268667)
Almost. Record types are checked as part of full equality. So record Foo{:x 1} is not equal to Bar{:x 1} or to {:x 1}.
Re:Common Lisp, Clojure and Evolution by w01fe on Sunday February 27, 2011 @07:03PM (#2269397)
Almost. Record types are checked as part of Clojure's "=", but not as part of Java's ".equals". See [1] and linked material. This means that Foo{:x 1} and Bar{:x 1} will collide in sets and as map keys (of Clojure or Java varieties). This seems a bit icky to me, but seems to be intentional.

[1] http://dev.clojure.org/jira/browse/CLJ-736

Re:Common Lisp, Clojure and Evolution by lukev on Sunday February 27, 2011 @03:57PM (#2268934)
Records also provide better performance than hash tables for their defined keys.

You can think of them as a Java class that has certain fields (it's named fields) and also implements the Map interface for additional expandability. Records provide "accessor" methods for their named fields that provide bare-metal JVM performance.