INDEX
[Scheme]Scheme学習中
1  NI-Lab.  2004/06/22(Tue) 21:03
[Scheme]Scheme学習中

まぁ、ぼちぼちと。

2  NI-Lab.  2004/06/22(Tue) 21:05
日本人にはとっつきやすいと思われる Scheme 処理系。
Windowsでは動作しないが、Cygwin ではだいたい動く模様。

http://www.shiro.dreamhost.com/scheme/gauche/index-j.html
Gauche - A Scheme Interpreter

>Gauche(ゴーシュ)は、スクリプトインタプリタとしての使い易さに重点を置いて開発を行っているR5RS準拠のScheme処理系です。日常業務の中でのちょっとした処理を行うスクリプトを気軽にSchemeで書きたいなあ、という願望のもとに、起動が速いこと、システムへのアクセスが組み込まれていること、最初から多国語対応を考慮していること、リスト処理ライブラリとして他のC/C++プログラムから簡単にリンク可能であること、などを目標としています。
3  NI-Lab.  2004/06/22(Tue) 21:06
http://www.stdio.h.kyoto-u.ac.jp/~hioki/gairon-enshuu/SchemeNotes/scheme.html
Schemeへの道

学習参考ページ。
4  NI-Lab.  2004/06/22(Tue) 21:07
http://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html
独習 Scheme 三週間 Teach Yourself Scheme in Fixnum Days

学習参考ページ。
5  NI-Lab.  2004/06/22(Tue) 21:15
書籍「入門Scheme」のオンライン配布版など。

http://www4.ocn.ne.jp/~inukai/scheme_primer_j.html
入門Scheme

http://www.shuwasystem.co.jp/SchemePrimer/
入門Scheme ―Scheme Primer―

学習参考ページ。

6  NI-Lab.  2004/06/22(Tue) 21:16
http://www.sci.toyama-u.ac.jp/~iwao/Scheme/r5rsj/html/r5rsj_toc.html
アルゴリズム言語Schemeに関する第五改訂報告書

7  NI-Lab.  2004/06/22(Tue) 21:18
Scheme で Hello, world
Gauche(実行ファイル名はgosh)用スクリプトファイル。

$ cat hello.s
#!/bin/sh
:; exec gosh -- $0 "$@"

(display "Hello, world!")
(newline)

8  NI-Lab.  2004/06/22(Tue) 21:19
足し算をしてみる。

$ cat sum.s
#!/bin/sh
:; exec gosh -- $0 "$@"

(define x 2)
(define y 3)

(define z (+ x y))

(display z)
(newline)

$ ./sum.s
5

9  NI-Lab.  2004/06/22(Tue) 21:20
インクリメントしてみる。

$ cat ./func.s
#!/bin/sh
:; exec gosh -- $0 "$@"

(define (increment x) (+ x 1))

(display (increment 5))

(newline)

$ ./func.s
6

10  NI-Lab.  2004/06/22(Tue) 21:23
http://www.amazon.co.jp/exec/obidos/ASIN/489471163X/nilab-22/
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン (著), ジュリー サスマン (著), ハロルド エイブルソン (著), Gerald Jay Sussman (原著), Julie Sussman (原著), Harold Abelson (原著), 和田 英一 (翻訳)

なんか、すごく読みにくい本。
なにこれ? 教科書?

っていうか、買っちゃったから、とりあえずこれを参考書にしてみる。
11  NI-Lab.  2004/07/03(Sat) 18:18
ラジアンを求めて、
三角関数 sin を使って計算する。

$ cat ./rad

(define pi 3.141592)

(define
(rad x)
(* pi
(/ x 180)
)
)

(define a 30)
(display (rad a))
(newline)
(display (sin (rad a)))
(newline)

$ gosh ./rad
0.5235986666666667 <= ≒ (30° / 180°) * 円周率π
0.49999990566243624 <= ≒ 0.5 = sin(30°)

参考:
http://www8.plala.or.jp/ap2/suugaku/sankakukansuu.html
ひろいんのページ - 資格取得のための数学 - 三角関数

12  NI-Lab.  2004/07/04(Sun) 01:05
階乗(n! = n * (n-1) * (n-2) * .....)をする。
再帰的なループをしている。
n=1のときに1を返すfactorial関数。

$ cat ./factorial

(define
(factorial n)
(if (= n 1)
1
(*
n
(factorial (- n 1))
)
)
)

(display "3 : ")
(display (factorial 3))
(newline)

(display "4 : ")
(display (factorial 4))
(newline)

(display "5 : ")
(display (factorial 5))
(newline)

(display "10 : ")
(display (factorial 10))
(newline)

(display "100 : ")
(display (factorial 100))
(newline)

(display "1000 : ")
(display (factorial 1000))
(newline)


$ gosh ./factorial
3 : 6
4 : 24
5 : 120
10 : 3628800
100 : 93326215443944152681699238856266700490715968264381621468592963895217599993
22991560894146397615651828625369792082722375825118521091686400000000000000000000
0000
1000 : 4023872600770937735437024339230039857193748642107146325437999104299385123
98629020592044208486969404800479988610197196058631666872994808558901323829669944
59099742450408707375991882362772718873251977950595099527612087497546249704360141
82780946464962910563938874378864873371191810458257836478499770124766328898359557
35432513185323958463075557409114262417474349347553428646576611667797396668820291
20737914385371958824980812686783837455973174613608537953452422158659320192809087
82973084313928444032812315586110369768013573042161687476096758713483120254785893
20767169132448426236131412508780208000261683151027341827977704784635868170164365
02415369139828126481021309276124489635992870511496497541990934222156683257208082
13331861168115536158365469840467089756029009505376164758477284218896796462449451
60765353408198901385442487984959953319101723355556602139450399736280750137837615
30712776192684903435262520001588853514733161170210396817592151090778801939317811
41945452572238655414610628921879602238389714760885062768629671466746975629112340
82439208160153780889893964518263243671616762179168909779911903754031274622289988
00519544441428201218736174599264295658174662830295557029902432415318161721046583
20367869061172601587835207515162842255402651704833042261439742869330616908979684
82590125458327168226458066526769958652682272807075781391858178889652208164348344
82599326604336766017699961283186078838615027946595513115655203609398818061213855
86003014356945272242063446317974605946825731037900840244324384656572450144028218
85252470935190620929023136493273497565513958720559654228749774011413346962715422
84586237738753823048386568897646192738381490014076731044664025989949022222176590
43399018860185665264850617997023561938970178600408118897299183110211712298459016
41921068884387121855646124960798722908519296819372388642614839657382291123125024
18664935314397013742853192664987533721894069428143411852015801412334482801505139
96942901534830776445690990731524332782882698646027898643211390835062170950025973
89863554277196742822248757586765752344220207573630569498825087968928162753848863
39690995982628095612145099487170124451646126037902930912088908694202851064018215
43994571568059418727489980942547421735824010636774045957417851608292301353580818
40096996372524230560855903700624271243416909004153690105933983835777939410970027
75347200000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000