Skip to content

Instantly share code, notes, and snippets.

View bis83's full-sized avatar
🏠
Working from home

bis bis83

🏠
Working from home
View GitHub Profile
@bis83
bis83 / alist-getter.scm
Last active August 29, 2015 14:15
alist getter-utility
(use srfi-1)
(define (assoc-get getter key alist =)
(cond
((assoc key alist =) => getter)
(else #f)))
(define (assq-get g k l) (assoc-get g k l eq?))
(define (assv-get g k l) (assoc-get g k l eqv?))
@bis83
bis83 / prefix.scm
Last active August 29, 2015 14:12
prefix-macro
(define-syntax prefix
(syntax-rules ()
((_ head body ...)
(begin (head . body) ...))))
(define (compose . fns)
(if (null? fns)
(lambda args (apply values args))
(let ( [fn1 (car fns)] [fns (cdr fns)] )
(lambda args
(call-with-values
(lambda () (apply fn1 args))
(apply compose fns))))))
(use srfi-1 srfi-26)
(define-syntax (arrow form rename compare)
(let ( [knil (cadr form)] [preds (cddr form)] )
(fold
(lambda (func tail)
`(,(rename 'call-with-values) (,(rename 'cut) ,@tail) ,func))
`(,rename 'values) ,knil)
preds)))
void qsorti(int[] a, size_t size) {
int comapre(const void *ap, const void *bp) {
return *(int*)ap - *(int*)bp;
}
qsort(a, size, sizeof(int), comapre)
}