問題タブ [lisp]
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.
macros - Common Lispの初心者:パッケージをその場で定義するためのマクロの質問
マクロに関してベストプラクティスが何であるかを理解するのにまだ苦労しています。その場でパッケージを定義するマクロを書き込もうとしています。
これは、次のような式でのみ正常に機能します。
しかし、このようなものでは惨めに失敗します:
また
私はほとんどの基本的なマクロがどのように機能するかを理解していますが、これを実装する方法は私を免れます。
emacs - Emacs 以外に、Lisp プログラミングに適したエディタはありますか?
emacs は使いにくいので、代替手段を探しています。カーソルを移動するための矢印キー、次の単語を選択するための CTRL+SHIFT+RightArrow など、使い慣れた通常のショートカットをすべてサポートするエディターを使用したいと思います。
基本的に、emacs を使用できるようにするためだけに、使い慣れたショートカットをすべて再学習する必要はありません。
適切なエディターを推奨できる人はいますか?
別のこと - Notepad++ は LISP 構文の色付けをサポートしていますが、emacs のような統合された LISP コンソールはありません。Notepad++ ウィンドウとコマンド ライン ウィンドウを並べて開き、プログラムを実行するときはいつでもコマンド ラインを使用するだけでよいでしょうか?
database - Common Lisp における関数の永続性
関数の永続性を可能にする、Elephant などの Common Lisp 用の永続化ソリューションはありますか? 現在、私のアプリは識別子をデータベースに保存し、後で関数テーブルを検索しますが、この方法では動的に作成された関数を保存できません。
programming-languages - クロージャーの副作用、それらはまだ純粋に機能していますか?
私は関数型プログラミングに比較的慣れていないので、「これが関数型のやり方なのか?」という疑問に多くのエネルギーを費やしています。明らかに、再帰と反復は非常に単純であり、再帰が機能的な方法であることは明らかです。しかし、クロージャを例にとってみましょう。私は Lisp を使用してクロージャーについて学び、クロージャーが関数と環境の組み合わせであることを理解しています (状態と動作によく似ています)。例えば:
ここに、x 変数の環境内で定義された関数 doubleX があります。この関数を他の関数に渡して呼び出しても、x 変数を参照できます。関数は、変数が定義されている環境の外で呼び出された場合でも、引き続きその変数を参照できます。私が見たクロージャーの例の多くは、このようなものです。setf を使用して字句変数の値を変更します。これは私を混乱させます:
1.) setf は悪だと思った。ほとんどの場合、それは副作用を引き起こし、明らかにそれらも悪であるためです.
2.) これは本当に「機能的」ですか? グローバルな状態を維持する方法のように思え、関数型言語はステートレスだと思っていました。
クロージャを理解していないだけかもしれません。誰かが私を助けることができますか?
lisp - Function names as strings in Lisp?
I have a big list of global variables that each have their own setup function. My goal is to go through this list, call each item's setup function, and generate some stats on the data loaded in the matching variable. However, what I'm trying now isn't working and I need help to make my program call the setup functions.
The global variables and their setup functions are case-sensitive since this came from XML and is necessary for uniqueness.
The data looks something like this:
and the setup functions look like this:
I've tried concatenating them together and turning the resulting string into a function, but this interferes with the namespace of the previously loaded setup function. Here's how I tried to implement that:
But using funcall
on this doesn't work. How can I get a callable function from this?
c++ - C /C++でインタプリタを実装するために必要な参照
私は、インタプリタを既存のアプリケーションに整数化するプロジェクトに執着していることに気づきました。解釈される言語は、アプリケーション固有の組み込みを備えたLispの派生語です。個々の「プログラム」は、アプリケーションでバッチスタイルで実行されます。
何年にもわたって、いくつかのコンパイラーといくつかのデータ言語トランスレーター/パーサーを作成してきたことに驚いていますが、実際にインタープリターを作成したことはありません。プロトタイプはかなり進んでおり、C++で構文ツリーウォーカーとして実装されています。私はおそらくプロトタイプを超えてアーキテクチャに影響を与えることができますが、実装言語(C ++)には影響を与えません。したがって、制約:
- 実装はC++で行われます
- 構文解析はおそらくyacc/bison文法で処理されます(現在は)
- NekoVMやLLVMのような完全なVM/インタプリタエコロジーの提案は、おそらくこのプロジェクトでは実用的ではありません。これがNIHのように聞こえても、自己完結型の方が優れています。
私が本当に探しているのは、通訳者の実装の基本に関する資料を読むことです。私はSOと、Lambda the Ultimateとして知られている別のサイトをブラウジングしましたが、それらはプログラミング言語理論をより重視しています。
私がこれまでに集めた一口のいくつか:
クリスチャンQueinnecによる小さな断片のLisp 。それを推奨する人は、「些細なインタプリタからより高度な技術に移行し、バイトコードと「SchemetoC」コンパイラの提示を終了する」と述べました。
NekoVM。上で述べたように、このプロジェクトをサポートするためにVMフレームワーク全体を組み込むことが許可されるとは思えません。
コンピュータプログラムの構造と解釈。もともと私はこれはやり過ぎかもしれないと提案しましたが、健全なチャンクを処理したので、@JBFに同意します。非常に有益で、心を広げます。
ポール・グレアムによるLispについて。私はこれを読みました、そしてそれはLispの原則への有益な紹介ですが、インタプリタの構築をすぐに始めるには十分ではありません。
オウムの実装。これは楽しい読み物のようです。それが私に基本を提供するかどうかはわかりません。
スクラッチからのスキーム。Peter Michauxは、Cで記述された迅速で汚いSchemeインタープリター(後のプロジェクトでブートストラップとして使用するため)からコンパイルされたSchemeコードまで、Schemeのさまざまな実装を攻撃しています。これまでのところ非常に興味深い。
言語実装パターン:独自のドメイン固有および一般的なプログラミング言語を作成します。これは、通訳言語の作成に関する書籍のコメントスレッドで推奨されています。この本には、通訳者の作成の練習に専念する2つの章が含まれているので、私はそれを私の読書キューに追加しています。
- 新しい(そしてまだ古い、すなわち1979年):PJブラウンによるインタラクティブなコンパイラーとインタープリターの作成。これは長い間印刷されていませんが、基本的なインタープリターの実装に関連するさまざまなタスクの概要を提供するのに興味深いものです。これについてはさまざまなレビューを見てきましたが、安いので(注文時に約3.50ドルで使用しています)、試してみます。
では、どうですか?新生児を手に取って、Lispのような言語のためにC / C ++でインタプリタを構築する方法を示す良い本はありますか?構文ツリーウォーカーまたはバイトコードインタープリターを好みますか?
@JBFに答えるには:
現在のプロトタイプはインタプリタであり、任意のコードファイルへのパスを受け入れてアプリケーション環境で実行しているので、私には理にかなっています。ビルトインは、メモリ内のデータ表現に影響を与えるために使用されます。
ひどく遅くてはいけません。現在のツリーウォーカーは許容できるようです。
言語はLispに基づいていますが、Lispではないため、標準への準拠は必要ありません。
- 上記のように、この問題を解決するために完全な外部VM/インタープリタープロジェクトを追加できる可能性はほとんどありません。
他のポスターにも、あなたの引用をチェックします。皆さんありがとう!
emacs - Lisp In A Box-なぜサーバーを起動するのですか?
関数型プログラミング全般に慣れるためにLISPに戻ることにしました(AIクラス以来使用していません)。そこで、Lisp In A Box(前のクラスで実際に使用したもの)をダウンロードしました。 CLISPとEmacs。
私がそれを実行すると、それは言います:
ポート1617で接続されています。このREPL、兄弟を連れて行ってください。
なに?そこで、Lisp In A BoxのWebページを詳しく調べて、次のことを見つけました。
SLIMEは、ネットワークソケットを介してCommonLisp実装とインターフェイスするEmacsの統合開発環境です。SLIMEに関する多くの情報は、CLikiのSLIMEノードにあります。SLIMEのマニュアルは、PDF形式でオンラインで入手できます。
私はSLIMEが何であるかをある程度理解しています(emacsのある種の拡張ですよね?)しかし、なぜ世界でテキストエディタが独自のサーバーを起動してそれに接続しているのですか?
.net - DSL には、TCL と Lisp のどちらが優れていますか?
DSL には、TCL と Lisp のどちらが優れていますか? Java(C#)-TCL バインディングと Lisp(Scheme) のバインディングについて何が言えますか? .Net 開発に適用できる DSL ツールはどれですか? (Microsoft DSL ツールを除く)
emacs - LispフォームをハイライトするEmacsモード
Lisp フォームを強調表示して背景色を変更し、現在のフォームがある色、外側のフォームが別の色、外側の外側のフォームが別の色になるようにする Emacs モードまたはパッケージは何ですか?
lisp - 文字列をスキームのコードに変換する
string->input-port
文字列を PLT スキーム (メソッドを含まない) の対応するコードに変換するにはどうすればよいですか? たとえば、次の文字列を変換したいとします。
このリストに:
ファイルを開かずにこれを行うことは可能ですか?