2008-11-01から1ヶ月間の記事一覧

racket module nest and global variable

Let us consider the case global variable my-global-var is exported in module sub-sub.scm sub-sub.scm #lang racket (provide my-global-var print-my-global-var set-my-global-var!) (define my-global-var "global in sub-sub") (define (print-my-g…

fuild-let example

ref http://karetta.jp/book-node/gauche-hacks/014781 #lang racket (define x 200) (define (test) x) (test) ;=>200 (let ((x 50)) (test)) ;=>200 (require mzscheme) (fluid-let ((x 50)) (test)) ;=>50

stalingrad

stalinよりも高速だというstalingradを試してみた。 doを認識しない。ループは letrec loopのみ。 そのままでは、ちょっと使えなさそう

Gauche0.9 CiSE example

CiSE usage simple example cise ;save as cise-simple-example.scm (define-cise-stmt (mywhen test . body) `(if ,test (begin ,@body))) (define-cfn test1 (aa::int ) ::void (mywhen (> aa 50 ) (test2)) ) (define-cfn test2 (argc::int argv::char**)…

recursive miniKanren

cKanrenもminiKanrenも再帰関係を記述できない > (run* (q) (== q `(3 ,q))) ;; should be #0 = ( 3 . #0#) '() 実行すると「そんな関係は存在しない」という答 '() が帰ってくる。説明のためもう少し複雑な例を使う。これでも同様 > (run* (q) (fresh (x) (…

Scheme? -> cKanren

usage (run* (x) (== x 3) (scm?->ck number? x));=>(3) (run* (x) (scm?->ck number? x) ;;project does not work in this order (== x 3)) ;=>(3) (run* (x) (== x 'a) (scm?->ck number? x));=>'() (run* (q) (fresh (x y) (== x 3) (== y 5) (scm?->ck <…

schelog %let danger

#lang scheme (require racklog) (define %derive-type (%let ( X Y T) (%rel ( ) [( (list '+ X Y ) 'pls) ] ))) (%which (T) (%derive-type '(+ z y ) T )) ;=> ((T . pls)) (%which (X Y T) (%derive-type (list '+ X Y ) T )); => ((X . z) (Y . y) (T .…

cKanren Racket

https://github.com/niitsuma/cKanrenfork from http://rkrishnan.org/blog/2012/01/09/ckanren/ and little bug fixedUsage:samealso can use (require cKanren) #lang racket (require cKanren) (run* (q) (== q 3)) more extension (but still buggy) htt…

[scheme] srfi 53

srfi 53 の便利関数をいろいろ作ったhttps://github.com/niitsuma/Racket-miniKanren/blob/recursive/srfi-53.scm 364行より下が自分の書いた追加関数 non-syntax-macro-conpose-after srfi 53のマクロは他の普通のマクロと混在して使えない。 普通のマクロ…

[scheme] miniKanrenで画像処理

miniKanrenで画像処理する例 connected-component-labeling https://github.com/niitsuma/Racket-miniKanren/blob/recursive/image-processing/connected-component-labeling.scm 特殊な事はしていないのでcKanrenなどでも動はず Racketに組み込みで入ってる…

stalin can not optimize stream

Re: A fast scheme implementation? http://newsgroups.derkeiler.com/Archive/Comp/comp.lang.scheme/2007-12/msg00061.html ftp://ftp.ecn.purdue.edu/qobi/integ.tgzでstalinが非常に高速なことを示す例としてあげられている積分プログラムをstreamで書き…

[scheme] miniKanren util

miniKanrenで使える便利関数をいくつか追加したhttps://github.com/niitsuma/Racket-miniKanren/blob/recursive/miniKanren.scm の183行から下が自分の書いた追加関数 for-eache for-eachをminiKanrenに拡張したもの for-eachoという拡張がすでにあるが、for…

[scheme] miniKanren matche macro with "..." pattarn

miniKanren matche マクロで matchマクロと同様の ... を使ったパターンマッチをできるようにしたhttps://github.com/niitsuma/Racket-miniKanren/blob/recursive/matchee.scm諸事情で ... ではなく ___ を代用している 使用法 matchマクロと同じ。具体例は…

give up run lalr-scm in racket

I try to run lalr.scm on racket. but give up.http://www.suri.cs.okayama-u.ac.jp/~niitsuma/lalr.rkthttp://www.suri.cs.okayama-u.ac.jp/~niitsuma/calc.rkt

match macro difference

Gauche OK (use srfi-1) (use util.match) (match '(0 (1 2) (3 4 5)) [(a (b c) (d e f)) (list a b c d e f)]) (match '(0 (1 2) (3 4 5)) [`(,a (,b ,c) (,d ,e ,f)) (list a b c d e f)]) racket Err #lang scheme (require racket/match) (match '(0 (1…

scheme emacs dev env

Quack http://www.neilvandyke.org/quack/ download from quack.el from http://www.neilvandyke.org/quack/ mv quack.el ~/usr/share/emacs/site-lisp/ add to ~/.emacs.el (load-file "~/usr/share/emacs/site-lisp/quack.el")(require 'quack) open some.…

unit test

Unuit test とは http://ja.wikipedia.org/wiki/%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88 RackUnit: Unit Testing http://docs.racket-lang.org/rackunit/index.html?q=unit%20test&q=test boost test http://www.kmonos.net/alang/boost/classes/tes…

stalin bug

stalin-0.11/include/QobiScheme.sc stalin-0.11/benchmarks/em-functional.sc (define (reduce-vector f v i) (let ((n (vector-length v))) (cond ((zero? n) i) ((= n 1) (vector-ref v 0)) (else (let loop ((i 1) (c (vector-ref v 0))) (if (= i n) c …

Racket(emacsとC++ユーザー向け)入門

Racketとは CやC++よりも簡単に出来るプログラミング環境 CやC++のメタ制御にも使える 例: パラメータを3 4 ... 9 まで変更しながらCのプログラムを実行する Perl Python Ruby などが類似した使われ方をする メタ制御にはRacketの方が便利な場面が多い Perl…

schelog %= %==

(%which (X Y Z U V W ) (%== (list X Y Z) (list U V W) )) >#f (%which (X Y Z U V W ) (%= (list X Y Z) (list U V W) )) >'((X . _) (Y . _) (Z . _) (U . _) (V . _) (W . _)) (%which (X Y Z U V W ) (%= (list X Y Z) (list U V ) )) >#f

miniKanren入門

http://en.wikipedia.org/wiki/MiniKanren http://mitpress.mit.edu/books/reasoned-schemer http://kanren.sourceforge.net/ http://minikanren.org/ https://thestrangeloop.com/sessions/relational-programming-in-minikanren good exmple http://object…

scheme

全般 link col Introduction to Programming using Lisp http://www.botnode.com/newspirit/lispstart.html link集 http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/ 様々な解説 http://vipprog.net/wiki/prog_lang/scheme.html 分かりやすい入門 t…