問題タブ [ecl]

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.

0 投票する
1 に答える
174 参照

windows - 埋め込み可能な Common-Lisp asdf:defsystem が無効な相対パス名を返す

Common-Lisp の asdf の使用方法を学習しようとしていますが、次のコードがあります。

ただし、エラーが発生し続けます。

これら 2 つの Lisp ファイルと同じディレクトリで repl を起動していますが、エラーが発生する理由がわかりません。私は何が欠けていますか?WindowsでECLを使用しています

0 投票する
1 に答える
392 参照

windows - Windows で asdf:make-build が失敗する

次のファイルがあります

例.asd:

first.lisp:

second.lisp:

システムを正常にロードできますが、実行(asdf:make-build :example :type :program :move-here ".")すると次のエラーが発生します。

LINK : fatal error LNK1149: output filename matches input filename 'C:\path\to\example.lib'

正しく構成していないものはありますか? example.lib を作成してから、example.exe を example.lib にリンクしているようですが、cl はそれらが同じ名前になるのを好みません。結果の実行可能ファイルの名前を指定する方法はありますか? それとも、これは ECL の asdf:make-build の単なるバグですか?

Visual Studio 2015 の開発者ツールを使用して、Windows 10 で ECL を使用しています。

0 投票する
0 に答える
673 参照

common-lisp - *standard-input* と *standard-output* を別の PTY、FIFO、またはソケットにリダイレクトするにはどうすればよいですか?

ECLのLinux stdioをリダイレクトして、埋め込まれているアプリケーションとストリームを共有しないようにすることができるかどうか疑問に思っていました.

私の問題は、ホスト アプリケーションが独自の目的で stdin、stdout、および stderr を引き継ぐことです。そこで、Lisp ノイズ用と、SLIME/SWANK がクラッシュしてトップレベルに戻ったときの回復用に別のコンソールを用意したいと思います。現在、SWANK hiccup はCL-USER> プロンプトをアプリケーションのデバッグ ログに記録しC opperation (read) signalled an error、stdout による失敗はリダイレクトされ、stdin はクローズされているか、親プロセスによって使用されている可能性が高いです。

などを新しいストリームにできることは知っていますがsetf *standand-output*、screen、xterm、socket などの端末をそれに接続する方法が見つかりませんでした。基礎となる Linux/C ファイル記述子が必要で、それから PTY を作成できます。

telnetを使用して接続できるソケットサーバーに標準ストリームを接続する方法があれば、さらに良いでしょう。

アップデート

コメントの提案に従って、次のコードを試しました。

それはまったく仕事をしません。問題は、IO の一部が SWANK にリダイレクトされている間、実際のストリームを取得する方法がまだあるように見えることです。SWANKがどのようにそれを行うかを理解するには、ある程度の調査が必要になると思います. ああ、便利さの代償!

更新 2

私の間違い。*standard-error*しかありません*error-output*。私が Lisp の初心者だと言えますか?

これで、すべてがリダイレクトされました。しかし、SLIMEはSWANKに話しかけなくなり、やや目的を果たせず……。

アップデート 3

勝利!SLIME を接続する前に、ターミナルで次のシェル スクリプトのようなものを実行して、最上位シェルを作成する必要があります。

理由は、推測できません。しかし幸いなことに、とにかく機能します。

ところで、より良い回答を投稿したい人を落胆させないでください

誰かがストリームを監視しているかどうかにかかわらず、ストリームを維持するソケット サーバーまたは画面分離型 PTY を作成できると確信しています。それははるかに洗練されたソリューションになります。