問題タブ [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.
string - common lisp における非標準の ASCII 文字のテスト
文字列をテストして、10 進数の 127 を超えるコード (拡張 ASCII コード) または 32 未満の文字が含まれているかどうかを確認する必要があります。文字の文字コードを比較しますか? Common Lisp 実装 CCL を使用しています。
cocoa - NSTextFieldCell プロトタイプで NSFormCell のメソッドを呼び出す NSMatrix
NSTextFieldCell をプロトタイプとして NSMatrix を作成しました。しかし、ビューがウィンドウに追加されて描画されると、次のエラーが発生します。
Cocoa が NSTextFieldCell プロトタイプで setTitleWidth: を呼び出すのはなぜですか? setTitleWidth: NSTextFieldCell メソッドではなく、NSFormCell メソッドです。
そのプロトタイプをサブクラス化し、setTitleWidth: と titleWidth: のダミー メソッドを追加すると、すべてが機能しますが、これは明らかにハックです。
何が起こっているのですか?以下は、作業コードの関連セクションです。
lisp - ラムダはdocstringを持つことができますか?
docstring を使用できることはわかっているdef*
ので、ラムダを試してみます。
恥ずかしいことに、以下は NIL を返します。
どうしたの?ラムダはdocstringを持つことはできませんか? それを行う方法はありますか?
locking - Lisp、CLOS: ロック クラスにスロットを追加する
ロック クラスに新しいスロットを追加しようとしています。階層内に多数のロックがあり、すべてのロックの親ロックを保存すると、デバッグ中に問題を検出しやすくなるため、これは便利です。
残念ながら、これは ensure-class 関数では実行できないようです。組み込みクラスとしてリストされているため、スロットを「プロセス」に追加できますが、「ロック」には追加できません。「プロセス: lisp、CLOS:プロセスクラスにスロットを追加する方法については、私の以前の質問を参照してください。
この問題を解決する方法を知っていますか? それが不可能な場合、考えられる唯一の代替手段は、ロックの階層関係をハッシュ テーブルに保存することですが、一部のロックは実行時および異なるプロセスで作成されるため、さらに別のロックを追加する必要があります。ロックのメタデータを格納するハッシュテーブルにアクセスします。
これは非常に非効率的だと思います。もっと良いアイデアはありますか?
編集:明確にするために、私はClozure Common Lispを使用しています。
windows - clozure cl: Windows 7 の cl-freetype2
私は、quicklisp がインストールされた clozure cl (バージョン 1.8-r15286m) を使用して Windows 7 64 ビット システムで作業しています。
Common Lisp 用の freetype2 バインディングが必要です。(文字をグリフにマップ + カーニング情報)
を使用して「cl-freetype2」をインストールしようとしました
32 ビット clozure cl から、いくつかの問題に遭遇しました。
- "grovel.lisp" (にある
quicklisp/software/cffi_0.11.1/grovel/grovel.lisp
) は、gcc が "c:/msys/1.0/bin/gcc.exe" にインストールされていることを前提としています (パスに mingw-gcc がありますが、そこにはありません)。"grovel.lisp" の "c:/msys/1.0/bin/gcc.exe" を "gcc" に置き換えて修正しました。 - freetype2 の cffi バインディングをコンパイルしようとすると、インクルード ディレクトリをコンパイラに渡すときに (つまり、gcc`
-i"d:/somedir"
に渡す代わりに-i"/somedir"
)、同じファイルにドライブ文字が含まれません。 - "grovel.lisp" は UNIX インクルード ディレクトリをインクルードしようとします。
#2を自分で修正することはできません。このディスカッションを見つけ、リストされている両方のパッチを試しましたが、どちらも機能しませんでした。(最初のものは cffi を壊します。なぜなら、ccl は「namestring-prefix」関数も「pathname-prefix」関数も見つけられないからです)、2 番目のものは問題を解決しません。
この状況で何ができますか?「groveller」を自分で修正するのは避けたいと思います。freetype2 のバインディングが必要なだけです。基本的に、私はできる必要があります
- TrueType フォントをロードします。
- Unicode 文字をグリフにマップします。
- グリフのペアのカーニング情報を取得します。
- グリフ ビットマップを読み込みます。
何か案は?
common-lisp - common lisp: defstruct 構造体のスロット値
一般的な Lisp では、スロット名/シンボルを使用して構造体スロットにアクセスするには、何を使用できますか?
私が欲しいのは
私はclozure clを使用しています.clozure clではこれが機能します。ただし、知る限り、これは非標準の動作です (「未定義の動作」C++ と同等)。別の CL 実装に切り替えるつもりはないので slot-value
、構造体を使い続けるべきですか、それとももっと良い方法がありますか?
lisp - CCL は、ファイル/ディレクトリ名の不正な文字を壊しますか?
次の点を考慮してください。
ディレクトリの1つに文字「;」が含まれているため、これは壊れます。
上記の「*」が削除された場合、コードは「;」が含まれるディレクトリ リストを返します。エスケープされます。
一部のディレクトリには「;」が含まれているため、それ以上下に移動できないようです
これに対する修正はありますか?
ありとあらゆる称賛に感謝します。ありがとうございました。
lisp - Windows では、CR は Common Lisp の read-line の後にまだここにある
Windows でテキスト ファイル (つまり、行末が CRLF のファイル) を読み取る関数があり、このファイルでread-lineを呼び出すと、CR で終わる文字列が取得され、これは SBCL または Clozure CL で終わります。MKCL では、CR と LF の両方が削除されます。
だから、どの実装が正しいのだろうか?
標準によると、主要な値である line は、読み取られる行であり、文字列として表されます (末尾の改行がない場合)。(ここを参照)。したがって、CR または LF が残っていないはずだと思いますが、私にはあまり明確ではありません。
もちろん、回避策はありますが、かなり面倒です。これがバグなのか、単に実装依存なのかを知りたいです。