Skip to content

Instantly share code, notes, and snippets.

View mmontone's full-sized avatar

Mariano Montone mmontone

View GitHub Profile
@mmontone
mmontone / dynamic-functions.lisp
Created July 10, 2017 00:03
Dynamic functions
(defun make-dfun-varname (fname)
(intern (format nil "*DFUN-~A*" fname)))
(defmacro dflet (fbindings &body body)
`(let
,(loop for fbinding in fbindings
collect
(destructuring-bind (fname args &body body) fbinding
(let ((dfun-varname (make-dfun-varname fname)))
`(,dfun-varname (cons (lambda ,args
@mmontone
mmontone / install.sh
Last active August 29, 2015 14:05
cl-travis
#!/bin/sh
set -e
# get <url> <destination>
get() {
url=$1
destination=$2
echo "Downloading ${url}..."
curl --no-progress-bar --retry 10 -o "$destination" -L "$url"
@mmontone
mmontone / Common Lisp symbol syntax
Created October 27, 2013 23:26
Implementation of syntax for symbols to be able to use spaces instead of '-' in them. The default enclosing chars are '<' and '>'.
;; Implementation of syntax for symbols to be able to use spaces instead of '-' in them.
;; The default enclosing chars are '<' and '>'.
;; Example:
;; (defclass <My Class> (<Standard Object>)
;; ((<My Slot> :accessor <My Slot>
;; :initarg :my-slot)))
;;
;; (<with slots> (<My slot>)
;; (<make instance> '<My class> :my-slot "Value")
@mmontone
mmontone / Common Lisp hash table syntax
Created October 27, 2013 23:03
Common Lisp hash table syntax
(defun read-separator (str)
(let
((*readtable* (copy-readtable *readtable* nil)))
(set-macro-character #\, (lambda (stream char)
(declare (ignore char) (ignore stream))
'break))
(read str nil)))
(set-macro-character #\{
(lambda (str char)