Jaspers Personal webpage
Home
Blog
Projects
Various smaller projects
About me

Libraries i use

Common Lisp has a fair amount of libraries, and websites to list them, but it mostly doesn't concern itself with giving opinions about which libraries are good to use. So i guess developers should indicate this a bit. Hence this page. (in no particular order.) None of these projects are mine.

Libcl

Nice package of various often-used libs made to work together. Has a little opaque installation script rather than just asd files, though, but that is the only bad thing i can say about. (there seems too be too much leeway in asdf files.) Used only some of them:

Alexandria

Various little useful macros and functions. From it, i use mostly with-gensyms, if-let(and kin), (r)curry, compose.

cl-fad

Nice simple bunch of functions that are a bit missing in CL.

LML2

Fairly simply makes a convenient way to output and represent HTML in CL. Is the inverse of cl-html-parse, which is neat to have that way.

Could use better documentation, i myself was a little frustrated using it. It is also a little scarce on doc-strings, looking at this autodoc.

Is kind-of a competitor to 'my' GIL project, but since people likely are more familiar to LML2, and LML2 kindah makes sense, i might apply the ideas in a more LML2-compatible way.

CLG

So far liked this one best as GTK bindings. Supposedly autogenerated, which seems like a good idea to me. Afaik doesn't have documentation, but everything works in analogy with the C documentation.

When extending, i after deriving a class, initialize-instance can be redefined.

There are a bunch of gtk bindings. I also used cl-gtk2, which is also pretty good, couldn't get the class-inspector to work though. Also prefer autogenerated bindings over manual ones(in theory), though.

In order to use, first:

(setq SWANK:*COMMUNICATION-STYLE* :spawn) ;whereas :FD-HANDLER default
:newline (gtk:clg-init-with-threading)

Update acting badly now. Refused to load once until i reset, and now won't work, disapointing.

Lispbuilder

I use SDL from lispbuilder with cl-opengl. It works great. (but cl-opengl from elsewhere, found lispbuilder opengl lacking handy macros/functions.) Would be neater if it separated binding from utility packages to make it clearer what is what.

It also seems a little macro-oriented, and sdl:with-events could probably use a better approach. I think it might be neater for instance, to allow the user to express his/her interest in events, and then have something aid in storing information on an event. (With much generality.) For instance one might want to store the mouse position on a keystroke.

I also think the timing system could work better/more flexible.

GSL

I used this a little for spherical harmonics, seems like a good library. I just wanted to note that one should not expect to understand parts of this library before knowing the theory behind the part.

PAL

Seems to be a bit inactive in development. I haven't checked other ones out.

It seems rather effective in getting some annoying bits of figuring stuff out of the way.

It does conflate different purposes a bit. Different things that aren't very connected should be different packages and .asd files.(but a package to put it together for user convenience doesn't hurt.) Note that it mostly conflates them because SDL does. One exception is vectors. Wrote a bit on what game libs (sh)could do.

About vectors. In PAL V+ V- are addition/substraction much as i do it, only two dimensional vectors, which might give better performence, and might actually be good for 2d-games.

Minorly annoying is that V+, V- etc don't do any-number of arguments. Also doesn't do inproducts, length(sqr), but those are easy to define yourself.

All in all, not bad, but certainly worth looking around.