Skip to content

Instantly share code, notes, and snippets.

@death
Created January 24, 2022 23:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save death/28cccef566a6f61bb1fb6b2421e34805 to your computer and use it in GitHub Desktop.
Save death/28cccef566a6f61bb1fb6b2421e34805 to your computer and use it in GitHub Desktop.
language similarity
(in-package :clim-user)
(defvar *langs*
'((common-lisp cons parens defmacro eval special quote)
(emacs-lisp cons parens defmacro eval special quote)
(clojure -cons parens defmacro eval special quote)
(janet -cons parens defmacro eval special quote)
(scheme cons parens hygienic eval -special quote)
(dylan cons -parens hygienic -eval -special -quote)
(maclisp cons parens defmacro eval special quote)
(interlisp cons parens defmacro eval special quote)
(autolisp cons parens -macro eval special quote)
(l-m-lisp cons parens defmacro eval special quote)
(eulisp cons parens -macro -eval special quote)
(islisp cons parens defmacro -eval special quote)
(julia -cons -parens defmacro eval -special quote)
(r -cons -parens -macro eval -special quote)
(*lisp cons parens defmacro eval special quote)
(lelisp cons parens defmacro eval special quote)
(lisp1.5 cons parens -macro eval special quote)))
(defun jaccard-distance (set1 set2)
(let ((x (length (union (set-difference set1 set2)
(set-difference set2 set1))))
(u (length (union set1 set2))))
(if (zerop u)
0
(/ x (+ x u)))))
(defun print-table ()
(formatting-table ()
(formatting-row ()
(formatting-cell ()
(format t "-"))
(dolist (l *langs*)
(formatting-cell ()
(format t "~A" (car l)))))
(do ((l1 *langs* (rest l1)))
((null l1))
(formatting-row ()
(formatting-cell ()
(format t "~A" (caar l1)))
(do ((l2 *langs* (rest l2)))
((null l2))
(formatting-cell (t :align-x :center)
(let ((d (jaccard-distance (car l1) (car l2))))
(format t "~,2F" d))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment