独習Scheme 三週間
(このWiLiKiの中にはまだいっぱい情報が眠っている)
はじめのいっぽ
Scheme入門・目次
about MzScheme(DrScheme) MzScheme の使い方
かってにリンク、途中からリンクはご法度なのだろうか?(と心配しながらリンクしています。ごめんなさい。)
http://www.math.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj.html#SEC56 http://download.plt-scheme.org/doc/205/html/r5rs/r5rs-Z-H-9.html#%_sec_6.2.5
> (+ 10+5i 2.1+1.1i) 12.1+6.1i > (+ 6/5 100/200) 17/10 >
> (format "~X" (+ #x20 #x30)) "50" > (format "~X" 16) "10" > #x10 16 > (format "~O" 16) "20" > #o20 16 > (format "~B" 16) "10000" > #b10000 16 > #e10 10 > #i10 10.0 >
> (real-part 5+10i) 5 > (imag-part 5+10i) 10 > (magnitude 5+10i) 11.180339887498949 > (angle 10+5i) 0.4636476090008061
参考:http://www.kt.rim.or.jp/~kbk/guile/guile_8.html
ちょっとショックな http://pc2.2ch.net/test/read.cgi/tech/1042167213/201-300 で見つけた計算誤差
C:\Documents and Settings\Imazu>mzscheme Welcome to MzScheme version 205, Copyright (c) 1995-2003 PLT > (* 7.0 0.1) 0.7000000000000001 > (* 6.0 0.1) 0.6000000000000001 > (* 0.6 0.1) 0.06 どうして?こうなるの?!!
http://download.plt-scheme.org/doc/205/html/mzscheme/mzscheme.html#node_toc_node_chap_4
構造体
C:\Documents and Settings\Imazu>mzscheme Welcome to MzScheme version 205, Copyright (c) 1995-2003 PLT > (struct? (seconds->date (current-seconds))) #t > (date-second (seconds->date (current-seconds))) 26 > (struct->vector (seconds->date (current-seconds))) #11(struct:date 1 3 7 12 9 2003 5 254 #f 32400)
http://download.plt-scheme.org/doc/205/html/mzscheme/mzscheme-Z-H-7.html#node_chap_7
C:\Documents and Settings\Imazu>mzscheme Welcome to MzScheme version 205, Copyright (c) 1995-2003 PLT > (thread (lambda () (let countdown ((i 10)) (if (= i 0) (display i) ; 'liftoff では何も表示しない、(display i)とすると別の入力で表示される (begin (sleep 2) (display i) (newline) (countdown (- i 1))))))) #<thread:STDIN::9> > 10 ; 2秒枚にカウントダウンの数字を表示。この表示中も別の入力を受け付ける 9 8 7 6 5 4 3 2 1 (current-thread) ; ここに何も表示されないまま入力待ちとなっているに(current-thread)を入力 0#<thread:mzscheme> >
参照:http://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-8.html#node_sec_6.2
http://download.plt-scheme.org/doc/205/html/mzscheme/mzscheme-Z-H-11.html#node_sec_11.4
参照:http://www.cs.wpi.edu/~kfisler/Courses/CS3733/Assignments/networking.html http://www.free-soft.org/FSM/english/issue01/sk.html
私は、MzSchemeへのテスト入力は、
C:\Documents and Settings\Imazu>mzscheme Welcome to MzScheme version 205, Copyright (c) 1995-2003 PLT >
を立ち上げといて、ファイル等からコピーしたのを右マウスクリックでペーストして入力しています。
> (define service-port 2000) > (define (client) (let-values ([(server->me me->server) (tcp-connect "localhost" service-port)]) (write '朝だよ me->server) ; <- 'ping (close-output-port me->server) (let ([response (read server->me)]) (display response) (newline) (close-input-port server->me)))) > (define (server) (let ([listener (tcp-listen service-port)]) (let-values ([(client->me me->client) (tcp-accept listener)]) (if (eq? (read client->me) '朝だよ) ; <- 'pong (write 'おはよう me->client) ; <- 'pong (write 'あなたは誰ですか? me->client)) ; <- 'who-are-you? (close-output-port me->client) (close-input-port client->me)))) > (thread server) #<thread:server> > (client) おはよう >
日本語もいけそうに見えるが、やっぱ文字化け有り clientの”'朝だよ”を変えて”'あなたは誰ですか?”を表示させる予定が >あなたは地ですか” と文字化け ちなみに eq? 比較の 'あなたは誰ですか? はOKだった
thread を使用しない場合は、 MzScheme(コンソール)を2ヶ立ち上げて(server)と (client)を別々に実行させる。"localhost"を変更して別々のPC間でもOK。
"[ ]"を”()”としても動作OK http://download.plt-scheme.org/doc/205/html/mzscheme/mzscheme-Z-H-14.html#node_sec_14.3
http://download.plt-scheme.org/doc/205/html/mzscheme/mzscheme.html#node_toc_node_chap_15
http://download.plt-scheme.org/doc/205/html/mzscheme/mzscheme-Z-H-15.html#node_sec_15.1
dateは構造体
> (define d (seconds->date (current-seconds))) > (struct->vector d) #11(struct:date 32 3 7 12 9 2003 5 254 #f 32400) > (date-second d) 32 > (date-minute d) 3 > (date-hour d) 7 > (date-day d) 12 > (date-month d) 9 > (date-year d) 2003 > (date-weak-day d) reference to undefined identifier: date-weak-day > (date-week-day d) 5 > (date-year-day d) 254 > (date-dst? d) #f > (date-time-zone-offset d) 32400 > (/ (date-time-zone-offset d) 3600) 9 >
> (shell-execute #f "notepad.exe" "" (current-directory) 'sw_shownormal) #f でメモ帳が起動します。 > (shell-execute #f "http://www.plt-scheme.org" "" (current-directory) 'sw_shownormal) #f で http://www.plt-scheme.org のホームページが開いたりしますが、 関連づけ?の設定によっては開きません。 >