Skip to content

Instantly share code, notes, and snippets.

Avatar

vindarel vindarel

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

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
vindarel / OCaml sucks.html
Last active Feb 12, 2020
OCaml sucks (and some comparison to Lisp)
View OCaml sucks.html
<body>
<html>
<a href="http://www.podval.org/~sds/ocaml-sucks.html"> original url</a>
<a href="https://web.archive.org/web/20080203114732/http://www.podval.org/~sds/ocaml-sucks.html"> Wayback machine</a>
<a href="https://www.reddit.com/r/lisp/comments/5wk7e0/ocaml_sucks_and_some_comparison_to_lisp/"> /r/lisp comments</a>
<a href="https://www.reddit.com/r/programming/comments/cy0wh/ocaml_sucks_still_relevant/"> Is this article (still) relevant?</a>
View keybase.md

Keybase proof

I hereby claim:

  • I am vindarel on github.
  • I am vindarel (https://keybase.io/vindarel) on keybase.
  • I have a public key ASDpKpR9c87ijqWD_TFNYyqYo6uB33rJQmesBpa1j4Vk9wo

To claim this, I am signing this object:

@vindarel
vindarel / common-lisp-VS-clojure.md
Last active Jul 9, 2020
Notes on Common Lisp VS Clojure
View common-lisp-VS-clojure.md

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
vindarel / fukamachi-reader-macros-asdf.md
Last active Aug 23, 2018
8arrow-reader-macros-asdf
View fukamachi-reader-macros-asdf.md

From E. Fukamachi's blog: http://blog.8arrow.org/entry/2018/06/24/214706

Enable reader macros throughout the project

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

https://pay.pocket-change.jp/

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
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
(:documentation
"Facilitate creating Git repositories for third-party Quicklisp
projects.")
(: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)
(:export
@vindarel
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)))
(list
@vindarel
vindarel / debugging common lisp - slime interactivity.md
Last active Apr 21, 2017
Awesome example on Common Lisp's interactive debugger (Slime) advanced interactivity
View debugging common lisp - slime interactivity.md

Awesome comment: https://www.reddit.com/r/programming/comments/65ct5j/a_pythonist_finds_a_new_home_at_clojure_land/dg9p8rk/

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.

https://clojure.org/reference/evaluation

Clojure has no interpreter.
@vindarel
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 https://github.com/mickeynp/discover.el
;; 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.