タグ付けされた質問 「common-lisp」

9
Emacs Lispの学習を開始するにはどうすればよいですか?
バックグラウンド: 私はほとんどがviユーザーで、Emacsに移行しています。 基本を過ぎて、今度はR変換も行う予定のCおよびPythonでコードを書くために使用します。 私は大学院にいた20年以上前に(共通)LISPを書きましたが、今はひどく失望しています(こんにちは世界を書くことができますが、それだけです)。 質問: Emacs LISP環境を学び、Emacsのハッキングを始めるために、私の立場の人に何をお勧めしますか。 本、ブログ、読むべきリソース、やるべきエクササイズはありますか?

1
Common LispプログラムとEmacs Lispの間のプロキシとしてSLIMEを使用する方法は?
私は次のことを検討しています:Emacsと通信できるようにしたいCommon Lispで書かれたプログラムがあります。このプログラムは自然言語の解析を扱うため、Emacsでアクセスする必要があるのは、バッファーの内容と、Common Lispプログラムに送信するメッセージを作成するために必要な最小限の予備解析です。その後、Common Lispプログラムはメッセージを処理し、Emacs Lispプログラムに返信し、結果を表示します。 SLIMEは、主に既にほとんどのことを行っているため、これを実現するための優れたツールであることを理解していますが、ドキュメントを見ると、「開発者ドキュメント」ではなく「ユーザードキュメント」の種類であることがわかります。基本的に、Emacs Lisp側で通信を開始するために使用できる最小値を知りたいと思います(この場合、イントロスペクションやREPLは必要ありません。必要なのは、メッセージを送信することと、 SWANKで実行している私のプログラムから)。

1
「clが必要」または「cl-libが必要」
Common Lisp互換性を含めるために、私は両方を見ました (require 'cl) そして (require 'cl-lib) どちらが正しい?私が理解してcl-libいるように、2つのうちの後者ですが、それだけを使用しても安全ですか?

1
部分的なplistのcl-destructuring-bind?
これによりエラーが発生します (cl-destructuring-bind (&key a b) '(:a "foo" :b 13 :c "bar") (list a b)) :cキー/値はパターン一致で処理されないためです。 多くの場合、plistからキー/値のサブセットを抽出したいと思ってcl-destructuring-bindいますが、この制限のため適切ではありません。 cl-destructuring-bindEXPRで一致しないキーを単に無視する方法はありますか?公式の一般的なlispの動作がどうなっているのかわかりませんが、仕様のエラーですか? ダッシュライブラリは、を使用した同様のデストラチャをサポートしています-letが、各キーにシンボルを割り当てるためのボイラープレートが必要です。修正が提案されています ステファンの答えを考慮に入れると、これはうまくいきます: (defmacro plist-bind (args expr &rest body) "`destructuring-bind' without the boilerplate for plists." `(cl-destructuring-bind (&key ,@args &allow-other-keys) ,expr ,@body)) (plist-bind (a b) '(:a "foo" :b 13 :c "bar") (list a b)) => …

2
一部のEmacs Lispフォームのインデントを変更する
Common Lispのように、いくつかのEmacs Lispフォームをインデントしてほしい。たとえば、Emacs Lispでは、次のifようにインデントされます。 (if COND THEN ELSE) 私はそれをこのようにしたいのですが: (if COND THEN ELSE) 私はこれを行うことができます: (setq lisp-indent-function #'common-lisp-indent-function) しかし、これはすべてのフォームに影響を与えるためcl-letf、ユーザー定義マクロなどのEmacs Lispマクロのインデントが解除されます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.