問題タブ [abcl]
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.
lisp - ABCL コンパイルとプリミティブ
ABCL を使用して Lisp コードを .class ファイルにコンパイルし、main メソッドを作成してすべてを .jar ファイルにパッケージ化して実行できるようにする方法 (または場合) を知っている人はいますか?
また、ABCL コードからプリミティブ Java 型にアクセスする方法を知っている人はいますか?
java - ABCLでJavaクラスを書くことはできますか?
ABCL (別のクラスを拡張する)を使用して Java クラスを作成する方法はありますか?
lisp - armed bear common lisp に問題があります - repl からユーザー定義クラスを呼び出しますか?
私はLispに非常に慣れておらず、Javaにもかなり慣れていません。私は Java で簡単なゲームに取り組んでいましたが、REPL を使用してコーディングしていたので、ゲームとやり取りするのは面白いだろうと思いました。私は Practical Common Lisp に従っており、基本的な関数構造の知識を持っています。私は Armed Bear Common Lisp (Java 仮想マシン上で実行される実装) の使用を開始し、次のような GUI を作成するためのいくつかの基本的な関数をコーディングすることができました。
しかし、lisp からユーザー定義クラスにアクセスする方法がわかりません。全体としての実装はかなり不十分に文書化されているようで、Lisp 内から Java 固有のものを使い始めるのが難しいと感じています。たとえば、「Character」というコンパイル済み文字クラスがあります。しかし、(jclass "Character") を呼び出すと、「クラスが見つかりません」というエラーが発生します。Lisp内からabclに私のクラスを認識させることは可能ですか?
common-lisp - フリーリング Java API を ABCL から呼び出す
Freeling ( http://nlp.lsi.upc.edu/freeling/ ) Java API ( http://devel.cpl.upc.edu/freeling/svn/trunk/APIs/java/ )を呼び出そうとしています。 ABCL ( http://common-lisp.net/project/armedbear/ )。Freeling Java API の README にあるすべての手順に従い、swig を使用して API をコンパイルしました。その後、サンプルコードを実行できました。
この Analyzer.java で、関連する行は次のとおりです。
ABCLで私は試しました:
しかし、エラーが発生しました:
誰にもアイデアはありますか?Java の System.load に関する ABCL の特別な問題はありますか?
clojure - JVMベースのLipsでテールコールを最適化できないのはなぜですか?
主な質問: 私は、テール コール最適化 (TCO) の最も重要なアプリケーションを、再帰呼び出しをループに変換するものと考えています (再帰呼び出しが特定の形式を持つ場合)。より正確には、これを機械語に翻訳すると、通常はある種の一連のジャンプに翻訳されます。ネイティブ コード (SBCL など) にコンパイルする一部の Common Lisp および Scheme コンパイラは、末尾再帰コードを識別し、この変換を実行できます。Clojure や ABCL などの JVM ベースの Lisp では、これを行うのに問題があります。これを防止または困難にするマシンとしての JVM についてはどうですか? 理解できません。JVM には明らかにループに関する問題はありません。TCO を実行する方法を理解する必要があるのはコンパイラであり、コンパイル先のマシンではありません。
関連する質問: Clojureは一見再帰的なコードをループに変換できます: プログラマーが関数の末尾の呼び出しをキーワード に置き換えると、TCO を実行しているかのように動作しますrecur
。しかし、たとえば SBCL や CCL のように、コンパイラにテール コールを識別させることが可能である場合、Clojure コンパイラは、テール コールを処理する方法で処理する必要があることを認識できないのはなぜrecur
でしょうか?
(申し訳ありませんが、これは間違いなく FAQ であり、上記の発言は私の無知を示していると確信していますが、以前の質問を見つけることができませんでした。)
common-lisp - Allegro CL と ABCL では、型名だけを指定して構造体を作成できますか?
ほとんどの実装では(make-instance 'struct-type)
、その型のコンストラクター関数を定義したかどうかに関係なく、 を使用して構造体を作成できます。これは Allegro や ABCL では機能しませんが、これらの実装では を使用して読み取り時に構造体を作成できます#S(struct-type)
。これにより、型名をシンボルとして指定すると、実行時に構造体を構築する別の方法が必要になると思います。
multithreading - ABCL (Armed Bear) LISP では、バックグラウンド サブプロセス / バックグラウンド スレッドを作成するにはどうすればよいですか?
ABCLでバックグラウンド (名前付き) サブプロセス/スレッドを生成するにはどうすればよいですか? つまり、サブプロセス (またはスレッド) を生成してバックグラウンドで実行し、トップレベルの評価を他の処理のために解放したままにします。
(apropos 'process/thread) を使用すると、以下にリストされているような文書化されていない関数が見つかりましたが、構文がわかりません。フォロー/変更する実行中のサンプルコードを探しています。以下のmake-process関数でプロセスを作成したようですが、killしようとするとエラーになり、フォアグラウンドで実行されてしまいます。make-process については、ABCL のマニュアルには記載がありません。MAKE-THREAD はリストされていますが、文書化されていません。
この「文書化されていない」指定で ABCL マニュアルにリストされているすべての関数の文書/例はどこにありますか? (また、aproposで見つかったものは?)
別の関連する問題として、これらのようなエッジケースの質問をカバーする ABCL 固有の実行コード例のオンラインリポジトリはありますか?
他の common-lisps では、次のような関数を使用します。
また
ABCLでは、私は遠く離れていないことを混乱させました:
と
と
[スレッドに必要なストリームを作成するための構文/例?]
ポインタまたはコードを事前にありがとう。