[Anthy-dev 472] Re: uimのキーバインド定義を簡単に

Back to archive index

Kouhei Sutou kou****@cozmi*****
2004年 1月 30日 (金) 01:36:11 JST


須藤です.

In <20040****@mbox0*****>
  "[Anthy-dev 471] Re: uimのキーバインド定義を簡単に" on Fri, 30 Jan 2004 00:43:27 +0900,
  YamaKen <yamak****@bp*****> wrote:
> ご指摘ありがとうございます。Scheme(というかlisp系全般)は触りはじ
> めたばかりなので色々教えて頂けると助かります。

いえ,私も初心者なので...

> 頂いたパッチのようなコードも一度書いてみたんですが、私の趣味で
> 「コード片には実体を表す名前を付ける」というルールに従って一度
> key-strsに収めてから処理していました。

であれば

  ;; 簡易list?(循環リスト未対応)
  (define (list? x)
    (or (null? x)
	(and (pair? x)
	     (list? (cdr x)))))

  (let* ((key-strs (if (not (list? key-strs))
		       (list key-strs)
		       key-strs))
	 (predicates (mapcar make-single-key-predicate key-strs)))
    ...)

という方が*私の*好みです.
# (define list?
#   (lambda ...))
# ではないのも.

> まだよく分かっていないので教えて欲しいのですが、set!がまずいとい
> うのはこのコードでの使い方がまずいのか、それともそもそもコーディ
> ングスタイルとして良くないのかどちらでしょうか。ヒントなり頂けた
> らsiodでの実装の確認がてらにちょっと勉強してみようと思います。

後者です.関数型の言語では代入はあまり推奨されていないような
気がします.
# Schemeなんて関数型じゃないという話を聞いたこともありますが.

> す。list?もmapもcaseもcharも無いしeqv?はstringを見てくれないしで

eqv?はもともとstringは扱っていなかったような...
stringを同値判定するならeqv?ではなくてequal?を使うとよいので
はないでしょうか?

--
須藤 功平
kou****@cozmi*****



Anthy-dev メーリングリストの案内
Back to archive index