問題タブ [setf]

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.

0 投票する
3 に答える
279 参照

common-lisp - setf place で関数を実行する方法

いくつかの記号と値を含むリストがあります。目標は、シンボルが list によって提供されるアクセサでクラス スロットを設定することです。

私はマクロを介して試しました:

to-callリストではなくシンボルであるため、これも失敗します。

  • evalto-callは字句変数であるため機能しません。
  • letリストを与えるためにマクロを上書きすることはできません。
  • with-slotsandを試してみましwith-accessorsたが、それらもマクロであるため、問題は同じままです。
  • 他のマクロを宣言するマクロや、シンボルマクロレットも検討しました。

リスト内のシンボルに対応するアクセサを介してスロットを設定するにはどうすればよいですか?

ありがとうございました。

0 投票する
1 に答える
442 参照

common-lisp - (defun (setf …)) defsetf と define-setf-expander の典型的なユースケースは何ですか

setfCommon Lisp で開発する場合、新しいフォームを定義する 3 つの可能性があります。

  • 名前が 2 つのシンボルのリストである関数を定義できます。最初のシンボルはsetfです(defun (setf some-observable) (…))

  • の短縮形を使用できますdefsetf

  • の長い形式を使用できますdefsetf

  • を使用できますdefine-setf-expander

これらの可能性のそれぞれについて、何が適切な、または意図されたユースケースであるかはわかりません。

この質問への回答は、最も一般的なソリューションを示唆し、他のソリューションが優れている状況を概説する可能性があります。

0 投票する
1 に答える
149 参照

common-lisp - common lisp で multf 関数を書く方法

incf を使用して値を追加するのと同様に、特定の係数を掛けてプロパティ リスト内のプロパティ値を変更する方法を探しています。

incf を使用すると、次のように言えます。

マクロを使用すると、次の方法で結果を取得できますが、これは getf を 2 回使用します。

getf を 1 回だけ使用して同じ結果を得るには、どうすればよいでしょうか?

この機能を備えたパッケージがあるかもしれませんが、ネットで見つけることができませんでした。どんな助けでも大歓迎です!これは宿題ではありません。コードを最適化しようとしているだけで、言語をよりよく理解したいと思っています。setf-expanders と compiler-macros について読みましたが、それらがここに適用されるかどうか、およびそれらを使用する方法がわかりません。

0 投票する
1 に答える
113 参照

set - setf とは何ですか? Dr.Racket で有効な関数ですか?

式のエイリアスを定義する必要がある課題があります。ガイドの 1 つで、setf またはリストのリストを使用してそれらを定義するように指示されています。より具体的には、エイリアス ADD/SUCC/PRED/etc にラムダ計算値を割り当てる必要があります。例: ---> (ADD := (λ mnf x. nf (mfx))) <----.

これにより、特定の操作でそれらをエイリアスに置き換えた後、それらを操作できます。明確な説明が見つからず、setfの使用方法がわからないので、ヒントを教えていただければ本当に助かります。

これまでのところ、値を変更するために条件を使用しました。置換する必要がある単語と等しい記号がある場合は、それを行いますが、効率的ではないようです。