skip to main
|
skip to sidebar
計算機とその周辺: What I Talk About When I Talk About Computers
ラベル
リスト遊び
の投稿を表示しています。
すべての投稿を表示
ラベル
リスト遊び
の投稿を表示しています。
すべての投稿を表示
2008年12月30日火曜日
【L遊び】8 セル遊び
気を取り直して、最終章。
CLのrplaca,rplacdはsetcar,setcdrのようだ。
そっか、nconcとかのnはnuke(核(兵器))のことなんだ。
う、するとdelqのqは何?
CLと大きな違いは感じない。
お、リスト遊びが終わった。またしばらくしたら再帰したい。
さて、Emacs方面、次は何をやろうかなぁ。
2008年12月29日月曜日
【L遊び】7 繰り返し
代入と関連付けてletを導入するのは違和感があるなぁ。
むぅ。sumの例を繰り返しで書くなら、whileじゃなくてdo系を使うべき。elispにdoが無いのかなぁ。
だめだ、このwhileとsetqの群れが気持悪くて耐えられない。「7.4 catchとthrow」まで飛ぶ。
この章、精神衛生上よろしくない。
えっと、再帰には再帰が適した話題があり、whileもしかり、doもしかり、loopもしかりだと思う。
効率の問題で再帰を繰り返しで書き直すというのはもちろんあるのだが、それは末尾再帰だとか他のことをも含めてやるべきだろう。
【L遊び】6 より柔らかに
補助関数導入のメリットの一つに、補助関数にてデータ構造を隠蔽することによって、主関数への変更無しにデータ構造の変更に対応できる、というような記述がある。これ、そんなに適用できるケースが多いかなぁ。主関数は制御のみで、データの取扱い(アルゴリズム含む)が補助関数にいっちゃってるなら、そうなんだけど。ああ、ただあるデータをリストで実装するかベクタで実装するかというような、探求的にやっていく場合はこの隠蔽は有効だな。OOの隠蔽と一緒かな。
この章を読み終わって、何か違和感があるなぁ、と思ったら、関数の抽象化の話題なのにlambdaがでてこないからだ。なっとく。
こつこつ。
2008年12月28日日曜日
【L遊び】5 より深く
入れ子になったリストの再帰をする関数たち。
この定石というの、今おもうとHtDPのレシピのはしりだったんだなぁ。
あと、The Little Schemerの雰囲気を感じるなぁ。
再帰パズルは楽しい。
なかぱっぱ? CLとの有意な差は感じない。
しかし、一章以上は複数投稿にばらす、というのをルールにしているのだけれど、章の規模が小さい本だとどうも散弾銃的になってしまうのがいやな感じ。無意味に投稿数が増えていく。RSSを購読されている方がいるとしたら、迷惑なんじゃないだろうか。ちょっと考えていきたい。
こつこつ。
【L遊び】4 再帰
自然数やリストの再帰の基本例題
CLとの違いは感じない。
はじめちょろちょろ。
【L遊び】3 関数遊び
defun、cond、eq、変数、=、/=、<、<=、>、>=、and、orなど。
だいたいCLといっしょ。しかし変数って難しい概念なんだよなぁ、、、
こつこつ。
【L遊び】2 アトムとセル
おお! elispではシンボルで大文字と小文字を区別するんだ。
シンボルは、変数と関数とで別空間。ここはCLといっしょ。
をを! なんというか、tとnilなのであって、TとNILは単なるシンボルなんだ。
nilは空リストであり()であり'()であり。CLといっしょ。
あとは、セル、cons、car、cdr、リスト、アトム、リストのリスト、ドット対、評価、quoteなど。
特殊形式(specia form)を、特殊関数とか関数などと呼ぶのはあまりよくないなぁ。。。
こつこつ。
【L遊び】1 落書き帳
PAIPでSchemeのコンパイラに入るにはちょっと頭が疲れている。だけどもうちょっと勉強したい、という気分。そこで三位一体のひとつElispの勉強をこの機会に始めようと思う。本は山本和彦さんの「
リスト遊び
」。昔一度勉強したことがあるので、二度目になるかなぁ。(山本さん自身は最近はHaskellに取り組まれている)
第一章 落書き帳
バッファ、ミニバッファ、バッファローカル変数、グローバル変数、スクラッチバッファ、Lisp Interaction mode、各種評価方法など。
山本さんの語り口は、なんとゆうか慈愛にあふれているなぁ。
前の投稿
ホーム
登録:
投稿 (Atom)
ラベル
acl
AIMA
AIMAメモ
Allegro Prolog
American Pronunciation and Accent
ANSI-CL
apue.2e
atom
Automake
bison
blogger
C PROGRAMMING: A Moder Approach
cl-bench
clbuild
CLドリル
CL入門
Common Lisp
Cによるアルゴリズム
Cリファレンスマニュアル
C言語
DDD
debian
DSL
eli
Elisp
ELp入門
emacs
emacs packaging
flex
FOL
Gauche
Gnome
GNU Autoconf/Automake/Libtool
GNU Autotools
GNU toolchain
GTD
http
IMAP
Java
JavaScript
Javaチュートリアル
JSON
Language Proof and Logic
Learn Prolog Now
libtool
Linkers and Loaders
Linux
Linux入門
Lisp Quote Backquote
Mac
make
maxima
Methods of Logic
MOP
MySQL
On Lisp
PAIP
paredit
Portable Environment
POSIX
Processing
Prolog
RDB
rdf
Ruby
rubylearning.com
saxon
sbcl
Scheme
Scheme Code button
Self Introduction
Semantics
shell
Shibuya.lisp
Smiley Hackathon
SQL
subversion
ubuntu
unicode
vCard
Why's
X
xemacs
xml
xml visual quickstart guide
xslt
yason
うんにゃら
かんにゃら
シプサ
データベース実践講義
パタヘネ
プログラミングGauche
プログラム検証論
ホーア論理
リスト遊び
ルイス・キャロルの意味論
ロゼッタワールド
英語
関数プログラミング
基礎トレ
逆引きCommon Lisp
雑
実践C
実践CL
集合
初めてのSQL
初級英語音声学
脱・日本語なまり
統計学
道具箱
日本語
入門Debianパッケージ
認知言語学
目標
例解UNIX
論理
自己紹介
aka
現在のレベル予測:高校二年生
C:入門者
CL:初心者
Linux:入門者
Emacs:初心者
英会話:入門者
数学:入門者
Scheme:入門者
Prolog : 入門者
RDB : 入門者
Java : 入門者
論理学:入門者
Autotools:入門者
詳細プロフィールを表示
ブログ アーカイブ
▼
2013
(29)
12月
(7)
11月
(8)
8月
(14)
►
2011
(14)
10月
(1)
5月
(4)
4月
(9)
►
2010
(23)
8月
(1)
7月
(9)
2月
(2)
1月
(11)
►
2009
(368)
12月
(13)
11月
(53)
10月
(1)
9月
(21)
8月
(71)
7月
(74)
6月
(20)
5月
(2)
4月
(1)
3月
(7)
2月
(34)
1月
(71)
►
2008
(382)
12月
(49)
11月
(46)
10月
(21)
9月
(51)
8月
(57)
7月
(127)
6月
(25)
5月
(6)