Clojure classes graph (was chart.png)

53 views
Skip to first unread message

Chouser

unread,
Dec 14, 2008, 4:47:05 PM12/14/08
to clo...@googlegroups.com
I've updated the Clojure classes graph (thanks for the push, R.
Schulz!) The new version includes the newest classes as well as Java
interfaces that are applicable. These latter are shown inside
diamonds.

A couple different .svg and .png versions are available here, along
with the code used to create them:

http://github.com/Chouser/clojure-classes/tree/master

For a quick link to the main graphic, you can use:

http://tinyurl.com/clojure-classes

I won't be maintaining the chart.png in the file upload area of this
group, since it's much easier to just push new versions to the github
repo. There you can also find older versions, other formats, etc.

--Chouser

Stuart Sierra

unread,
Dec 15, 2008, 10:27:58 AM12/15/08
to Clojure
Cool, thanks!
-S

Rich Hickey

unread,
Dec 15, 2008, 10:47:17 AM12/15/08
to Clojure


On Dec 15, 10:27 am, Stuart Sierra <the.stuart.sie...@gmail.com>
wrote:
Yes, thanks! -Very useful - I often point people at this.

It seems the interface detection is not quite right - many things that
are interfaces are shown as classes.

Rich

Chouser

unread,
Dec 15, 2008, 11:02:36 AM12/15/08
to clo...@googlegroups.com
On Mon, Dec 15, 2008 at 10:47 AM, Rich Hickey <richh...@gmail.com> wrote:
>
> It seems the interface detection is not quite right - many things that
> are interfaces are shown as classes.

Yes, the legend is misleading. Diamonds are for non-clojure
interfaces, ovals are clojure.lang.* classes and interfaces.

--Chouser

Peter Wolf

unread,
Dec 15, 2008, 11:54:22 AM12/15/08
to clo...@googlegroups.com
Hello

I was just following the directions on Ubuntu setup directions on
http://riddell.us/clojure/

I get the following error when I try ANTS.CLJ. Has something changed?

Peter

(defn setup
"places initial food and ants, returns seq of ant agents"
[]
>>> (sync nil
(dotimes [i food-places]
(let [p (place [(rand-int dim) (rand-int dim)])]
(alter p assoc :food (rand-int food-range))))
(doall
(for [x home-range y home-range]
(do
(alter (place [x y])
assoc :home true)
(create-ant [x y] (rand-int 8)))))))

user=> (load-file "ants.clj")
java.lang.IllegalArgumentException: recur arg for primitive local:
G__2315 must be matching primitive
clojure.lang.Compiler$CompilerException: ants.clj:61:
java.lang.IllegalArgumentException: recur arg for primitive local:
G__2315 must be matching primitive
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3865)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:734)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3858)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:3384)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:3231)
at clojure.lang.Compiler$FnMethod.access$1200(Compiler.java:3142)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:2766)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3856)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.access$200(Compiler.java:37)
at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:343)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3858)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.eval(Compiler.java:3895)
at clojure.lang.Compiler.load(Compiler.java:4196)
at clojure.lang.Compiler.loadFile(Compiler.java:4163)
at clojure.lang.RT$3.invoke(RT.java:289)
at user.eval__2290.invoke(Unknown Source)
at clojure.lang.Compiler.eval(Compiler.java:3891)
at clojure.lang.Repl.main(Repl.java:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at jline.ConsoleRunner.main(ConsoleRunner.java:69)
Caused by: java.lang.RuntimeException:
java.lang.IllegalArgumentException: recur arg for primitive local:
G__2315 must be matching primitive
at clojure.lang.Compiler$RecurExpr.emit(Compiler.java:3598)
at clojure.lang.Compiler$BodyExpr.emit(Compiler.java:3414)
at clojure.lang.Compiler$IfExpr.emit(Compiler.java:2264)
at clojure.lang.Compiler$BodyExpr.emit(Compiler.java:3414)
at clojure.lang.Compiler$LetExpr.emit(Compiler.java:3542)
at clojure.lang.Compiler$BodyExpr.emit(Compiler.java:3414)
at clojure.lang.Compiler$LetExpr.emit(Compiler.java:3534)
at clojure.lang.Compiler$BodyExpr.emit(Compiler.java:3414)
at clojure.lang.Compiler$LetExpr.emit(Compiler.java:3542)
at clojure.lang.Compiler$BodyExpr.emit(Compiler.java:3414)
at clojure.lang.Compiler$LetExpr.emit(Compiler.java:3542)
at clojure.lang.Compiler$BodyExpr.emit(Compiler.java:3411)
at clojure.lang.Compiler$FnMethod.emit(Compiler.java:3255)
at clojure.lang.Compiler$FnExpr.compile(Compiler.java:3013)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:2807)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3856)
... 39 more
Caused by: java.lang.IllegalArgumentException: recur arg for primitive
local: G__2315 must be matching primitive
at clojure.lang.Compiler$RecurExpr.emit(Compiler.java:3593)
... 54 more
user=>

Chouser

unread,
Dec 15, 2008, 12:30:16 PM12/15/08
to clo...@googlegroups.com

Fixed, commit 213d11
http://tinyurl.com/clojure-classes

--Chouser

Chouser

unread,
Dec 16, 2008, 9:44:26 AM12/16/08
to clo...@googlegroups.com
On Mon, Dec 15, 2008 at 11:54 AM, Peter Wolf <opu...@gmail.com> wrote:
>
> I get the following error when I try ANTS.CLJ. Has something changed?

Recent Clojure from SVN and a recent download of ants.clj from the
google group seem to work fine together for me.

--Chouser

Peter Wolf

unread,
Dec 16, 2008, 10:22:01 AM12/16/08
to clo...@googlegroups.com
Hmmm... I am also having problems with SLIME (see below)

Perhaps the otherwise-very-nice Ubuntu instructions need to be updated

http://riddell.us/clojure/

Can someone recommend the current best way to get a matching Clojure and
Swank and Slime

Thanks
Peter


ser=> java.lang.Exception: Unsupported binding form:
clojure.lang.PersistentList@f50439d
clojure.lang.Compiler$CompilerException: util.clj:76: Unsupported
binding form: clojure.lang.PersistentList@f50439d
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3865)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:3384)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:3231)
at clojure.lang.Compiler$FnMethod.access$1200(Compiler.java:3142)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:2766)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3856)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.access$200(Compiler.java:37)
at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:343)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3858)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3848)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.eval(Compiler.java:3895)
at clojure.lang.Compiler.load(Compiler.java:4196)
at clojure.lang.RT.loadResourceScript(RT.java:360)
at clojure.lang.RT.loadResourceScript(RT.java:347)
at clojure.lang.RT.loadResourceScript(RT.java:339)
at clojure.load__1722$fn__1724.invoke(boot.clj:3195)
at clojure.load__1722.doInvoke(boot.clj:3194)
at clojure.lang.RestFn.invoke(RestFn.java:413)
at clojure.load_one__1685.invoke(boot.clj:3041)
at clojure.load_lib__1705.doInvoke(boot.clj:3078)
at clojure.lang.RestFn.applyTo(RestFn.java:147)
at clojure.apply__135.doInvoke(boot.clj:364)
at clojure.lang.RestFn.invoke(RestFn.java:443)
at clojure.load_libs__1709.doInvoke(boot.clj:3108)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.apply__135.doInvoke(boot.clj:364)
at clojure.lang.RestFn.invoke(RestFn.java:460)
at clojure.use__1716.doInvoke(boot.clj:3173)
at clojure.lang.RestFn.invoke(RestFn.java:458)
at swank.eval__2299.invoke(core.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:3891)
at clojure.lang.Compiler.load(Compiler.java:4196)
at clojure.lang.RT.loadResourceScript(RT.java:360)
at clojure.lang.RT.loadResourceScript(RT.java:347)
at clojure.lang.RT.loadResourceScript(RT.java:339)
at clojure.load__1722$fn__1724.invoke(boot.clj:3195)
at clojure.load__1722.doInvoke(boot.clj:3194)
at clojure.lang.RestFn.invoke(RestFn.java:413)
at clojure.load_one__1685.invoke(boot.clj:3041)
at clojure.load_lib__1705.doInvoke(boot.clj:3078)
at clojure.lang.RestFn.applyTo(RestFn.java:147)
at clojure.apply__135.doInvoke(boot.clj:364)
at clojure.lang.RestFn.invoke(RestFn.java:443)
at clojure.load_libs__1709.doInvoke(boot.clj:3108)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.apply__135.doInvoke(boot.clj:364)
at clojure.lang.RestFn.invoke(RestFn.java:460)
at clojure.use__1716.doInvoke(boot.clj:3173)
at clojure.lang.RestFn.invoke(RestFn.java:441)
at user.eval__2296.invoke(swank.clj:11)
at clojure.lang.Compiler.eval(Compiler.java:3891)
at clojure.lang.Compiler.load(Compiler.java:4196)
at clojure.lang.RT.loadResourceScript(RT.java:360)
at clojure.lang.RT.loadResourceScript(RT.java:347)
at clojure.lang.RT.loadResourceScript(RT.java:339)
at clojure.load__1722$fn__1724.invoke(boot.clj:3195)
at clojure.load__1722.doInvoke(boot.clj:3194)
at clojure.lang.RestFn.invoke(RestFn.java:413)
at clojure.load_one__1685.invoke(boot.clj:3041)
at clojure.load_lib__1705.doInvoke(boot.clj:3078)
at clojure.lang.RestFn.applyTo(RestFn.java:147)
at clojure.apply__135.doInvoke(boot.clj:364)
at clojure.lang.RestFn.invoke(RestFn.java:443)
at clojure.load_libs__1709.doInvoke(boot.clj:3104)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.apply__135.doInvoke(boot.clj:364)
at clojure.lang.RestFn.invoke(RestFn.java:443)
at clojure.require__1713.doInvoke(boot.clj:3163)
at clojure.lang.RestFn.invoke(RestFn.java:413)
at user.eval__2293.invoke(Unknown Source)
at clojure.lang.Compiler.eval(Compiler.java:3891)
at clojure.lang.Repl.main(Repl.java:75)
Caused by: java.lang.Exception: Unsupported binding form:
clojure.lang.PersistentList@f50439d
at clojure.destructure__1118$pb__1120.invoke(boot.clj:2125)
at clojure.destructure__1118$pb__1120$pvec__1121.invoke(boot.clj:2095)
at clojure.destructure__1118$pb__1120.invoke(boot.clj:2123)
at clojure.destructure__1118$process_entry__1140.invoke(boot.clj:2126)
at clojure.reduce__208$fn__211.invoke(boot.clj:520)
at clojure.reduce__208.invoke(boot.clj:518)
at clojure.destructure__1118.invoke(boot.clj:2129)
at clojure.let__1144.doInvoke(boot.clj:2136)
at clojure.lang.RestFn.invoke(RestFn.java:428)
at clojure.lang.Var.invoke(Var.java:323)
at clojure.lang.AFn.applyToHelper(AFn.java:186)
at clojure.lang.Var.applyTo(Var.java:436)
at clojure.lang.Compiler.macroexpand1(Compiler.java:3781)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3846)
... 82 more
user=> java.lang.Exception: No such var: swank/ignore-protocol-version
clojure.lang.Compiler$CompilerException: NO_SOURCE_FILE:5: No such var:
swank/ignore-protocol-version
at clojure.lang.Compiler.analyze(Compiler.java:3713)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:2634)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3860)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:3384)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:3231)
at clojure.lang.Compiler$FnMethod.access$1200(Compiler.java:3142)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:2766)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3856)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.eval(Compiler.java:3889)
at clojure.lang.Repl.main(Repl.java:75)
Caused by: java.lang.Exception: No such var: swank/ignore-protocol-version
at clojure.lang.Compiler.resolveIn(Compiler.java:4002)
at clojure.lang.Compiler.resolve(Compiler.java:3972)
at clojure.lang.Compiler.analyzeSymbol(Compiler.java:3955)
at clojure.lang.Compiler.analyze(Compiler.java:3686)
... 15 more
user=> java.lang.Exception: No such var: swank/start-server
clojure.lang.Compiler$CompilerException: NO_SOURCE_FILE:7: No such var:
swank/start-server
at clojure.lang.Compiler.analyze(Compiler.java:3713)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:2634)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3860)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.analyze(Compiler.java:3671)
at clojure.lang.Compiler.access$100(Compiler.java:37)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:3384)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:3231)
at clojure.lang.Compiler$FnMethod.access$1200(Compiler.java:3142)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:2766)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:3856)
at clojure.lang.Compiler.analyze(Compiler.java:3698)
at clojure.lang.Compiler.eval(Compiler.java:3889)
at clojure.lang.Repl.main(Repl.java:75)
Caused by: java.lang.Exception: No such var: swank/start-server
at clojure.lang.Compiler.resolveIn(Compiler.java:4002)
at clojure.lang.Compiler.resolve(Compiler.java:3972)
at clojure.lang.Compiler.analyzeSymbol(Compiler.java:3955)
at clojure.lang.Compiler.analyze(Compiler.java:3686)
... 15 more
user=>

Randall R Schulz

unread,
Dec 16, 2008, 5:12:43 PM12/16/08
to clo...@googlegroups.com
On Sunday 14 December 2008 13:47, Chouser wrote:
> I've updated the Clojure classes graph (thanks for the push, R.
> Schulz!) The new version includes the newest classes as well as Java
> interfaces that are applicable. These latter are shown inside
> diamonds.
>
> ...

>
> I won't be maintaining the chart.png in the file upload area of this
> group, since it's much easier to just push new versions to the github
> repo. There you can also find older versions, other formats, etc.
>
> --Chouser

I just noticed that AtomicReference and / or AtomicReference$IRef are
missing from the Clojure type system graph.


Randall Schulz

Reply all
Reply to author
Forward
0 new messages