Skip to content

Instantly share code, notes, and snippets.


vindarel vindarel

View GitHub Profile
vindarel / Common Lisp VS Racket -
Last active Nov 6, 2020
Common Lisp VS Racket. Feedback from lispers.
View Common Lisp VS Racket -

Racket is a nice language with the batteries included and lots of polish aimed at attracting new developers. However, Common Lisp really is a superior language in almost every way. As mentioned, I am having mixed thoughts. I have been using Racket sparingly to get my feet wet for the past few months, and while it is nice, there is a lot to be missed from Common Lisp

Deficiencies of Racket (compared to CL):

  • No built-in multi-methods and lots of super-specialized functions (the same functions but for lists, vectors, hashmaps etc; to be fair CL is not ideal here either).
  • No introspection compared to one with SLIME.
  • Debugger... well, essentially absent if you have to compare with CL
  • Module re-loading removes everything in running image (in DrRacket, perhaps, you can do a bit better in Geiser).
  • Efficiency: compare the speed of SBCL and Racket
  • Support for OOP: nothing compared to CLOS. Racket has message passing style OOP, which is OK (Smalltalk does it too, for example), but the synt
vindarel / OCaml sucks.html
Last active Feb 12, 2020
OCaml sucks (and some comparison to Lisp)
View OCaml sucks.html
<a href=""> original url</a>
<a href=""> Wayback machine</a>
<a href=""> /r/lisp comments</a>
<a href=""> Is this article (still) relevant?</a>

Keybase proof

I hereby claim:

  • I am vindarel on github.
  • I am vindarel ( on keybase.
  • I have a public key ASDpKpR9c87ijqWD_TFNYyqYo6uB33rJQmesBpa1j4Vk9wo

To claim this, I am signing this object:

vindarel /
Last active Jul 9, 2020
Notes on Common Lisp VS Clojure

Interactive development

I have semi-frequent occasion to work in Clojure, but Clojure lacks some features of Common Lisp that I consider important. The most important of these is that Common Lisp, like Smalltalk, but unlike most other languages, including Clojure, is designed from the ground up to support developing a program interactively while it runs. I want to see if I can have Clojure for those cases where it's the right tool, without losing the programming-as-teaching features of Common Lisp that I miss when working in other languages.

I know someone is probably going to object that Clojure, too, is designed to support interactive development; my answer is: no, it isn't. Not in the sense I'm talking about.

As an example of what I mean, consider the standard Common Lisp generic function UPDATE-INSTANCE-FOR-REDEFINED-CLASS. This function is part of a standard protocol in Common Lisp that enables your program to automatically update existing instances of previously-defined classes to properly confor

vindarel /
Last active Aug 23, 2018

From E. Fukamachi's blog:

Enable reader macros throughout the project

Recently the landing page of our new service "Pocket Change Pay" has been released.

Pocketpay is a platform that can make original electronic money . There is Pokethe like the mechanism that can also exchange money in the platform.

vindarel / ql-gitify.lisp
Created Apr 2, 2018 — forked from death/ql-gitify.lisp
Facilitate creating Git repositories for third-party Quicklisp projects.
View ql-gitify.lisp
(defpackage #:snippets/ql-gitify
"Facilitate creating Git repositories for third-party Quicklisp
(:use #:cl)
(:import-from #:constantia #:out #:print-table)
(:import-from #:split-sequence #:split-sequence)
(:import-from #:alexandria #:starts-with-subseq #:hash-table-plist)
(:import-from #:ql #:qmerge)
vindarel / get-lisp-dependencies.lisp
Created Mar 8, 2018 — forked from svetlyak40wt/get-lisp-dependencies.lisp
A helper to gather all lisp system's dependencies
View get-lisp-dependencies.lisp
(ql:quickload :fset)
(defun get-dependencies (system)
"Returns a set with all dependencies of a given system.
System should be loaded first."
(labels ((normalize (name)
(etypecase name
(string (string-downcase name))
(symbol (normalize (symbol-name name)))
vindarel / debugging common lisp - slime
Last active Apr 21, 2017
Awesome example on Common Lisp's interactive debugger (Slime) advanced interactivity
View debugging common lisp - slime

Awesome comment:

That's not an interpreter. A REPL is not the same as a Lisp interpreter. REPL means read eval print loop. EVAL can be implemented by a compiler or an interpreter. Common Lisp has both and mixed implementations with both compiler and interpreter.

A Lisp interpreter is executing Lisp code directly. Clojure does not have an Interpreter.

Clojure has no interpreter.
vindarel / discover-yafolding
Created Nov 17, 2014
Discover yafolding commands
View discover-yafolding
;; Goal: have a magit-like menu to discover yafolding commands.
;; we use Mickey's version
;; We get a shorcut (M-f) which displays a list of actions associated with a hot key:
;; h will be for `yafolding-hide-element`, H to hide all, s to show the element, etc.
;; evil-mode users will need:
(evil-set-initial-state 'makey-key-mode 'emacs)
You can’t perform that action at this time.