On Lisp読書会#2に参加しました。

9:00からという挑戦的な時間でしたが時間通りに着けました!! よくやった自分。以下メモ。

3.3〜3.5節。

  • nconcは破壊的。
Break 2 [3]> (setq a '(1))
(1)
Break 2 [3]> (setq b '(2))
(2)
Break 2 [3]> (setq c '(3))
(3)
Break 2 [3]> (nconc a b c)
(1 2 3)
Break 2 [3]> a
(1 2 3)
Break 2 [3]> b
(2 3)
Break 2 [3]> c
(3)
  • totalは関数内にxを束縛する。
Break 2 [3]> (let ((x 0)) (defun total (y) (incf x y)))
TOTAL
Break 2 [3]> (total 10)
10
Break 2 [3]> (total 20)
30
Break 2 [3]> (total 20)
50
Break 2 [3]> (total 20)
70
  • クォートは危険。Rubyの場合は大体こんな感じ。
irb(main):002:0> @hoge = []
=> []
irb(main):004:0> def foo; @hoge end
=> nil
irb(main):005:0> foo << 'abc'
=> ["abc"]
irb(main):006:0> foo << 'abc'
=> ["abc", "abc"]
irb(main):007:0> foo << 'abc'
=> ["abc", "abc", "abc"]
  • 対応は大体こういう感じ。
Lisp : Ruby
'(a b c) : [:a, :b, :c]
(list 'a 'b 'c) : [:a, :b, :c].dup
  • setqとsetfの違い。(setq a 'abc) aはシンボルのみ。setfは関数も使える。例えば、
Break 3 [4]> (setq a '(10 20 30))
(10 20 30)
Break 3 [4]> (setf (car a) 1)
1
Break 3 [4]> a

4.1〜4.2節。

4.3節。

  • lastは最後のコンスセルを返す。最後の要素ではない。確かにふつう要素が欲しいよね。

その他

  • 言語開発合宿。中津川らしい。最寄りは坂下。
  • macはリンゴのUNICODEを表示できる。
  • フォートレス?って言語があるらしい。フォートランの置き換え?
  • HaskellC言語Rubyってのができないかとのこと。RubyからHaskell呼びたいらしい。

参照: http://cotocoto.jp/event/1749