Skip to content

Instantly share code, notes, and snippets.

@ktakashi
ktakashi / levenshtein.lisp
Created June 25, 2012 18:15
Levenshtein distance
#|
Calculate levenshtein distance network.
|#
(defvar *distance* 1)
(defun levenshtein-distance (word1 word2)
(declare (optimize (safety 0) (speed 3) (debug 0))
(type simple-string word1 word2))
(flet ((make-table (word1 word2)
(declare (optimize (safety 0) (speed 3) (debug 0))
@ktakashi
ktakashi / partcont.scm
Created May 7, 2013 07:05
shift rest in R6RS
(library (partcont)
(export shift reset)
(import (rnrs) (srfi :39))
(define *meta-continuation*
(make-parameter
(lambda value
(error "No top-level RESET" value))))
(define-syntax reset
(syntax-rules ()
@ktakashi
ktakashi / lispmeetup8scheme.scm
Last active December 21, 2015 18:19
お題: ls -l の出力結果からサイズを取り出して加算した結果を返す
#!r6rs
(import (rnrs))
(define (port-fold proc seed reader)
(let loop ((e (reader)) (seed seed))
(if (eof-object? e)
seed
(loop (reader) (proc e seed)))))
(define (parse-line port)
@ktakashi
ktakashi / hello-world.scm
Created September 8, 2013 08:12
Code IQ hello world
#!r6rs
(import (only (rename (rnrs) (cons %cons) (+ %+))
define lambda let display newline integer->char length
quote %cons))
(define cons (lambda (x y) (lambda (z) (z x y))))
(define car (lambda (z) (z (lambda (x y) x))))
(define cdr (lambda (z) (z (lambda (x y) y))))
(define true (lambda (x y) (x)))
@ktakashi
ktakashi / basic-auth.scm
Created September 9, 2013 20:14
401 authentication things
(import (rfc http) (rfc base64))
(define (auth-handler hdrs)
(print hdrs)
(let ((msg "hoge:fuga"))
;; need to return a list of header and value
`(("authorization" ,(format "Basic ~a"
(utf8->string
(base64-encode (string->utf8 msg))))))))
(let-values (((code hdr body)
@ktakashi
ktakashi / keyword.scm
Created October 5, 2013 10:38
Use keyword with R6RS mode
#!r6rs
(import (rnrs))
(begin
#!compatible
(call-with-input-file "test.scm"
(lambda (p) (print (get-bytevector-all p)))
:transcoder #f)
#!r6rs
(print (keyword? :key)) ;; error unbound variable
)
@ktakashi
ktakashi / string-read-macro.scm
Created October 26, 2013 20:17
Reader macro idea on Chaton
(library (string)
(export :export-reader-macro)
(import (rnrs)
(srfi :6 basic-string-ports)
(sagittarius)
(sagittarius reader)
(sagittarius control)
(text parse))
;; the result will be (string-concatenate (list of string and symbol))
@ktakashi
ktakashi / result.txt
Last active December 27, 2015 14:59
bench mark result
$ sash etc/tak-sash.scm
0.62803584
$ ./bin/picrin.exe etc/tak.scm
1.404000
$ gosh etc/tak-gosh.scm
;(time (f))
; real 0.734
; user 0.734
@ktakashi
ktakashi / Makefile
Created November 7, 2013 08:55
Makefile for picrin on Cygwin
CC=gcc
CFLAGS=-Wall -O3
UNAME_S := $(shell uname -s)
SO_PREFIX=lib
SO_EXT=.so
ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
SO_PREFIX=cyg
SO_EXT=.dll
endif
@ktakashi
ktakashi / Result.txt
Created November 7, 2013 09:29
Result on X86_64 Ubuntu
~/work/picrin$ sash etc/tak-sash.scm
env LD_LIBRARY_PATH=lib bin/picrin etc/tak.scm
0.830000
~/work/picrin$ sash etc/tak-sash.scm
0.462195968