Skip to content

Instantly share code, notes, and snippets.

@stibear
stibear / test.lisp
Last active December 17, 2015 18:29
Common Lisp 理解度チェーック 各出力を頭で考えた後に実行して答え合わせしてみてね! 参考:https://gist.github.com/anonymous/5652948
;;; Q.1
(defun hoge () (print "hoge"))
(compile 'hoge)
(print (compiled-function-p 'hoge))
;;; Q.2
(defun |@| (&rest rest)
(if (nth 3 rest)
(format (car rest) "~a~&" (cadr rest))))
(format t "~{~@/@/~^~&~}" '(1 2 3 4))
@stibear
stibear / zshrc
Created June 21, 2013 13:28
.zshrc
# .zshrc file for zsh(1)
## Completion configuration
autoload -U -U compinit
compinit
zstyle ':completion:*' list-colors 'di=34' 'ln=35' 'so=32' 'ex=31' 'bd=46;34' 'cd=43;34'
## Environment variable configuration
# LANG
export LANG=ja_JP.UTF-8
@stibear
stibear / hello world.lisp
Last active December 22, 2015 06:58
generate "Hello World" without including any literal.
(defmacro def-print-string (name)
`(defun ,name ()
(let ((one (count t'(t))))
(print
(coerce
(mapcar #'code-char
(list
,@(loop :for i :across (string name)
:collect
`(+ ,@(loop :for j := (char-code i) :then (floor j #.(count t'(t t)))
@stibear
stibear / webspeech.lisp
Last active December 23, 2015 20:09
memo: webspeech.lisp
(eval-when (:compile-toplevel :load-toplevel :execute)
(ql:quickload :clack)
(ql:quickload :clack-app-route)
(ql:quickload :cl-who)
(ql:quickload :parenscript)
(ql:quickload :chatai-tan))
(defpackage :webspeech
(:use :cl
:cl-who
(defmacro cut (&rest args)
(let ((func (cond ((eql '<> (car args)) (gensym))
((symbolp (car args)) (list 'function (car args)))
(t (car args))))
(gensyms (loop repeat (count '<> (cdr args))
collect (gensym)))
(rest-arg (if (eql '<...> (car (last (cdr args)))) `(&rest ,(gensym)))))
(labels ((rec (args-list gensyms-list result)
(cond ((null args-list) (reverse result))
((eql '<> (car args-list))
(define-syntax swap!
(sc-macro-transformer
(lambda (form env)
(let ((a (make-syntactic-closure env '() (cadr form)))
(b (make-syntactic-closure env '() (caddr form))))
`(let ((value ,a))
(set! ,a ,b)
(set! ,b value))))))
(define-syntax swap!
(rsc-macro-transformer
(lambda (form env)
(let ((a (cadr form))
(b (caddr form))
(value (make-syntactic-closure env '() 'value))
(let-r (make-syntactic-closure env '() 'let))
(set!-r (make-syntactic-closure env '() 'set!)))
`(,let-r ((,value ,a))
(,set!-r ,a ,b)
@stibear
stibear / er.scm
Last active December 31, 2015 10:29
(define-syntax swap!
(er-macro-transformer
(lambda (form rename compare?)
(let ((a (cadr form))
(b (caddr form)))
`(,(rename 'let) ((,(rename 'value) ,a))
(,(rename 'set!) ,a ,b)
(,(rename 'set!) ,b ,(rename 'value)))))))
(define-syntax swap!
(ir-macro-transformer
(lambda (form inject compare?)
(let ((a (cadr form))
(b (caddr form)))
`(let ((tmp ,a))
(set! ,a ,b)
(set! ,b tmp))))))
@stibear
stibear / ir2.scm
Last active December 31, 2015 10:29
(define-syntax aif
(ir-macro-transformer
(lambda (form inject compare?)
(let ((it (inject 'it))
(test (cadr form))
(then (caddr form))
(else (cadddr form)))
`(let ((,it ,test))
(if ,it ,then ,else))))))