私はclispを使用していますが、使用できるnthcdrの設定可能なバージョンのライブラリがあるかどうか疑問です。設定可能なnthcdr実装が存在しますか?
7
A
答えて
5
あなたはとその周りにハックすることができます:nthcdrは、定義のsetfを持っていない理由を私は知らない
;; !!warning!! only an example, lots of nasty edge cases
(defsetf nthcdr (n lst) (new-val)
`(setf (cdr (nthcdr (1- ,n) ,lst)) ,new-val))
:
(let ((lst (list 1 2 3 4))
(n 2))
(setf (cdr (nthcdr (1- n) lst)) '(5 6 7))
l)
> (1 2 5 6 7)
それとものためのあなた自身のsetfを定義します。 Alexandriaでもsetfは最後には定義されていますが、nthcdrでは定義されていないようです。
PS。私はあなたのコードで悪い匂いとしてnthcdrをsetfしたいと思う扱うだろう。
1
(defsetf my-nthcdr (n list) (store)
(let ((tmp (gensym)))
`(let ((,tmp (nthcdr (1- ,n) ,list)))
(rplacd ,tmp ,store)
(cdr ,tmp))))
動作しませんnはいえ0でLISTは、シンボルであるとき、あなたはそれを動作させることができ、Nは、マクロ展開時にゼロのどちらかであるが、Nが数値であるならば、それだけで動作するかどうかのチェック、または展開されたコードのチェックを含む。
関連する問題
- 1. 観察可能なLINQが存在しますか?
- 2. エラーメッセージ - テスト実行のビルドディレクトリが存在しないか、MTMでアクセス許可が必要です - オートメーション設定
- 3. NSNotificationCenterが存在しない場合、どのように実装しますか?
- 4. リフレッシュ可能なGroovyクラスローダは実装していますか?
- 5. Qt実行中エラー実行可能ファイルが存在しません
- 6. iPhoneプロジェクト「起動可能な実行可能ファイルがパスに存在しません」
- 7. 可能System.String実装
- 8. java.lang.IllegalStateException:ドライバが実行可能ファイルが存在しません - Selenium Webdriver
- 9. 実行時エラー-f1.exeが存在しないか、実行可能ファイルではありません
- 10. C++のサーキュラーリストの標準実装は存在しますか?
- 11. オープン・エンドのインターバル実装はJava用に存在しますか?
- 12. 非再帰的なat_c実装が可能ですか?
- 13. 可能な限り変数を「ローカル」として定義すると実装が高速になりますか?
- 14. MtouchSdkVersionの設定は、実行可能なiOSのバージョンに影響しますか?
- 15. アドレス指定可能なFIFOキューを実装する方法は?
- 16. IEquatable を変更可能な型で実装しています
- 17. 一意のオブジェクトのキャンセル可能なスレッドマネージャを実装します
- 18. ダーツでシリアライズ可能なビルドジェネレータを実装します
- 19. 可能なフルファイルパスを指定してファイルまたは親ディレクトリが存在するかどうかをチェック
- 20. このバックグラウンドスレッドキューは実行可能な実装ですか?
- 21. Springのjunitテストテンプレートが存在しない可能性があります
- 22. デフォルトの設定可能なテンプレートがエラーを返します
- 23. yumモジュールは不可能だがyum.pyは存在しない
- 24. チェック可能な実装のFloatingActionButton
- 25. カテゴリ実装可能な問題
- 26. Moqの連鎖可能な実装
- 27. クリック可能なLabelFieldの実装方法。
- 28. 利用可能なORBアルゴリズム実装は?
- 29. Selenium WebDriver 2.53 - Firefoxの実行可能パスを設定します。
- 30. グローバル設定を保存し、PHPの管理ページから設定可能
なぜそれは悪臭ですか?特に、setfable nthcdrが定義されていない理由がないことを暗示しているとき。 – Paralife
私はそれが欲しいの理由は、私はidp要素の各ノードを注入したいと同時に、各ノードをハッシュテーブルに保存しながら、sexpツリーを横断したいということです。したがって、装飾が行われていない場合、ハッシュテーブルの値は装飾されたサブノードを参照しません。 – Paralife
一般的に、Common Lispでは、リテラルデータを変更すると何が起こるかは定義されていません。 –