COMMON LISP JP > Archives > 2018/06/08

2018/06/08 00:02:13 UTCshiro
#
ソースをざっとgrepしてみる限りでは定義されてないですね。シンボル自体はinternされてるんですが、boundされてないんじゃないですか。jscl.jsのシンボルのインターンをどこから持ってきたのか謎ですが(プリプロセスしてるCL処理系のCLパッケージを読み出してるのかな?)
2018/06/08 00:18:41 UTChojo
#
ご回答ありがとうございますm(_ _)m。なるほど、jscl.CL.CONCATENATEに実態のようなものがあるように思えたので、自分の使い方に誤りがあって使えないものだと思い込んでましたが、シンボルだけ用意されてて実際は使えないということだったんですね!この辺りはやはりまだ実装中ということになるんでしょうか。となると、他にも使えない関数が色々あるかもしれませんね( ;-`д´-)。大人しくjscl::concatを使わせていただきます!ありがとうございます!!
2018/06/08 00:40:13 UTCshiro
#
compileなどもシンボルだけあって実装がないので、これからってことだと思います。clパッケージにシンボルがあっても、fboundpとかsymbol-functionで調べた方が良さそうです。
2018/06/08 00:53:15 UTChojo
#
なるほど!fboundp なんて便利な関数があったんですね!知らなかったです!これで使えるか使えないか調べるのは楽チンですね(∩´∀`∩)。また、internについてもよくわからなかったのですが調べたら「インターンというのは、読み取り器(reader)で読み込んだ名前を大文字に変換して、シンボル表の中に同じ名前のシンボルがないかを調べる。シンボルが見つかったら、それを返す。見つからなかったら、新しいシンボルを作成してシンボル表に追加する。これら一連の作業のこと」という解説が出てきまして、前もってreaderの話など教えていただいてましたので色々と頭の中で話が繋がってきています!以前話に出た「cl:compileはシンボルが定義されてるけど関数定義が無いっぽい? 内部的にはjscl::compile-toplevelが CL->JS をやってくれるとこまでは確認できたが〜」という話は、そういうことだったんですね!少しずつ理解が深まってきました٩( 'ω' )و