問題タブ [ccl]
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.
multithreading - Lispで解放せずに読み書きロックを取得する方法は?
Clozure CL を使用してアプリを作成しています。アプリでは、いくつかのファイルを書き込む必要があるため、ファイルごとに読み書きロックを作成しました。
今、私はquit関数を書こうとしています。すべてのファイルの書き込みが完了したかどうかを確認して終了します。基本的には以下のように動作します。
- すべてのファイルの読み取り/書き込みロックを取得します
- CCLをやめる
Clozure CL ドキュメントを読みましたが、grab-write-lock のような関数が見つかりません。「grab-lock」、「with-read-lock」、「with-write-lock」しか見つかりません。'grab-lock' は read-write-lock では機能しません。他の 2 つは自動的にロックを解放します。では、すべてのファイルの読み取り/書き込みロックを取得して (解放せずに)、アプリを終了するにはどうすればよいでしょうか?
json - Hunchentoot で raw-post-data を処理する方法
RESTAS、Hunchentoot、CL-JSON を利用した Lisp API に取り組んでいます。次のように定義されたルートがあります。
現在、Postman を使用して HTTP POST リクエストを送信しています。リクエスト本文には、次のような JSON データの例が含まれています。
画面に出力できるので、リクエストボディは明らかに通過しますが、そのdecode-json
部分には500サーバーエラーが残ります。妥当と思われるいくつかの組み合わせを試しましたが、その JSON を解析できませんでした。plist
理想的には、alist
またはハッシュテーブルに解析したいと思います。どんな助けでも大歓迎です。
if-statement - `if` の代替実装 - 理解不能な動作
if
ブール論理とマクロを使用して独自のものを書きたかったのです。私は次の実装を思いつきました:
いくつかのケースで手動でテストしましたが、期待どおりに動作します。しかし、一連のテストを実行するための簡単なテスト関数を書いたところ、まだ理解できない結果が 1 つ得られました。私は次のように関数を書きました:
テストを実行すると、次の出力が得られます。
2 番目の失敗例は、手動で実行した場合と、この関数の一部として実行した場合で明らかに異なる結果になります。SLDB でデバッグしてみましたが、実際にスタンドアロンで実行した場合とは結果が異なります。重要な実行の詳細などを見逃していたのではないかと思います。誰かがここで何が起こっているのか説明できますか? 助けて本当に感謝しています。
PS私の実装はClozure CLです。
lisp - clozucommon lisp の読み取りエラー
私が次のように読んでいる、外国語の文字を含むs式のファイルがあります。
ccl 1.8 ではエラーなしでファイルを読み取りますが、1.9 ではエラーをスローします。
何がうまくいかないのか、それを修正する方法はありますか? ご要望に応じてデータファイルをお送りします。
common-lisp - Common Lisp (CCL) で stdout をファイルに永続的にリダイレクトする
stdout をファイルに永続的にリダイレクトしようとしていますが、これを行うことについて見つけることができるすべての例には、標準出力グローバルを使用して let 内または with-open-file 内で行うことが含まれます。アプリケーション全体のリダイレクトを行う方法はありますか?
編集:標準出力でリダイレクトを実行しようとした方法は次のとおりです:
probe-file
これは REPL への出力を停止しますが、印刷呼び出しからのファイル (存在し、によって表示される) には何も表示されません。
編集:ドリブル機能を使用してみました:
しかし、次のエラーが表示されます。
エラー: ジェネリック関数に適用できるメソッドがありません: #STANDARD-GENERIC-FUNCTION CCL::STREAM-SET-COLUMN #x30200006557F (引数を指定して呼び出された場合): (# 0) 実行中: #、プロセス Listener(11) 内。cmd-/ と入力して続行します。中止するには、cmd-\ で利用可能な再起動のリストを表示します。続行する場合: もう一度呼び出してみてください タイプ :? 他のオプションについて。