scheme

Chapter 2 データ型 - 2.2 合成データ型 - 2.2.4 データ型間の変換

型名->型名 で変換! 美しい! (ちょっと冗長だが)シンプルなルール! scheme って冗長さを厭わず「正しい」感じだな。 gosh> (char->integer #\d) 100 gosh> (integer->char 65) #\A イレギュラーっぽいのを与えてみる: gosh> (integer->char 0) #\null go…

Chapter 2 データ型 - 2.2 合成データ型 - 2.2.3 ドット対とリスト (2)

リストに入る前に復習。

car, cdr, cons

car や cdr を初めて知った Rubyist が初めてやるだろうことをやっとくよ。 #!/usr/bin/ruby class Array def method_missing(name, *args) if name.to_s =~ /^c([ad]+)r$/ $1.split(//).reverse.inject(self) do |cons, ch| (ch == "a") ? cons[0] : (cons.…

Chapter 2 データ型 - 2.2 合成データ型 - 2.2.3 ドット対とリスト

さぁ、耳慣れぬ言葉が出てきました。「ドット対」ですってよ。読みは「どっとつい」ですよね。対消滅みたいな。「リスト」も私の認識は曖昧だなぁ。大事そうなのでゆっくりいきますよ。 ドット対は二つの任意の値を組合せて順序対にすることで作りだされた合…

Chapter 2 データ型 - 2.2 合成データ型 - 2.2.2 ベクタ

配列とか「リスト」と呼ばれるものとは違うのかな? 多次元を扱えるトコが良いトコ? 処理も入る「リスト」と分けて「データ」というのを強調してるのかな? gosh> (vector 0 1 2 3 4) #(0 1 2 3 4)#(...) が簡略記法ってこと? gosh> #(0 1 2 3 4) #(0 1 2 …

寄り道: Gauche インタプリタを少ないタイプ数で exit する

夕方休憩30分を使ってやるよ。早く eval たいのもある。 404 Not Found を見ながらやるよ。 まずはクォート。 gosh> (define exxit '(exit)) exxit (null-environment 5)は、R5RSで規定されている単なる構文的な束縛を含むnullモジュールを返します。 gosh> …

Chapter 2 データ型 - 2.2 合成データ型 - 2.2.1 文字列

今日から合成データ型ですってよ。文字列は文字のガッチンコみたいですよ。 文字列: gosh> "Hello, World!" "Hello, World!"世はなべて事もなし 文字から文字列を合成するには string という関数を使う: gosh> (string #\H #\e #\l #\l #\o) "Hello"一応や…

can't exit

gosh> (define exit '(exit)) exit gosh> exit (exit)な、なんだってー!! 括弧もシンボルに含められるのか! gosh> (exit) *** ERROR: invalid application: ((exit)) Stack Trace: _______________________________________で、出られないッ! eval を探…

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.4 シンボル (2)

gosh> (define xyz 9) xyz gosh> xyz 9はぁ、define はグローバルですか……。ローカル変数ってあるのかな?([TODO]) そうそう、こうやって: gosh> (xyz) *** ERROR: invalid application: (9) Stack Trace: _______________________________________括弧を付…

SRFI

SRFI は Scheme Requests for Implementation の略。Scheme の事実上の標準拡張ライブラリ。「Scheme 実装要望」って名前だけど、Scheme は言語仕様をできるだけ小さくしておきたいから(それは LISP と分かつアイデンティティの一つでもある)、標準としては…

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.4 シンボル

gosh> #t #t gosh> 42 42 gosh> #\c #\c「単純データ型は自己評価的」らしい。「即値」とはまた違う感じかな? gosh> (quote xyz) xyz「シンボルは識別子をクォートしたもの」って感じかな? gosh> 'xyz xyz略記法。クォートしてる。 gosh> (symbol? 'xyz) #…

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.3 文字 (2)

昨日は多忙で忘れてた。昼休みもついつい仕事してたし。 gosh> (char-ci=? #\a #\A) #t gosh> (char-ci (char-downcase #\A) #\a gosh> (char-upcase #\a) #\Achar-ci=? とか char-ci gosh> (upcase "abcde") *** ERROR: unbound variable: upcase Stack Tra…

Scheme演習

via オレジュ。 これも良さそうだな。メモル。 メアドが書いてあると、つい課題を提出しそうになる。

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.3 文字

文字に行きます! char? で文字かどうか確かめる。 gosh> (char? #\c) #t gosh> (char? 1) #f gosh> (char? #\;) #tうん。関数名に ? が使えるのはでかいよな。わかりやすい。scheme の場合は - も使えてウラヤマス。 空白文字は#\ 、あるいはより読みやすく…

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.2 数値 (4)

max は最大値を返す関数。min は最小値を返す関数。 gosh> (max 1 3 4 2 3) 4 gosh> (min 1 3 4 2 3) 1了解。 gosh> (max 1 3 4+i 2 3) *** ERROR: real number required: 4.0+1.0i Stack Trace: _______________________________________ gosh> (max 1+i 3+…

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.2 数値 (3)

比較演算子から。 gosh> (< 3 2) #f gosh> (>= 4.5 3) #tok. 実数と虚数を比較してみる。 gosh> (< 3+2i 2) *** ERROR: real number required: 3.0+2.0i Stack Trace: _______________________________________型エラー。おk。 これは「例外」なんだろうか…

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.2 数値 (2)

gosh> (eqv? 42 42) #t gosh> (eqv? 12 #b1100) #t gosh> (eqv? 12 #o14) #t gosh> (eqv? 12 #xc) #t #b は2進数 #o は8進数 #x は16進数 box。 同値性チェック関数は型によって違う。 eqv? は汎用。 = は数値。 今日は短いけどいいの。「つづく」

思いて学ばざれば則ち殆うし - sumiiの日記

俗に言う「Lisp 脳」というものを体験してみたいだけなんだけど(そこまで行けるかは知らん、端緒につかなきゃ始まらない)。現G社のT林さんも感動に打ち震えていたし。

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.2 数値

忙しいけどやるよ。 gosh> (number? 42) #t gosh> (number? #t) #f gosh> (complex? 2+3i) #t gosh> (real? 2+3i) #f gosh> (real? 3.1416) #t gosh> (real? 22/7) #t gosh> (real? 42) #t gosh> (rational? 2+3i) #f gosh> (rational? 3.1416) #t gosh> (ra…

KYOTO-U OPEN COURSEWARE

ÆȽ¬ Scheme »°½µ´Ö Teach Yourself Scheme in Fixnum Days の次にやるようにメモっとくよ。これやっても、やっと学部1回生の初歩レベルwww。でも文系出身プログラマはその辺ふてぶてしいよ。Haskell はこれらが終わってからやるよ。きっと。

Chapter 2 データ型 - 2.1 単純データ型 - 2.1.1 真理値

gosh> (boolean? #t) #t gosh> (boolean? "Hello, World!") #f gosh> (boolean? #f) #tふむ。一瞬、あれ?と思ったけど、if 文じゃなくて、型の判定か。真理値かどうか聞くだけなのでこれでよし。 つーか、"boolean?" って長ぇな。 gosh> (bool? #t) *** ERR…

おまけ。

Strike Back! gosh> exit #<subr exit> gosh> quit *** ERROR: unbound variable: quit Stack Trace: _______________________________________たはっ。そうだったw。 gosh> (exit)</subr>

Chapter 1 Schemeに入力しよう (1)

$ cat > hello.scm (begin (display "Hello, World!") (newline)) $ gosh hello.scm Hello, World!ふむ。display が print か。newline が print "\n"。begin はようわからんが、とりあえず次へ。 $ gosh gosh> (load "hello.scm") *** ERROR: cannot find f…

まえがき

読んだ。 scheme は言語仕様が小さいとは聞いている。50P か。 Ruby はどんなもんだろ?