2

気分に応じて、Lisp-1 と Lisp-2 の間を行ったり来たりするようです。残念ながら、明らかな名前空間の違いを超えて、これにより、あらゆる種類の面白い関数名/その他の問題が発生します。適切な例として、今夜私がやろうとしたコードを書き込もうとして (map #'function listvar)、もちろん、CL ではまったく動作しません。地図ではなく、地図車が欲しかったことを思い出すのに少し時間がかかりました。もちろん、slime/emacs がマップ IS が何かとして定義されていることを示している場合は役に立ちませんが、明らかに同じ機能はまったくありません。

では、どちらかを選択してそれに固執することを除いて、これを最小限に抑える方法についての指針はありますか?

4

4 に答える 4

5

マップはマップカーよりも一般的です。たとえば、マップカーを使用する代わりに次のようにすることができます。

(map 'list #'function listvar)

スキームとCLを頭の中で分離しておくにはどうすればよいですか?両方の言語を十分に理解していれば、どちらが機能し、もう一方は機能しないかを知っていると思います。構文の類似性にもかかわらず、それらはスタイルの点でまったく異なる言語です。

于 2008-08-28T03:24:20.437 に答える
2

まあ、私はあなたが両方の言語で十分な経験を積むとすぐにこれは問題にならないだろうと思います(イタリア語やスペイン語のような同様の自然言語で)。通常、ある言語でプログラミングし、たまに他の言語に切り替える場合は、残念ながら、SchemeでCommon Lispを作成するか、その逆を行う運命にあります;)

役立つことの1つは、他の色などで構文の強調表示を使用して、両方の言語に明確な視覚環境を持たせることです。そうすれば、少なくとも、CommonLispモードかSchemeモードかを常に知ることができます。

于 2008-09-21T11:57:29.263 に答える
0

両方の言語を正しく維持する最も簡単な方法は、Common Lisp で考えてコードを書くことです。Common Lisp コードは比較的簡単に Scheme コードに変換できます。ただし、Scheme から Common Lisp に移行すると、いくつかの問題が発生する可能性があります。かつて、Scheme で letrec を使用して変数と関数の両方を格納し、それを変数と関数の名前空間ごとに個別の CL 関数に分割しなければならなかったことを覚えています。

実際には、私は CL コードを書く習慣を持っていないので、その時間がさらに苦痛になります。

于 2008-09-02T04:52:04.930 に答える
0

構文の違いがあることは確かに認識していますが、それらを自動的に使用できるほど流暢ではありませんが、コードは現在、はるかに類似しているように見えます ;-)。

そして、私はあなたの答えが当てはまると感じていましたが、いつでも近道を期待できます <_<.

于 2008-08-28T13:36:56.783 に答える