とりあえず、終端記号のa〜zまでをランダムに出力するコード

シンプルなコード↓(mixiで教えていただきました)

(use math.mt-random)

(define mt (make <mersenne-twister> :seed (sys-time)))

(define (terminal)
  (let ((rdm (mt-random-integer mt 26) ))
    (string-ref "abcdefghijklmnopqrstuvwxyz" rdm)))

もしくは

(use math.mt-random)

(define mt (make <mersenne-twister> :seed (sys-time)))

(define (terminal)
  (let ((rand (mt-random-integer mt 26) ))
    (integer->char (+ rand 97))))          ;97はa

最初に考えたコード↓

(use math.mt-random)

(define mt (make <mersenne-twister> :seed (sys-time)))

(define (terminal)
  (let ((rand (mt-random-integer mt 26) ))
    (cond ((eq? rand 0) 'a)
          ((eq? rand 1) 'b)
          ((eq? rand 2) 'c)
          ((eq? rand 3) 'd)
          ((eq? rand 4) 'e)
          ((eq? rand 5) 'f)
          ((eq? rand 6) 'g)
          ((eq? rand 7) 'h)
          ((eq? rand 8) 'i)
          ((eq? rand 9) 'j)
          ((eq? rand 10) 'k)
          ((eq? rand 11) 'l)
          ((eq? rand 12) 'm)
          ((eq? rand 13) 'n)
          ((eq? rand 14) 'o)
          ((eq? rand 15) 'p)
          ((eq? rand 16) 'q)
          ((eq? rand 17) 'r)
          ((eq? rand 18) 's)
          ((eq? rand 19) 't)
          ((eq? rand 20) 'u)
          ((eq? rand 21) 'v)
          ((eq? rand 22) 'w)
          ((eq? rand 23) 'x)
          ((eq? rand 24) 'y)
          (else 'z))))

冗長かも、ループ使って短く出来そうな…
だれか、突っ込みあったらお願いします。