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
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)
}
(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)))
(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))))))
@bis83
bis83 / prefix.scm
Last active August 29, 2015 14:12
prefix-macro
(define-syntax prefix
(syntax-rules ()
((_ head body ...)
(begin (head . body) ...))))
@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 / pandtest.scm
Last active August 29, 2015 14:26
simple-pandoric.scm
(define-syntax pandoric-let
(syntax-rules ()
((_ ((var val) ...) body ... retval)
(let ((this #f) (var val) ...)
(set! this retval)
body ...
(lambda args
(case (car args)
((__pandoric-set)
(case (cadr args)
@bis83
bis83 / .vimrc
Last active October 28, 2020 14:32
my vimrc
:set nocompatible
:set hlsearch
:set smartindent
:set autoindent
:set expandtab
:set smarttab
:set tabstop=2
:set shiftwidth=2
:set number
:set ruler
@bis83
bis83 / sjson.scm
Last active August 29, 2015 14:27
tiny s-expression -> json converter
(use srfi-13 ports)
(define (s->json s)
(cond
((and (pair? s) (string? (car s)))
(sprintf "~a:~a"
(s->json (car s))
(s->json (cdr s))))
((pair? s)
(sprintf "{~a}"
(string-join (map s->json s) ",")))
@bis83
bis83 / example.scm
Created October 12, 2015 14:57
hash-by-identity
(use srfi-69)
(define h (make-hash-table eq? hash-by-identity))
(define a (cons 'a 'b))
(define b (cons 'a 'b))
(hash-table-set! h a 10)
(hahs-table-set! h b 20)
(hash-table-ref h a)
; ==> 10

Schemeの数について

個人用のSchemeの数に関するまとめ.

参考文献