: Gauche読書会,SICP勉強会に参加してきた

久しぶりにSchemeを触るので,慣れるまで苦労しました.

Gauche読書会

7章から8章まで読み進める.私は読むのが遅く9章まで行けなかったんだけどほかの人たちは9章まで読んでいたみたい.
以下7章,8章の練習問題.
P.68

(define (filter pred lis)
  (cond ((null? lis) '())
        ((pred (car lis)) (cons (car lis) (filter pred (cdr lis))))
        (else (filter pred (cdr lis)))))

(define (for-each-numbers proc lis)
  (for-each proc (filter number? lis)))

(define (map-numbers proc lis)
  (map proc (filter number? lis)))

(define (numbers-only walker)
  (lambda (proc lis)
    (walker proc (filter number? lis))))

P.74 5秒でとけなくちゃLisp脳じゃないらしい(私は5分くらい考えました)

(define (list . args) args)

P.101

(define (any-pred . preds)
  (lambda (x)
    (letrec ((iter (lambda (lis)
                     (cond [(null? lis) #f]
                           [((car lis) x) #t]
                           [else (iter (cdr lis))]))))
      (iter preds))))

(define (every-pred . preds)
  (lambda (x)
    (letrec ((iter (lambda (lis)
                     (cond [(null? lis) #t]
                           [((car lis) x) (iter (cdr lis))]
                           [else #f]))))
      (iter preds))))

SICP勉強会

P.26の1.2.5からP.31の1.3の手前まで読み進めました.問題1.28がほとんど理解できなくて,いろんな人のメモとかコードとか読んでだいたいこんな感じなのかなーというのはわかりました.

misc

勉強会が終わったあとからそういやquickrun.vimというものがあったよなー思い出し, 使ってみると便利すぎてびっくりした. 作業効率が格段にあがる.
ちなみに勉強会中でどうしていたかというとiTermを上下にsplitして上はVimでコードを書きつつ, 下のgoshで毎回(load "./hoge.scm")とかしていた.画面の移動はCtrl-k+Tabで移動するので左小指のFPの消費量が尋常じゃなかった.
もはやquickrun.vimが便利すぎて手放せない.