Clojure

  • Alternatives to Pandas in Clojure

@matan asked about pandas like library that helps in processing DataFrames. Apache Arrow seemed to be a good fit but the java libraries are still in pre-alpha stage (v0.9) aiming for binary compatibility before they hit 1.0.0 release

Beginners

    • cannot be instrumented since it’s inlined

@alexmiller : + is inlined and you can’t instrument specs on inlined functions because you don’t go through the var

  • reduce on bignum

(reduce * (range 1 100N)) produces stack overflow

@andy.fingerhut : Also (range 1 100N) returns a sequence of longs, not BigInt’s. If you instead use (range 1N 100), it returns a sequence of BigInt’s, and then the normal * function will preserve them as BigInt’s.

@noisesmith and @delaguardo suggested the usage of *'

user=> (reduce * (range 1N 100))
933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000N
user=> (reduce *' (range 1 100))
933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000N

Announcements

  • @tristefigure lexikon - A library to capture and replay the lexical environment.

  • spell-spec

spell-spec is a Clojure/Script library that provides additional spec macros that have the same signature as clojure.spec.alpha/keys macro. spell-spec macros will also verify that unspecified map keys are not misspellings of specified map keys. spell-spec also provides expound integration for nicely formatted results.