2012-02-01から1ヶ月間の記事一覧
あちこちに散乱しているような情報だが。自分の環境で ftp でデータコピーをしようと思ったが、553 Could not create file で失敗する。とりあえず、疑わしい以下の点を確認。 ログイン時のユーザーの権限に問題はないか SELinux のせいじゃないか ログイン…
keyword を intern する - Shammerismでは、キーワード引数を文字列変数から intern するにはどうすればいいかをやった。普通に : を追加して intern すると、頭にバックスラッシュがついてしまう。この対策は、intern の実行時に :keyword を追加すればよか…
Keyword 引数を intern で返そうとすると、こうやるのかなと思ったが ? (defparameter test "test") TEST ? (intern (concatenate 'string ":" (symbol-name 'test))) \:TEST NIL ? となってしまい、頭にバックスラッシュがついてしまう。 どうにかこれがつ…
以下の記事とかでカプセル化を色々やってきたけれども、 Package を使って private 引数を擬似的に実現する - Shammerism unintern でカプセル化を実現 - Shammerism カプセル化された class を定義 - Shammerism もっとうまい書き方はないか、ということで…
unintern でカプセル化を実現 - Shammerismで、package を使って global 変数への書き込みや参照にアクセサが必要なようにしてみた。ただ、package でできたのだから class でもできないか、と思いちょっとやってみた。 ? (defclass foo () ((x))) #<STANDARD-CLASS FOO> ? (defm</standard-class>…
Package を使って private 引数を擬似的に実現する - Shammerismで完全なカプセル化は実現できない、と書いたが、方法が見つかった。setter や getter のみでアクセスできる。 ? (defpackage "AAA") #<Package "AAA"> ? (in-package aaa) #<Package "AAA"> ? (defparameter *param* "AAA pa</package></package>…
use-package を使う - Shammerismでやった、use-package の存在を知って思ったのだが、defpackage の :use のブロックは、ここで指定した package のプレフィックスを不要にするというものではなく、シンボルをインポートするというだけのものではないだろう…
:export も大文字がよさそう - Shammerismでできなかった、プレフィックスなしで別のパッケージで作成した関数を呼び出すには、use-package を使うことでできそうだ。 ? (defpackage aaa) #<Package "AAA"> ? (in-package aaa) #<Package "AAA"> ? (defun hello () (format t "Hello~%")) H</package></package>…
Package 名は大文字がよさそう、というのはPackage 名は大文字がよさそう - Shammerismでわかった。なので、:export も合わせてちょっとテスト。 ? (defpackage "MY-PACKAGE" (:export "HELLO")) #<Package "MY-PACKAGE"> ? (in-package my-package) #<Package "MY-PACKAGE"> ? (defun hello () (format t</package></package>…
Package の定義はややこしい。以下のようにやってみたが、 Launch ClozureCL (defpackage "my-package" (:use common-lisp-user) (:export "hello")) (in-package my-package) (defun hello () (format t "Hello!~%")) 以下のメッセージが。。。 > Error: Un…
Java に慣れてしまっていると、private でない変数があるというのがどうもなじめない。情報を完全にカプセル化したいという気持ちを未だに捨てることができない。Lisp でもどうにかしてこのカプセル化のようなことはできないのか、と思うが、完全には無理、…