問題タブ [clojure]
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.
functional-programming - バイナリブロックの遅延シーケンスのパディング
数値のシーケンスを取得して適切なビット数に切り刻み、チャンクの遅延シーケンスを返すClojure関数があります(最下位ビットが最初)。それはブロックサイズを埋めるために最後のブロックの上位ビットをパディングします、そして私はそれを怠惰で機能的に保ちながらパディングの量を記録するための「最良の方法(tm)」についてのアドバイスが必要ですか?
知恵の言葉は大歓迎です。
パラメーター:
- in-block-sizeは、入力シーケンスの各数値の有効ビット数です。
- out-block-sizeは、返されるレイジーシーケンス内の各数値の有効ビット数です。
- バイトは、ビットを抽出するための数列の怠惰なシーケンスです
これは、3バイトのシーケンスを取り、それを2つの20ビット数のシーケンスに分割する(そしてそれを2進文字列として出力する)例です。
20ビット番号のシーケンスの2番目の番号には、4つの有効ビットのみがあり、有効な16個のゼロが追加されています。次に、このシーケンスを、シーケンスで何かを実行してネットワーク経由で送信したい別の関数に渡した場合。受信側のコードは、最後の16ビットを印刷/保存などしないようにする必要があります。
PS:これらは連鎖させることができます。(block-seq 20 15(block-seq 8 20(read-bytes-from-file)))
vector - 参照の Clojure ベクトル
異なる参照のベクトルを作成する最も簡単な方法は何ですか?
を使用(repeat 5 (ref nil))
するとリストが返されますが、それらはすべて同じ参照を参照します。
と同じ結果(replicate 5 (ref nil))
:
clojure - オプションのフラグを持つ Clojure パラメーター
関数へのオプションのフラグとしてキーワードを実装する最良の方法は何ですか? 次のような関数呼び出しを行いたい:
defn を使用すると、次のような関数を定義できます。
しかし、flags
リストになります。リストを検索する独自の関数を作成できますが、そのような関数はコア ライブラリに含まれていないため、慣用的ではないと思います。
私が今使っているもの:
arrays - バイト配列を表すClojure
Javaでは、ファイル全体をバイト配列に読み込み、それを使って何らかの処理を行います。今、私はclojureで同じアルゴリズムを実装したいと思います。
私が疑問に思っているのは、配列の代わりにリストを使用できますか?
clojureから配列を作成できることは知っていますが、これを処理するLispの方法は何ですか?
java - Clojure While ループ
私はclojureを試しています。次のアルゴリズムを実装する方法を見つけようとしています.
区切り文字でなくなるまで読み続けたい入力ストリームから読み込んでいます。
while ループを使用して Java でこれを行うことができますが、clojure で行う方法がわかりませんか?
lisp - Clojure変数とループ
グーグルで調べてみると、while
ループを使用したり、変数を使用したりすることはお勧めできません。
ここで、入力ストリームから文字を読み取り、それに応じて解析する非常に単純なアルゴリズムを実装しました。入力の場合10:abcdefghej
は解析し10
、コロンの次の10バイトを読み取ります。
私が少し迷っているのは、変数に依存しないようにこれをリファクタリングする方法です。
また、変数を宣言する唯一の方法はwith-local-vars
キーワードを使用することであることを理解しています。最初にすべての変数を1つのブロックで定義するのは非現実的ではありませんか、それともいくつかの重要なポイントが欠けていますか?
loops - Clojure ループは 1 つ余分に読み取ります
長さが 4 の場合、次のループは 5 回実行されます。ストリームから 5 文字を読み取ります。
java - 奇妙なクラスパス、.NoClassDefFoundError エラー
編集済み:ソリューションが見つかりました。これは奇妙で、最善の解決策ではありませんが、swt.jar と私のクラスがまったく同じ瞬間に同じ方法でロードされるように、先に進んで MY JAVA CODE (com.*) のクラスを swt.jar に入れました。クラスローダー。最善の解決策ではありませんが、一時的な修正です
編集: ここにほとんどのコードを追加しました: http://groups.google.com/group/clojure/browse_thread/thread/1d7dd4913b2f9aa7 http://groups.google.com/group/clojure/web/NoClassDefIssue.zip http: //groups.google.com/group/clojure/web/MostCodeIssue.java
これは奇妙な no classdef not found エラーです。これは、私のコードの動作の 90% が少し異なるシナリオです。Clojure を使用していることを無視してください。通常の Java コードでもこれを実行しましたが、同じエラーが発生します。
理想的には、カスタム クラスローダーに関するヘルプを期待していました。私の最初の考えは、クラスローダーを作成し、jar のファイルパス/URL をクラスローダーに追加して、コードを起動できるということでした。しかし、どうやら奇妙なことが起こっているようです。
4〜5個の補助jarファイルを動的にロードするjarファイルが1つあります。シンプルな URLClassLoader に基づいて構築されています。ユーザーが 1 つの jar ファイルをクリックしてアプリケーションを起動できるため、これを実行したいと考えています。そのため、ユーザーが心配しなければならない項目が 1 つあります。
この jar ファイルをクリックすると、アプリケーションはファイルシステムから jar ファイルをロードします。たとえば、アプリケーションは swt.jar (Eclipse のウィジェット ツールキット) とその他の jar をロードします。
3 (しかし心配しないでください)、私のアプリケーションは Clojure (動的プログラミング言語) で構築されています。最初に起動するアプリケーションはこの Clojure スクリプトです。私のアプリケーションのほとんどは、clojure スクリプト内にあります。
4. 1 ~ 3 まではすべて問題なく動作します。アプリケーションがロードされ、clojure スクリプトが実行され、SWT GUI アプリケーションが実行されます。
ここが動かない部分です。
既存の Java ライブラリがあり、それを my-swt-gui.jar と呼びます。それもswtアプリケーションです。基本的に別のGUIアプリケーションがすでに構築されています。現在の clojure/swt アプリケーションからウィンドウをロードしようとしています。何らかの理由で、JAVA 指向のライブラリが SWT を認識せず、noclassdef エラーが発生します。
ここが奇妙です。そして、どこに奇妙な点があると思われるかを特定します。
エンティティ: A. Java 指向のクラスローダー。Java クラスローダーで、clojure アプリケーションを起動します。SWT およびその他の jar ファイルは、このクラスローダーでロードされます。B. セクション エンティティによって呼び出される Clojure 指向のコード clojure コードは、swt ベースの GUI アプリケーションです。B は正常に動作します。C. 別の GUI ウィンドウを含む Java コード。何らかの理由で、このライブラリが読み込まれず、noclassdef というエラーが発生します。
注: 私は、SWT クラスが実際にクラスパスにあることを知っています。そうしないと、NoClassFound 例外が発生します。私はその例外を受けていません。他にも何かが起こっています。
注: SWT に win32 dll が含まれていることも問題でしょうか? おそらく、win32 dll jar へのアクセスは初めて機能しますが、Java コードでは機能しませんか? しかし、それは奇妙です。SWT が機能し、その後機能しないのはなぜですか?
すべてのコードをお見せすることはできませんが、関連する部分をお見せできれば幸いです。
メインのクラスローダー コードは次のとおりです。
そして、これがJava swtウィンドウをロードしようとした方法です。クラスローダーについてできるだけ多くを印刷して、別のクラスローダーに変更しようとしました。
public static final void createPDFWindowShell(IStartService service, final Object shell, final Object globalClassLoader) throws Exception {
}
エラーは次のとおりです。
-
function - ストリームロックから読み取るClojure関数
(get-next-indicatorストリームインジケーター)と呼ばれる入力ストリームから1つのトークンを読み取り、それを返す関数があります。私はそれを使って地図を作成しようとしています。
しかし、私がそれを実行すると、それはロックされます。get-next-indicator関数の1つを削除すると、機能します。両方の関数が同時にストリームを読み取ろうとしますか?これです。これを引き起こしているのは何ですか?
vim - vimでREPLをセットアップするにはどうすればよいですか?
clojure の学習を簡単に開始できるように、vimclojure をインストールしました。しかし、vim内でREPLをセットアップできませんでした。これは基本的に、vim(?) で maplocalleader を記述できなかったためです。
vimclojure/doc/clojure.txt のドキュメントに基づいて、REPL を開始するために .vimrc に以下を追加しました -
ただし、「sr」と入力しても REPL は開始されません。
前もって感謝します。