[Common Lisp] 関数が定義されているか
シンボルに対応する関数が定義されているかは fboundp 関数で調べる。
CL-USER> (defun foo (x y) (+ x y)) FOO CL-USER> (fboundp 'foo) T CL-USER> (fboundp 'bar) NIL
シンボルに対応する関数が定義されているかは fboundp 関数で調べる。
CL-USER> (defun foo (x y) (+ x y)) FOO CL-USER> (fboundp 'foo) T CL-USER> (fboundp 'bar) NIL
intern は印字名に対応するシンボルを得る関数。
逆に、シンボルの印字名を得るには symbol-name 関数を用いる。
下の concat-symbol は「2つのシンボルの各印字名を連結した印字名をもつシンボル」を返す関数。
(defun concat-symbol (x y) (intern (concatenate 'string (symbol-name x) (symbol-name y)))) CL-USER> (concat-symbol 'x 'y) XY NIL
毎回忘れて再発明しそうになるが、Common Lisp にはリストの複製する関数 copy-tree がある。
CL-USER> (let ((lst '(a b c)))
(eq lst (copy-tree lst)))
NIL
Common Lisp ではコマンドライン引数を取得する方法は処理系依存らしい。
Steel Bank Common Lisp (SBCL) の場合は *posix-argv* に文字列のリストの形で代入されている。
Allegro Common Lisp (ACL) の場合は system パッケージの command-line-arguments 関数で取得できる。
『KMRCLを眺める(184) COMMAND-LINE-ARGUMENTS』
によると、(apropos ‘argv) として ‘argv で関数の説明文を検索すれば処理系毎の方法が見つかることが多いとのこと。
外伝、聖石と来たときはまた止まる予感がしてたのだけれど、意外と早く出たよう。前回の本編から、1年経ってない。すばらしい。さらに帯にて「まんが化決定」の告知。今度は小島 榊が描くのだろうか。
破妖の漫画化は今回初めてでなく、厦門潤 作画のものが4冊出ている。コバルト本誌で連載していて、当時幼かった自分も読んでいた。まだ読解力が不足していて、物語の筋は追えてもラスと闇主の関係とかやりとりとか、そういうものがよく分かっていなかったのだが、この漫画で二人の関係の壮絶さを知った気がする。今でもこのシリーズを追っているのはこの漫画によるところが大きいかもしれない。 『紫紺の糸』を漫画化した『深紫絃韻』が特に盛り上がっていて、壮絶な意地の張り合いから闇主が折れる?までがイイ。
内容は本編7割、番外編3割。番外編はチェリクの幼い頃の話。帯で怒濤の展開とあおっている割にはあまり進んでいるような気がしない。ラエスリールが目覚めたって言うのが大きいんだろうけど、ほとんどそれだけ。ただ、魅了眼の存在、第六の妖主の目論見が少し分かってきた。次はアーゼンターラと藍絲の戦闘がメインのよう。時期については「あまり時間を空けず、第七巻をお届けする予定です」とのこと。
![]() |
破妖の剣 6 鬱金の暁闇6 (コバルト文庫) 前田 珠子 小島 榊 by G-Tools |
mbox形式で保存されたメールを学習で用いるには、 sa-learn に –mbox オプションを指定する。
% sa-learn --mbox --spam smapfile Learned tokens from 228 message(s) (228 message(s) examined)
Subversionで、HTTPプロトコルを用いてプロキシ経由でチェックアウトしたい。
What if I’m behind a proxy? – Subversion FAQ
によると、.subversion/servers を編集すればよいよう。
.subversion/servers の先頭に設定の説明があって、
### http-proxy-host Proxy host for HTTP connection ### http-proxy-port Port number of proxy host service ### http-proxy-username Username for auth to proxy service ### http-proxy-password Password for auth to proxy service ### http-proxy-exceptions List of sites that do not use proxy
ということらしい。
グループというのがあって、接続するサーバごとに設定が変えられるよう。
今回は、サーバ別に設定する必要はないので、global にプロキシの設定を追加した。
#.subversion/servers [global] # http-proxy-exceptions = *.exception.com, www.internal-site.org http-proxy-host = proxy.mynetwork.com http-proxy-port = proxy_port_num # http-proxy-username = defaultusername # http-proxy-password = defaultpassword ...
のように、http-proxy-host、http-proxy-port の行を復帰してプロキシのホスト名、ポート番号を書き込むと、プロキシ経由でチェックアウトするようになった。
ports から目的の port を探すには ports-mgmt/psearch が便利。
% psearch [options] PATTERN [PATTERN...]
とすることで、正規表現 PATTERN で ports 内を検索し、結果をリストアップしてくれる。
デフォルトでは port の名前(name)と短縮説明(short description)を検索するが、-s オプションを付けることで、詳細な説明(long description)内も検索するようになる。
-c オプションでカテゴリを指定。-n オプションでバージョンも含む、その port の正式名称を出力する。
C言語のプリプロセッサにおいて、引数付きマクロの引数を文字列化したいときがある。
たとえば、
int variable = 1; DEBUG_PRINT(variable);
とすると、
printf("%s is %d", "variable", 1);
のように置換されるマクロを定義したい場合。
#define DEBUG_PRINT(x) printf("%s is %d", "x", 1)
としても、
printf("%s is %d", "x", 1);
と出力されてしまい、望む結果が得られない。
このようなときは、引数の文字列化機能を使用する。
引数名の先頭に`#’をつけることで、引数の文字列定数表現を得ることができる。
上の例の場合は次のようにする。
#define DEBUG_PRINT(x) printf("%s is %d", #x, x)
ports から pam_ldap や nss_ldap を入れた場合、openldap-client が自動で入る。
pam_ldap 用の ldap.conf.dist が/usr/local/etc にできるので、これを /usr/local/etc/ldap.conf にコピーして設定したが、ldapsearch などに反映されず、嵌った。
man ldap.conf によると、openldap-client の見る ldap.conf の場所は /usr/local/etc/openldap/ldap.conf だった。
要注意。
最近のコメント