2009-08-10 7 views

答えて

0

あるとは思いません。私はdefsetfが、(setf (car x) 5)のようなものをLispで行うことを可能にすると思います。つまり、関数の結果であると思われるものをl値として使用します。しかし、Schemeでは、同じタスクを達成するために、set-car!set-cdr!のような別々の関数を定義する必要があります。上記の例は(set-car! x 5)となります。

+0

これらの関数はCLでも必要です(たとえば、 'rplaca') - ' setf'はそれらに展開する構文です。 –

2

標準(RnRS)スキームに相当するものはありませんが、いくつかのScheme実装でサポートされているSRFI 17は、一般化された場所にセッターを定義することができます。

+2

srfi-17は、フォーム自体ではなくアクセサの実行時の値を使用することに注意してください。それは小さな違いですが、重要なことがあります(通常、少し遅く、少し柔軟性があることを意味します)。 –