問題タブ [clos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
common-lisp - スーパークラス コンストラクターを使用しますか?
だから私はクラスを持っています
そしてコンストラクター
既存の を取り込み、追加のスロットが定義されたFOO
を生成する関数を定義する簡単な方法はありますか? つまり、すべてのスロットを次のようにリストする必要はありません。BAR
C
common-lisp - データ構造を保存/読み取るにはどうすればよいですか?
FOO
ファイルが指すデータ構造を書き込み、データ構造をシンボルにBAR
読み込んで、Common Lisp の新しいセッションを開始したい。FOO
BAR
*PRINT-READABLY*
で読み戻せるようにオブジェクトを印刷できるように見えますがREAD
、 を使用してオブジェクトの印刷方法を変更できます(defmethod print-object ...)
。オブジェクトは に受け入れられる方法で出力する必要があるため、オブジェクトREAD
を読み戻すためのメソッドをさらに定義する必要はありません。
しかし、データ構造が書き込まれ読み取られる順序に依存することなく、書き込まれた各データ構造を対応するシンボルに結び付ける方法はありますか?
lisp - Common Lisp Object System メソッドの実行順序
次の2つのクラスがあります。
そして、これの出力は次のとおりです。
私が理解しようとしているのは、これらのメソッドが「順序」に関してどのように実行されるかです。何が起こっているのか、その理由を理解できないようです。おそらくこれにはルールの優先順位がありますが、どこにあるのかわかりません。たとえば、"Hello!Can I help you"
この場合、なぜ発砲しないのでしょうか?
methods - Common Lisp の無名メソッド
汎用関数を変数として保存したい:
しかし、メソッドを追加するときはcall-next-method
、next-method-p
自分自身を定義する必要があります:
定義するメソッドを呼び出すにはどうすればよいcall-next-method
ですか? これを行う簡単な方法はありますか?
common-lisp - conses の print-object メソッドの再定義は、異なる CL 実装で異なる影響を与えます。
conses を標準のリスト表記ではなく、常にドット ペアとして出力しようとして、最小限の労力でメソッドを次のように再定義しましたprint-object
。
しかし、その効果は実装によって異なります。
Clozure CL と LispWorks Personal では、結果は私が期待していたものです:
一方、SBCL と AllegroCLexpress では、リストの表示方法に変更はありません。
したがって、これが言語の仕様のあいまいさによるものなのか、そのような動作が未指定として明示的に宣言されているのか、これが REPL とパッケージとの何らかの相互作用によるものなのか、それとも実装があるのかこの定義に関して正しいものと、正しくない他のものがあります。最後に、SLIME 内でこのような定義を行うと、SLIME 自体が完全に破壊されます。
誰かがそのような違いに光を当て、それが存在する場合、私の目的を達成するための問題の少ない別の方法を提案できますか?