Windows/C ++プログラマーの一般的なLISPのヒントを学ぶ
質問
私は経験豊富なC ++/。Net/Java Windows/Webプログラマーを学習しようとしています(一般的な)lisp。私が読んでいる 実用的な一般的なLISP そして使用します スライム.
私はLisp言語を十分に簡単に手に入れていますが、開発のメカニズムをグラッキングするのに苦労しています。私の問題の1つは、Emacsを扱うことです。私はそれについての経験がなく、一般的にそれがコマンドを見つけるのが難しい/把握することと混同していることがわかります。
具体的な質問:
- 私は REPL, 、しかし、私はそれを効果的に使用する方法を十分に理解していません。関数を変更する必要がある場合、Defunを再結合して変更を加える必要があります(退屈でエラーが発生しやすい)。どうすればこれをより良くすることができますか?
- REPLでコードを入力することから、実際にプログラムを作成するにはどうすればよいですか?私は、レビュー、編集、再コンパイルできるコードファイルがあるCモデルに慣れています。 Lispには(負荷関数を介して)似たようなものがあることは知っていますが、保存するファイルに定義してテストした関数をどのように取得しますか?現在のselect+コピー+ペーストよりも良い方法があることを願っています。
- エラーをどのようにデバッグしますか?他の言語と同じようにコードに足を踏み入れる能力はありますか?
- S-Expressionが有効である限り、入力するときにエラーが発生しません
(defun ...)
. 。それを使用しようとするまで、それが無効であることがわかりません。エラーをより早く取得する方法はありますか(つまり、コードをコンパイルします)? - 私にとってより馴染みのあるIDEがありますか、それとも言語で簡単に遊ぶことができますか?
- 学習に切り替える必要があります 図式 代わりは?
どんなヒントも大歓迎です!
解決
- 私はREPLを取得しますが、効果的に使用する方法を十分に理解しないでください。関数を変更する必要がある場合、Defunを再結合して変更を加える必要があります(退屈でエラーが発生しやすい)。どうすればこれをより良くすることができますか?
- どのようにして、REPLでコードを入力することから、実際にプログラムを取得するまでにはどうすればよいですか?私は、レビュー、編集、再コンパイルできるコードファイルがあるCモデルに慣れています。 Lispには(負荷関数を介して)似たようなものがあることは知っていますが、保存するファイルに定義してテストした関数をどのように取得しますか?現在のselect+コピー+ペーストよりも良い方法があることを願っています。
スライムをロードします。あなたにコードを入力します .lisp
ファイル、そして実行します slime-eval-buffer
すべてのコードをLISPにロードします。次に、特定の機能のために、CEでハッキングしているため、CJを実行して実行中のLISPで再定義します。
- エラーをどのようにデバッグしますか?他の言語と同じようにコードに足を踏み入れる能力はありますか?
はい。 (trace 'my-function
) - またはその上のいくつかのバリアント - そしていつ my-function
呼ばれ、デバッガーに分かれます。
- S-Expressionが有効である限り、(Defun ...)を入力するとエラーが発生しません。それを使用しようとするまで、それが無効であることがわかりません。エラーをより早く取得する方法はありますか(つまり、コードをコンパイルします)?
ある程度、それは動的言語の特徴です(Python、Perl、Ruby、Lispなど)。試す SBCL より良いエラーチェックのため。
- 私にとってより馴染みのあるもの、または私が言語で簡単に遊ぶことを許可するいくつかのIDEがありますか?
emacsはです LISPの無料IDE。アレグロには無料版があります。私はそれを試したことがありません。
- 代わりに学習スキームに切り替える必要がありますか?
いや、スキームは実用的な言語ではありません。
他のヒント
私は経験豊富なC ++/。Net/Java Windows/Webプログラマーを学習しようとしています(共通)LISP。私は実用的な一般的なLISPを読んで、スライムを使用しています。
使用することもできます lispworksパーソナルエディション LISPを学習するため。いくつかの制限があり、完全な製品は市販されていますが、使いやすいです。
私はREPLを取得しますが、それを効果的に使用する方法を十分に理解しないでください。関数を変更する必要がある場合、Defunを再結合して変更を加える必要があります(退屈でエラーが発生しやすい)。どうすればこれをより良くすることができますか?
REPLには歴史があります。キーボードコマンドを使用すると、以前の入力を取り戻して変更できます。それ以外は、LISPファイルを編集し、そこからコードをコンパイルします。 LISPでは、個々の式と定義をコンパイル/評価できます。スライムのような典型的なIDES、 lispworks また アレグロCl 通常のLISPテキストWindowsからコードも実行できます。さらに、REPLAで式を実行することに加えて(リスナー)。
REPLでコードを入力することから、実際にプログラムを作成するにはどうすればよいですか?私は、レビュー、編集、再コンパイルできるコードファイルがあるCモデルに慣れています。 Lispには(負荷関数を介して)似たようなものがあることは知っていますが、保存するファイルに定義してテストした関数をどのように取得しますか?現在のselect+コピー+ペーストよりも良い方法があることを願っています。
コピーして1つのことを貼り付けます。ただし、正しい方法は、エディターウィンドウのテキストファイルから作業することです。式、エディターバッファー、または関連するファイルをコンパイル/ロードできます。
エラーをどのようにデバッグしますか?他の言語と同じようにコードに足を踏み入れる能力はありますか?
ステップ、トレース、および関連を参照してください。 Slime、Lispworks、およびAllegro CLには、多くの追加機能があります。
S-Expressionが有効である限り、(Defun ...)を入力するとエラーが発生しません。それを使用しようとするまで、それが無効であることがわかりません。エラーをより早く取得する方法はありますか(つまり、コードをコンパイルします)?
多くの場合、コンパイラを使用します。コンパイラはさまざまなエラーを見つけ、何かが珍しい場合にも注意します(たとえば、関数が存在しないか、変数が定義されていません)。
- 私にとってより馴染みのあるもの、または私が言語で簡単に遊ぶことを許可するいくつかのIDEがありますか?
Lispworks、Allegro CLはWindowsの下で最高です。のような選択肢がいくつかあります コーマンリスプ (私はそれが今維持されていることを知りません)またはUFASOFT LISPさえさえ。
代わりに学習スキームに切り替える必要がありますか?
あまり。
スライムを実際に使用しているようには聞こえません。 (「Defunを再タイプする必要がある」、「コードファイルがあるCモデル」))
いくつかのスライムスクリーンキャストを見ることをお勧めします(または、さらに良いことに、LISPプログラマーが1つの便利な場合は数分間Slimeを使用するのを見ることをお勧めします)。 Slime Webページにはカップルがあります.
drracket ideを本当に楽しんでいるように聞こえます。 ラケット 一般的なLISPよりもスキームに近いですが、EMACSスタイルの開発スタイルのスピードバンプなしで、つま先をLISPファミリーに浸すことができます。