[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bep] learning lisp: let
- To: bep@argv.org
- Subject: Re: [bep] learning lisp: let
- From: Reiko TAKAHASHI <HFC03614@nifty.ne.jp> (高橋玲子)
- Date: Tue, 05 Jun 2001 07:29:28 +0900
- Delivered-To: mailing list bep@argv.org
- Mailing-List: contact bep-help@argv.org; run by ezmlm
高橋玲子です。
今日も暑くなりそう……?
Reply Koichi INOUE <inoue@...>'s message:
} 文字列は文字をいくつかならべて、ちょうどいい大きさの箱に入れたと考えてく
} ださい。
} 「?a」と書くと「a」という1文字を表すのに対して、
} 「"a"」ではaという1文字が入ったちょうどいい大きさの箱を表します。
} 「"ab」では?a ?b を順に入れた箱です。
} このあいだ坂本さんの話題ででてきたconcatなどの関数では引数として文字列を
} たくさん与えてつなげることができますが、文字を与えることはできません。
} 文字から文字列への変換は、たとえば
} (char-to-string ?a)
} とすると1文字が入った長さ1の文字列"a"になるのでこれを使います。
ええと、難しいです……。
「文字」と「変数」も、また違うものなんですよね??
たとえば、「文字列」は、ふつうに書く言葉の一部みたいに、ほんとうに「文字
列」でしかない、だから、つなげたり切ったり(?)できる(でいいのかな??)と
いう感じ……?
でも、なぜ「箱」があるのでしょう?
それから、もっとわからないのは「文字」です。
変数や関数になる文字(シンボル?)が必要なのはわかる気がするのですが、「
文字」はどういうときに必要なのでしょう?
} "Messages"バッファに一応エラーの表示が残ります。
} 後、*scratch*バッファで遊ぶ前に
} (setq debug-on-error t)
} を評価してからやるとエラーになったときに例のバックトレースバッファが開く
} のでなんとなく分かるかも知れません。
本筋とは関係ないのですが、Lispを知らなかったら「実行」と言いたくなりそ
うな作業を「評価」というんですね?(ほんとうは値を返してもらうのが「評価」
なのだけれど、それイコール副作用も起こる実行になるみたいな)。
(setq debug-on-error t)すると、debug-on-errorにt(を評価した値だけどやっ
ぱりt)が入るんですね?
} # ただし、このときBEPを使っているとad-何とかというのによく出くわすかも知
} # れません。これはBEP自身がしゃべるために使っているadvice機能によるもの
} # なので、多少エラーメッセージが複雑になります。
次回lisp-interaction-modeで遊んだときに見てみます。
} printという関数の説明
} C-h f print RET
} で見ると、
} output the printed representation of OBJECT, with newlines around it.
} となっているので、printがそういうものなのでしょう。
} OBJECTはprintに与える引数のことを指しています。
あっ、すみません。ちゃんと↑みたいにやってprintの意味を見てみればよかっ
たんですね。次回から。
} (let ((a 1 ) (b 1)) ...)
} というところで、1は実は「評価」された上でaやbに代入されます。ここに変数
} を入れるということは、その変数の評価結果が入るということになります。関数
} だったときも同じです。
} だから、
} (setq x 10)
} した上で
} (let ((a x)) a)
} とすると10が結果になります。
} xをクオートした場合はxというシンボルになるので、
} (let ((a 'x)) a)
} の結果はxになります。
わかりました。
letの中で指定したものは中でだけ有効になるけど、
その前に(?)指定されたものはletの中でも有効なんですね。
} > これは、勝手に、aにnilという3文字が入る、ということですね(なにも指定
} > しないのに、3文字も入るだなんて、なんだかずるい感じです(^_^;))。
}
} 3文字というか、nilというシンボル(普通は「偽(ギと読む)」を表します)が
} 入ります。nilは前にも話がでましたが何回評価してもnilというシンボル自分自
} 身です。
今ごろそんなことを!?って言われてしまいそうですが、2文字以上でもシン
ボルになれるんですね?
1文字シンボルの連続と、どうやって区別されるんですか?(スペースを入れる
のかな……?)
} # 自分でチェックしながら書いていると時間がかかりますね。N高橋さんにおま
} # かせするべきなのかも。
時間をかけて丁寧に書いてくださってありがとうございます。
でも、私の基準で見ると、ものすごく返信が早かった気が……(^.^)。
**-***-***-***-***-***-***-***-***-***-***-***-**
Reiko TAKAHASHI (高橋玲子)
E-mail: HFC03614@...
ICQ UIN: 85924121 (Twinkle)
**-***-***-***-***-***-***-***-***-***-***-***-**