Shammer's Philosophy

My private adversaria

2012-02-01から1ヶ月間の記事一覧

vsftpd で 553 Could not create file が出るが・・・

あちこちに散乱しているような情報だが。自分の環境で ftp でデータコピーをしようと思ったが、553 Could not create file で失敗する。とりあえず、疑わしい以下の点を確認。 ログイン時のユーザーの権限に問題はないか SELinux のせいじゃないか ログイン…

外部パッケージのシンボルを intern したい

keyword を intern する - Shammerismでは、キーワード引数を文字列変数から intern するにはどうすればいいかをやった。普通に : を追加して intern すると、頭にバックスラッシュがついてしまう。この対策は、intern の実行時に :keyword を追加すればよか…

keyword を intern する

Keyword 引数を intern で返そうとすると、こうやるのかなと思ったが ? (defparameter test "test") TEST ? (intern (concatenate 'string ":" (symbol-name 'test))) \:TEST NIL ? となってしまい、頭にバックスラッシュがついてしまう。 どうにかこれがつ…

let による情報のカプセル化

以下の記事とかでカプセル化を色々やってきたけれども、 Package を使って private 引数を擬似的に実現する - Shammerism unintern でカプセル化を実現 - Shammerism カプセル化された class を定義 - Shammerism もっとうまい書き方はないか、ということで…

カプセル化された class を定義

unintern でカプセル化を実現 - Shammerismで、package を使って global 変数への書き込みや参照にアクセサが必要なようにしてみた。ただ、package でできたのだから class でもできないか、と思いちょっとやってみた。 ? (defclass foo () ((x))) #<STANDARD-CLASS FOO> ? (defm</standard-class>…

unintern でカプセル化を実現

Package を使って private 引数を擬似的に実現する - Shammerismで完全なカプセル化は実現できない、と書いたが、方法が見つかった。setter や getter のみでアクセスできる。 ? (defpackage "AAA") #<Package "AAA"> ? (in-package aaa) #<Package "AAA"> ? (defparameter *param* "AAA pa</package></package>…

defpackage の :use の意味

use-package を使う - Shammerismでやった、use-package の存在を知って思ったのだが、defpackage の :use のブロックは、ここで指定した package のプレフィックスを不要にするというものではなく、シンボルをインポートするというだけのものではないだろう…

use-package を使う

:export も大文字がよさそう - Shammerismでできなかった、プレフィックスなしで別のパッケージで作成した関数を呼び出すには、use-package を使うことでできそうだ。 ? (defpackage aaa) #<Package "AAA"> ? (in-package aaa) #<Package "AAA"> ? (defun hello () (format t "Hello~%")) H</package></package>…

:export も大文字がよさそう

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 名は大文字がよさそう

Package の定義はややこしい。以下のようにやってみたが、 Launch ClozureCL (defpackage "my-package" (:use common-lisp-user) (:export "hello")) (in-package my-package) (defun hello () (format t "Hello!~%")) 以下のメッセージが。。。 > Error: Un…

Package を使って private 引数を擬似的に実現する

Java に慣れてしまっていると、private でない変数があるというのがどうもなじめない。情報を完全にカプセル化したいという気持ちを未だに捨てることができない。Lisp でもどうにかしてこのカプセル化のようなことはできないのか、と思うが、完全には無理、…