Skip to content

Instantly share code, notes, and snippets.

@ktakashi
ktakashi / port-pipe.scm
Last active August 29, 2015 13:56
Piped port using thread
#!r6rs
(library (port-pipe)
(export call-with-port-pipe)
(import (rnrs) (rnrs mutable-pairs)
(srfi :18))
(define (make-queue)
(cons '() '()))
(define (queue-empty? queue)
@ktakashi
ktakashi / sushi.scm
Created March 11, 2014 07:33
Sushi?
#!r6rs
(import (rnrs) (srfi :39))
(define *sushi* (make-parameter #f))
(define (call-with-current-🍣 proc)
(proc (*sushi*)))
(define (yum? sushi)
(eq? 'toro sushi))
@ktakashi
ktakashi / case-lambda.scm
Created March 25, 2014 20:23
bit more efficient case-lambda than SRFI-16 reference implementation
(import (except (rnrs) case-lambda))
(define-syntax count-args
(syntax-rules ()
((count-args n "count" e e* ...)
(count-args (+ n 1) "count" e* ...))
((count-args n "count") n)
;; entry point
((_ e* ...)
(count-args 0 "count" e* ...))))
@ktakashi
ktakashi / improper-macro.scm
Created September 21, 2014 20:38
Improper list macro expression
(import (scheme base))
(define-syntax improper-macro
(syntax-rules ()
((_ a b . rest) (list a b rest))
((_ . rest) 'error)))
(improper-macro 1 2 . 3)
@ktakashi
ktakashi / socket-port.scm
Created September 29, 2014 08:31
Checking socket port on Ypsilon
(import (rnrs)
(ypsilon socket)
(ypsilon concurrent))
(define echo-server-socket (make-server-socket "5000"))
(define (server-run)
(let loop ()
(let ((addr (socket-accept echo-server-socket)))
(call-with-socket addr
@ktakashi
ktakashi / result.scm
Created October 15, 2014 17:53
parsed with htmlprag
(*TOP* (html (head (title) (title "testcase"))
(body (a (@ (href "invalid-url")) "リンクタイトル")
(p (@ (align "left"))
(ul (@ (compact) (style "aa"))))
(p "クソッタレ! "
(*COMMENT* " comment <comment> ")
(i " italic " (b " bold " (tt " ened ")))
"まだ < ボールドだよ "))
(p " まだまだ続くんじゃ...")))
@ktakashi
ktakashi / custom-port-test.scm
Last active August 29, 2015 14:08
custom port test
#!r6rs
(import (rnrs))
(define r '())
(define (make-custom)
(define (write! bv start count)
(display (bytevector-u8-ref bv start)) (newline)
(set! r (cons (bytevector-u8-ref bv start) r))
1)
(define (close) #t)
@ktakashi
ktakashi / exception.scm
Created November 4, 2014 13:20
Gauche error
(import (scheme base))
(with-exception-handler
(lambda (e)
(with-exception-handler
(lambda (e) (error "ok"))
(lambda () (error "dummy"))))
(lambda () (error "dummy1")))
@ktakashi
ktakashi / error.log
Created November 13, 2014 14:18
Gauche build error
% make -j 8
if [ . != "." ]; then ./wirebuildlibs "." "ln -s"; fi
for d in gc src lib ext doc; do (cd $d; make all) || exit 1; done
make[1]: Entering directory '/home/t.kato/work/gauche-head/gc'
make[2]: Entering directory '/home/t.kato/work/gauche-head/gc'
depbase=`echo allchblk.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I./include -I./include -I./libatomic_ops/src -I./libatomic_ops/src -fexceptions -Wall -Wextra -g -O2 -fno-strict-aliasing -DDONT_ADD_BYTE_AT_END -MT allchblk.lo -MD -MP -MF $depbase.Tpo -c -o allchblk.lo allchblk.c &&\
mv -f $depbase.Tpo $depbase.Plo
depbase=`echo alloc.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I./include -I./include -I./libatomic_ops/src -I./libatomic_ops/src -fexceptions -Wall -Wextra -g -O2 -fno-strict-aliasing -DDONT_ADD_BYTE_AT_END -MT alloc.lo -MD -MP -MF $depbase.Tpo -c -o alloc.lo alloc.c &&\
@ktakashi
ktakashi / syntax-rules-clos.scm
Created January 15, 2015 09:07
CLOS syntax sugar used only syntax-rules
(import (except (rnrs) remove)
(only (srfi :1) last-pair))
;; Tiny CLOS copyright
; **********************************************************************
; Copyright (c) 1992 Xerox Corporation.
; All Rights Reserved.
;
; Use, reproduction, and preparation of derivative works are permitted.