
                                                         (Rev.7 2012/11/06)

Scheme}Nt@X

1.͂߂
 ec[̃}N@\ƂāASchemeC^v^񋟂܂B
 }NɂAIɍsƂAc[̓g邱Ƃ
ł܂B
 {ł́ASchemeC^v^̎dl܂B
 ec[̃JX^}CYɂẮAc[Ƃɒ񋟂hLgQ
ĉB


2.Wւ̏
 R5RSւ̏ڕWɂĂ܂Aȉɋ_͕WƈقȂ܂B

  - V{͑啶ʂ܂B
  - ^32bitl̂݃T|[g܂B
  - Sȃ}N(define-syntax, let-syntax, letrec-syntax)͂܂B
    ɓ`Iȃ}N(define-macro)g܂B
  - ȉ̋@\܂B
    dynamic-wind, char-ready?, ̑낢

 ܂ASRFÏꕔT|[g܂B
  SRFI-6<*>  Basic String Ports
  SRFI-8<*>  receive: Binding to multiple values
  SRFI-11    Syntax for receiving multiple values
  SRFI-26<*> Notation for Specializing Parameters without Currying
  SRFI-30<*> Nested Multi-line Comments
  (<*>SRFI͑gݍ݂łB̑(use srfi-11)ȂǂƂKv܂)

 SRFI-1 list-processing library̓t@Xp\łB
  http://srfi.schemers.org/srfi-1/srfi-1-reference.scmAscmlib\srfi-1.scm
  ƂĕۑƁA(use srfi-1)ŗpł悤ɂȂ܂B

 R5RS͈̔͊O̊ǵAGauche, Guile, TinySchemeȂǂ̏nQlɂĂ܂B


3.\
 - L@
   (): ۃJbR̓O[vƃXg߂Ɏg
   #t: ^l
   #f: Ul
   #\: 萔̐擪 (#\aŕaɂȂ)
   ' : ef[^
   ` : 萔
   " : \L邽߂Ɏgp ("ABC"ŕABCɂȂ)

   ;#!͍sRgɂȂ܂
   #| ... |#̓ubNRgɂȂ܂ [SRFI-30]

 - 葱Ăяo (<Zq> <Iyh> ...)
   (+ 2 4) => 6

 - ϐ̒` (define <ϐ> <>)
   (define x 1)
   (define x (+ 3 4))

 -  (set! <ϐ> <>)
   (define x 1)
   (set! x 2)

 - ֐̒` (define (<֐> <>) <{>)
   (define (add3 x) (+ x 3))
   (add3 4) => 7

 - 葱̍쐬 (lambda <> <{>)
   ((lambda (x) (+ x x)) 4) => 8

   ł́A:optionalňȗ̃ftHglwł܂B
   ((lambda (a b :optional (c 3)) (list a b c)) 1 2)) => (1 2 3)

 - (cut expr-or-slot1 ...)
   [SRFI-26] Kp葱
   cut́AtH[<>Ɠ̈lambdaɓWJ܂B
   Ō̈ɂ<...>g܂B
   (cut list 1 <> 3 <> 5)
     => (lambda (|G:4| |G:7|) (list 1 |G:4| 3 |G:7| 5))

   cutéAeexpr-or-slot1lambdȃOɕ]܂B
   (cute list (+ 1 2) <>)
     => (let ((|G:10| list) (|G:12| (+ 1 2)))
          (lambda (|G:17|) (|G:10| |G:12| |G:17|)))

 - RXgNg (let <> <{>)
   ͎̌`Ƃ邱 ((<ϐ1> <l1>) ...)

   ̕ϐ`ĂA{̂]܂B
   ̕ϐ͖{̂̊O͎QƂł܂B

   (let ((x 2) (y 3)) (* x y)) => 6  (xylet̊Oł͎QƂłȂ)

   let̒ԂƂāAlet*, letrec܂B
    let͑𓯎ɕ] (݂̕]ʂQƂȂ)
    let*͑Eɕ]
    letrec͍ŏɑS̕ϐ`ĂAl
   named-let, let-optionalsg܂B

 - e (quote <f[^>), `(<f[^>)
   (quote x) => x
   (quote (1 2 3)) => (1 2 3)
   '(1 2 3) => (1 2 3)

 - 萔 (quasiquote <qqev[g>), `(<qqev[g>)
   J}(,), J}Abg(,@)̏āAquoteƓłB
   }N̋LqȂǁAXg̍\̑ĂƂɗLpłB
   qqev[gɃR}ꍇAJ}ɑ]}܂B
   ,@ꍇ́A]ꂽɃJbR͂Ƃ}܂B

   `(a ,(+ 1 2) ,@(map abs '(4 -5 6)) b) => (a 3 4 5 6 b)

 -  (begin <1> ...)
   珇ɕ]AŌ̎̒lԂ܂B
   (define x 0)
   (begin (set! x 5) (+ x 1)) => 6

 -  (if <eXg> <consequent> <alternative>)
   eXg^Ȃconsequent]܂B
   łȂalternative]܂B
   alternative͏ȗ\łB

   (if (number? 3) 'yes 'no) => yes

   ̑̏Ƃcond, case܂B
 
 - (and <eXg1> ...)
   eXg]UlȂAc̃eXg]ɋUlԂ܂B
   S^ȂŌ̎̒lԂ܂B

 - (or <eXg1> ...)
   eXg]^lȂAc̃eXg]ɂ̒lԂ܂B
   SUȂUlԂ܂B

 - (not <>)
   ^ȂU(#f)ԂAUȂ^(#t)Ԃ܂B

 - JԂ
   (do ((<ϐ1> <l1> <Xebv1>) ...)
       (<eXg> <> ...)
       <{>)

   ͂߂Ɋeϐlŏ܂B
   eXg^Ȃ玮]āAŌ̎̒lԂ܂B
   eXgUȂ{̂]AeXebv]ă[v܂B

   (do ((i 0 (+ i 1)) (x 0))
       ((= i 10) x)
       (set! x (+ x i))) => 45

 - q (eqv?, eq?, equal?)
   q͏ɐ^(#t)U(#f)Ԃ܂B
   eq?, eqv?, equal?2̃IuWFNgłꍇɐ^Ԃ܂B

    (eq? 2 2) => #t
    (eq? 2 3) => #f
    (eq? 'a 'a) => #t
   
   ̎ʂɂāAeq?łʂequal?łÂłB
   ݂̎ł́Aeq?eqv?͏ɓʂԂ܂B
   equal?̓XgAAxN^̓eċAIeqv?Ŕr܂B

 - (boolean? <obj>) obj#t#fȂ^Ԃ܂B
   (boolean? #f) => #t
   (boolean? 0) => #f

 - (error <message>)
   G[𔭐܂B


4.}N
 - `Iȃ}N (define-macro <O > <{>)
   RpC<O >ƁA{̂Ăяo܂B
   āA{̂̎sʂ̏ꏊɑ}AēxRpCĕ]܂B

   (define-macro (for var-start-stop . body)
     (let ((limit (gensym)) 
           (var (car var-start-stop)) 
           (start (cadr var-start-stop)) 
           (stop (caddr var-start-stop)))
      `(do ((,var ,start (+ ,var 1)) (,limit ,stop))
           ((> ,var ,limit))
           ,@body)))
   (for (i 1 10) (display i))
   => (12345678910ƈ)

 - macroexpand, macroexpand-1
   }N̓WJʂԂ܂B
   macroexpand-1̓}N1񂾂WJ܂B
   macroexpand͓WJ}NȂȂ܂ŌJԂ܂B

   (macroexpand-1 '(for (i 1 10) (display i)))
   => (do ((i 1 (+ i 1)) (|G:5| 10)) ((> i |G:5|)) (display i))

   (macroexpand '(for (i 1 10) (display i)))
   => (Lmacroexpand-1̌ʂAdoWJʂ)

 - (macro? <obj>) obj}NȂ^Ԃ܂B


5.V{
 - (symbol? <obj>) objV{Ȃ^
 - (symbol-bound? <obj>) obj݂̊ɑĂΐ^
 - (string->symbol <str>) V{ɕϊ
 - (symbol->string <symbol>) V{𕶎ɕϊ
 - (gensym)
   ӂȃV{Ԃ܂B
   (`I)}N̕ϐ⑫邽߂Ɏgp܂B
   (gensym) => |G:4| (s邽тɈႤV{ɂȂ)
 - (gensym? <obj>) objgensymŐꂽV{łΐ^


6.l
 - lZq (+, -, *, /)
   (* 2 3) => 6
   (+ 2 3 4) => 9

 - /quotientp\
   (quotient 9 3) => 3

 - (remainder <a> <b>) ]vZ (modulo`)
   (remainder 10 3) => 1
   (modulo 10 3) => 1

 - lrp̏q (<, <=, =, >=, >)
   (<= 2 3) => #t

 - (abs <num>) Βl𓾂
   (abs -5) => 5

 - (min <num1> ...), (max <num1> ...) ŏlAől𓾂
   (min 4 3 8 1) => 1

 - (number? <obj>) lȂ^
 - (integer? <obj>) Ȃ^
 - (zero? <obj>) 0Ȃ^
 - (even? <obj>) Ȃ^
 - (odd? <obj>) Ȃ^
 - (negative? <obj>) Ȃ^
 - (positive? <obj>) Ȃ^


7.Xg
 - yAƃXg
   yAcarAcdrƌĂ΂2̃tB[hB
   yA(<car> . <cdr>)ŕ\LB
   XgcdrXgł悤ȃyAAA ̃XgB
   ̃Xg()ƕ\LB
   vf1, 2, 3Ȃ郊XgyA̕\Lŕ\ƁA(1 . (2 . (3 . ())))ƂȂB
   Xg̓JbRɂL@gBLXg(1 2 3)ƕ\LłB
   
 - (cons <obj1> <obj2>) VyA
   (cons 'a 'b) => (a . b)
   (cons 'a (cons 'b '())) => (a b)

 - (pair? <obj>) objyAȂ^

 - (list? <obj>) objXgȂ^
   (list? '(1 2 3)) => #t
   (list? '(1 . 2)) => #f

 - (null? <obj>) obj󃊃XgȂ^

 - (car <pair>) yAcarԂ
   (car '(1 2 3)) => 1

 - (cdr <pair>) yAcdrԂ
   (cdr '(1 2 3)) => (2 3)

 - (caar <pair>) carcarԂ
   ɂcadr, cdar, cddr, caadrȂǂ܂

 - (list <obj1> ...) 烊Xg쐬
   (list 1 2 3) => (1 2 3)

 - (length <list>) Xg̒Ԃ
   (length '(1 2 3)) => 3

 - (append <list1> ...) ŏ̃XgɁÃXg̗vfȂXgԂ
   (append '(1 2) '(3 4 5) '(6 7 8)) => (1 2 3 4 5 6 7 8)

 - (reverse <list>) XgtɂAVXgԂ
   (reverse '(1 2 3)) => (3 2 1)

 - (list-tail <list> <k>) w肵ʒuȍ~̃XgԂ
   (list-tail '(1 2 3 4 5) 2) => (3 4 5)

 - (list-ref <list> <k>) w肵ʒu̗vfԂ
   (list-ref '(a b c) 2) => c

 - (set-car! <list> <obj>) yAcarύX
   (define l '(1 2 3))
   (set-car! l 9) => (9 2 3)

 - (set-cdr! <list> <obj>) yAcdrύX
   (define l '(1 2 3))
   (set-cdr! l 9) => (1 . 9)

 - (memq <obj> <list>) listcarobjł̂Ԃ
   (memq 'b '(a b c)) => (b c)
   l̎葱ƂāAmemv, member܂B
   ̕]memqeq?, memveqv?, memberequal?g܂B

 - (assq <obj> <alist>)
   alist̓yAȂ郊XgłȂ΂ȂȂB
   assq́Aalist̗̒vfcarobjł̂Ԃ܂B
   (assq 'b '((a 1) (b 2) (c 2))) => (b 2)
   l̎葱ƂāAassv, assoc܂B
   ̕]assqeq?, assveqv?, assocequal?g܂B


8.
 - ̕\L
   #\<>ŁA\L܂B
   (define x #\a)
   (define y #\)

   ܂Aʂȕ̕\LƂāAȉ̕\܂B
   #\space    Xy[X
   #\newline  s(\n)
   #\return   A(\r)
   #\tab      ^u(\t)

 - rp̏q (char<=?, char<?, char=?, char>=?, char>?)
   (char<=? #\a #\p) => #t

   ȉ̏q́A啶ʂɔrł܂B
   char-ci<=?, char-ci<?, char-ci=?, char-ci>=?, char-ci>?

 - (char-downcase <char>) 擾
 - (char-upcase <char>) 啶擾
   (char-downcase #\A) => #\a

 - (char->integer <char>) R[h𓾂
 - (integer->char <integer>) R[h當𓾂

 - (char? <obj>) Ȃ^
 - (char-lower-case? <obj>) Ȃ^
 - (char-upper-case? <obj>) 啶Ȃ^
 - (char-alphabetic? <obj>) p(a-z, A-Z)Ȃ^
 - (char-numeric? <obj>) (0-9)Ȃ^
 - (char-whitespace? <obj>) 󔒂Ȃ^ (sA^u^)


9.
 - ̕\L
   ""ň݂͂܂B "\́A\ŃGXP[v܂B
   sA^u\߂ɁA\n, \r, \tg܂B
   (define str "ABC")
   (define str2 "\\100")

 - rp̏q (string<=?, string<?, string=?, string>=?, string>?)
   (string<=? "abc" "zzz") => #t

   ȉ̏q́A啶ʂɔrł܂B
   string-ci<=?, string-ci<?, string-ci=?, string-ci>=?, string-ci>?

 - (string-length <str>) ̒Ԃ܂
   (string-length "eXg") => 3

 - (string <char1> ...) ŗ^ꂽ當܂
   (string #\a #\b #\c) => "abc"

 - (string->number <str>) 񂩂琔l𓾂
 - (number->string <num>) l當𓾂
 
 - (string->list <str>) 񂩂當̃Xg𓾂
 - (list->string <list>) ̃Xg當𓾂

 - (string? <obj>) Ȃ^

 - (string-append <str1> ...) A܂
   (string-append "ABC" "Z" "zzz") => "ABCZzzz"

 - (string-copy <str>) Rs[

 - (string-ref <str> <k>) w肵ʒu̕擾܂ (0擪)
   (string-ref "ABCD" 2) => #\C

 - (string-set! <str> <k> <char>) w肵ʒu̕ύX܂
   (define str "ABCD")
   (string-set! str 2 #\Z) => "ABZD"

 - (substring <str> <start> <end>) 
   startŎw肵ʒuend̒O܂ł̕؂o܂B
   (start͌̕ʂɊ܂܂܂Bendʒu͌̕ʂɊ܂܂܂)
   (substring "ABCDE" 1 3) => "BC"

 - (make-string <size> <char>) 傫w肵ĕ쐬܂
   (define s (make-string 10 #\a))   "aaaaaaaaaa"쐬
   <char>͏ȗ\łBȗꍇ̓Xy[Xŏ܂B

 - (delay <expr>)
 - (force <promise>)
   x]邽߂Ɏgp܂B
   delaýApromiseƌĂ΂IuWFNgԂ܂B
   forcéApromiseŗ^ꂽIuWFNg]܂B

   (define p (delay (+ 2 3)))
   (force p) => 5


10.xN^
 - xN^̕\L
   xN^'#(...)ŕ\L܂B'͏ȗ\łB
   '#(1 2 3) => #(1 2 3)

 - (make-vector <size> <obj>) 傫w肵ăxN^쐬܂
   (make-vector 10 0) => #(0 0 0 0 0 0 0 0 0 0)
   <obj>͏ȗ\Bȗꍇ()ŏ܂B

 - (vector <obj1> ...) xN^܂
   (vector 1 2 3) => #(1 2 3)

 - (vector? <obj>) xN^Ȃ^
 - (vector-length <vec>) xN^̑傫Ԃ܂

 - (vector-ref <vec> <k>) w肵ʒu̗vf𓾂܂ (擪0)
   (vector-ref #(4 5 6) 2) => 6

 - (vector-set! <vec> <k> <obj>) w肵ʒu̗vf܂
   (define v #(1 2 3))
   (vector-set! v 0 9) => (v#(9 2 3)ɂȂ)

 - (list->vector <list>) XgxN^쐬
 - (vector->list <vec>) xN^烊Xg쐬


11.@\
 - (procedure? <obj>) obj葱Ȃ^
   (procedure? +) => #t

 - (apply <proc> <arg1> ... <args>)
   proc͎葱AŌargs̓XgłȂ΂ȂȂB
   proc<arg1>...<args>Ȃ郊XgɂČĂяo܂B

 - (eval <expr> <environment>)
   expr]܂B
   (݂̎ł́Aenvironment̎w͖܂)

 - (map <proc> <list1> ...)
   procelistƂ̗vfƂɓKpǍʂ̃XgԂ܂B
   (map + '(1 2 3) '(4 5 6)) => (5 7 9)

 - (for-each <proc> <list1> <list2>)
   procelistƂ̗vfɏԂɓKp܂B

 - (call-with-current-continuation <proc>)
   ݂̌pEo葱ƂăpbP[WAprocɓnB
   proc1̎葱łȂ΂ȂȂB
   call-with-current-continuatiońAcall/ccƗLłB

 - (values <obj1> ...)
   call-with-valuespɁAׂĈn܂B

 - (call-with-values <producer> <consumer>)
   producerŌĂяoǍʂconsumerɓnĎs܂B
   valuesƑgݍ킹邱ƂŁAl󂯎鏈Lqł܂B

   (call-with-values (lambda () (values 3 4)) (lambda (x y) (+ x y))) => 7

 - (receive <formals> <expr> <body> ...)
   [SRFI-8] l󂯎鏈Lqł܂Bȉ̎ƓłB
   (call-with-values (lambda () <expr>) (lambda <formals> <body> ...))
   expr]AԂꂽlformals̕ϐɑbody]܂B

   (receive (x y) (values 3 4) (+ x y)) => 7

 - (let-values ((vars expr) ...) body ...)
   [SRFI-11] lԂ̒l𑩔܂B
   (let-values (((a b) (values 1 2))
                ((c . d) (values 3 4 5)))
     (list a b c d))) => (1 2 3 (4 5))

 - (let*-values ((vars expr) ...) body ...)
   [SRFI-11] let-valuesɗގĂ܂A͍E֏Ԃɍs܂B
   (letlet*̊֌WƓł)


12.o
 - (call-with-input-file <filename> <proc>)
   filenameŎw肳ꂽt@C͂ƂāA葱procĂяo
   (call-with-input-file "zz" read)  t@Czz̐擪̗vfǂ

 - (call-with-output-file <filename> <proc>)
   filenameŎw肳ꂽt@Co͂ƂāA葱procĂяo

 - (input-port? obj) ̓|[gȂ^
 - (output-port? obj) o̓|[gȂ^
 - (current-input-port) ݂̓̓|[gԂ
 - (current-output-port) ݂̏o̓|[gԂ

 - (open-input-file <filename>)
   filenameŎw肳ꂽt@Cœ̓|[g쐬܂B
   t@C݂Ȃ΃G[ɂȂ܂B

 - (open-output-file <filename>)
   filenameŎw肳ꂽt@Cŏo̓|[g쐬܂B
   t@C݂ꍇ́Ãt@C͔j܂B

 - (close-input-port <port>) ̓|[g܂B
 - (close-output-port <port>) o̓|[g܂B
 - (port-closed? <port>) |[gĂ^B

 - (open-input-string <str>)
   [SRFI-6] p̓̓|[g쐬܂B

 - (open-output-string)
   [SRFI-6] p̏o̓|[g쐬܂B
   |[gւ̏o͓͂obt@ɏ܂Ă܂B

 - (get-output-string <port>)
   [SRFI-6] p̏o̓|[gɏ܂ꂽ擾܂B

 - (clear-output-string <port>)
   p̏o̓|[g̃obt@NA܂B

 - (read <port>)
   portSchemeIuWFNg̕\L\ǂ݂܂B

 - (read-char <port>)
   portꕶǂ݁Aport̕w悤ɍXV܂B

 - (peek-char <port>)
   portꕶǂ݂܂B

   readȂǂportȗꍇAcurrent-input-portǂ݂܂B
   ܂At@C̖readꍇAend of fileIuWFNgԂ܂B

 - (eof-object? <obj>) objend of fileIuWFNgȂ^

 - (write <obj> <port>)
   obj̕\L\portɏo͂܂B

 - (display <obj> <port>)
   obj̕\portɏo͂܂B̓GXP[vꂸɏo͂܂B

 - (newline <port>)
   sportɏo͂܂B

 - (write-char <char> <port>)
   portɏo͂܂B

   writeȂǂportȗꍇAcurrent-output-portɏo͂܂B

 - (file-exists? <filename>) t@C݂^

 - (load <filename>) filenameŎw肳ꂽt@Cs܂B
   filename"."܂"C:\"(C͔Cӂ̉p)Ŏn܂ĂȂꍇ́A
   t@CT[`pX(ϐ*load-path*)At@CT܂B

 - (require <string>)
   t@CT[`pXA<string>.scmƂt@CTload܂B

 - (use <feature>)
   t@CT[`pXA<feature>.scmƂt@CTload܂B
   (require "srfi-11")(use srfi-11)͓łB
   

13.K\
 oeditƓAPerl5݊̐K\GW𗘗pł܂B
 K\̎dloedit̃}jAQƂB
 ܂ASchemeAPIdlGaucheQlɂĂ܂B

 - \L@
   #/<regexp>/ŐK\IuWFNgɃRpC܂B
   #/<regexp>/iő啶ʂ܂B

 - (regexp? <obj>) objK\^
 - (string->regexp <str>) 𐳋K\IuWFNgɕϊ
 - (regexp->string <symbol>) K\IuWFNg𕶎ɕϊ

 - (rxmatch <regexp> <string>)
   string𐳋K\IuWFNgregexpŌ܂B
   ꍇ́A<regmatch>IuWFNgԂ܂B
   Ȃꍇ́A#fԂ܂B

 - (rxmatch-num-matches <regmatch>)
   regmatchIuWFNg̎}b`̐Ԃ܂B

 - (rxmatch-substring <regmatch> <i>)
   }b`Ԃ܂B
   iȗ邩0̏ꍇAvŜԂ܂B
   iɐ̐^ꂽꍇ́AiԖڂ̕Ԃ܂B

 - (regexp-replace <regexp> <string> <substitution>)
   stringregexpɍŏɃ}b`substitutionŒu܂B
   substitution̏ꍇAw肵Œu܂B
   uł́A\1,\2ȂǂgpăTu}b`QƂł܂B
   񃊃e\gꍇA̃obNXbVKvłB
   \1,\2Ȃǂ̑ɁA$1,$2ȂǂgƂł܂B
   substitution葱̏ꍇAregmatchIuWFNgƂĎ葱
   s܂B̎葱̌ʂuƂĎg܂B

 - (regexp-replace-all <regexp> <string> <substitution>)
   stringregexpɃ}b`SĂ̕substitutionŒu܂B

   (regexp-replace-all #/(\w+)/ "aaa bbb ccc" ":\\1:") => ":aaa: :bbb: :ccc:"
   (regexp-replace-all #/(\w+)/ "aaa bbb ccc" ":$1:") => ":aaa: :bbb: :ccc:"
   (regexp-replace-all #/\w+/ "aaa bbb ccc"
     (lambda (m)
       (let ((s (string-copy (rxmatch-substring m))))
         (string-set! s 0 (char-upcase (string-ref s 0)))))) => "Aaa Bbb Ccc"


14.nbVe[u
 - (make-hash-table <type>)
   ̃nbVe[u쐬܂B
   typeɂ̓L[̔r葱(eq?, eqv?, equal?, string=?)w肵܂B
   typeȗꍇ́Aeq?ɂȂ܂B

   (define h (make-hash-table 'string=?))

 - (hash-table? <obj>) objnbVe[uȂ^B
 - (hash-table-type <h>) nbVe[ũ^Cv(eq?Ȃ)Ԃ܂B
 - (hash-table-num-entries <h>) nbVe[u̗vfԂ܂B
 - (hash-table-exists? <h> <key>) nbVe[ukeyΐ^B

 - (hash-table-get <h> <key> <default>)
   nbVe[uhkeyTāAlԂ܂B
   ȂꍇdefaultԂ܂B
   defaultȗꍇAG[ɂȂ܂B

 - (hash-table-put! <h> <key> <value>)
   nbVe[ukey, value}܂B

 - (hash-table-delete! <h> <key>)
   nbVe[ukeỹGg폜܂B
   Gg݂Ăč폜ꍇ͐^Ԃ܂B(݂Ȃꍇ͋U)

 - (hash-table-for-each <h> <proc>)
 - (hash-table-map <h> <proc>)
   proc2̈葱w肵܂B
   nbVe[ůeGgɂāAL[ƃf[^procs܂B
   hash-table-for-eachundefԂ܂B
   hash-table-map͌ʂ̃XgԂ܂B


15.IuWFNgVXe
 CLOS̃IuWFNgVXe񋟂\łB
 APIdlGaucheQlɂĂ܂B
 pAWFlbNt@NVȂǂ͖łB
 ݂͍\̓IȎgł܂B

 - (define-class <class-name> <supers> <slots>)
   NX`܂B
   supersɐeNX̃Xgw肵܂B(݂̎ł͖܂)
   slotsɃXbgXgw肵܂BXbgƂ͉i[ꏊłB
   (define-class <point> () (x y)) => <point>

 - (make <class-name>)
   CX^X𐶐܂
   (make <point>) => #<<point> 0x8e49870>

 - (slot-ref <obj> <slot_name>)
 - (slot-set! <obj> <slot_name> <value>)
   Xbg̃f[^QƁAf[^ݒ
   (define p (make <point>)) => p
   (slot-set! p 'x 10) => #undef
   (slot-ref p 'x) => 10


16.
 - (sys-time)
   ݂̎ԂPOSIX(1970/01/01 00:00:00̌oߕb)ŕԂ܂B
   (sys-time) => 1202285281

 - sys-tmIuWFNg
   ȉ̃Xbg܂B
   sec  : b(0 - 59) 
   min  :  (0 - 59) 
   hour :  (0`24) 
   mday :  (1`31) 
   mon  :  (0`11A10) 
   year : N (݂̔N1900l) 
   wday : j (0`6Aj0) 
   yday : N̒ʎZ (0`365A110) 
   isdst: ĎԂ̏(Lȏꍇ͐̒lAȏꍇ0Asȏꍇ͕̒l)

 - (sys-localtime <time>)
   POSIXԂ[JԂsys-tmIuWFNgɕϊ܂
   (sys-localtime (sys-time)) => #<sys-tm 0x84dc588>

 - (sys-strftime <format> <sys-tm>)
   sys-tmtH[}bgԂ܂
   (sys-strftime "%Y-%m-%d %H:%M:%S" (sys-localtime (sys-time)))
   => "2008-02-06 17:16:42" 


17.t@C̏
 - sys-statIuWFNg
   ȉ̃Xbg܂B
   size   : t@CTCY (oCg)
   mtime  : t@C̍XV (1970/01/01 00:00:00̌oߕb)
   ctime  : t@C̍쐬 (1970/01/01 00:00:00̌oߕb)
   atime  : t@C̎QƎ (1970/01/01 00:00:00̌oߕb)

 - (sys-stat <filename>)
   t@C̏Ԃ擾܂
   (display (sys-strftime "%Y-%m-%d %H:%M:%S"
     (sys-localtime (slot-ref (sys-stat "C:\\tmp\\aaa.htm") 'mtime))))
   => "2009-08-25 22:01:42" 


18.̑
 - (win-exec <cmd> <args1> ...)
   cmdŎw肵vON܂
   argsɈwł܂

 - (win-get-clipboard-text)
   Nbv{[h̃eLXg擾܂
