問題タブ [clisp]
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.
common-lisp - Lisp がリストを反転しない
clisp を使用して Lisp で宿題をやっていて、このコードを読み込んで clisp で実行しています。
私は Lisp の初心者ですが、このコードはまったく反転thelist
していません。私の出力は次のとおりです。
私のコードの最初の行は(reverse thelist)
、なぜ最初の print ステートメントを逆にしないのですか? 何か不足していますか?
lisp - 超単純なバニラ標準入力をどのように要求しますか?
clisp プログラムの標準入力にこのような行を入力しているとわかります...
...カーソルが踊っているようで、やっているかどうかは関係ありません
また
つまり、右括弧をそれぞれ入力すると、対応する左括弧の上にカーソルが一時的に移動します。先に入力すると、その時点までに入力された行全体が再エコーされることがあります。
これで問題ないと思いますが、私は pty でこれを行っており、その pty からの入力 (clisp プログラムの標準出力とエラー出力に表示されるもの) を「クリーン」にしたいと考えています。カーソルが踊ったり、ラインが再エコーしたりすることはありません。
入力と出力に名前付きパイプを使用できると思いますが、これを pty で処理したいと考えています。
標準入力を純粋にバニラにするにはどうすればよいですか? ダンシングカーソルがありませんか?タイプアヘッドの再エコーはありませんか?どこかの構成ファイルを変更することはできますか?
lisp - 重複を削除するときにキーとしてスロット値を指定する
次のコードは私が望むことをします:
しかし、13行目に関数を記述せずにこれを行う方法はありますか?クラスインスタンスのスロット値をキーとして指定する簡単な方法はありますか?
もちろん、以下は構文エラーで爆発しますが、それは私が探しているものの一般的な考えを与えます。
lisp - クロージャーはどのようにそれ自体を参照できますか?
このベアボーンサンプルのような庭の種類のクロージャーがあるとします。
そのクロージャ(funcall)
のインスタンスを3回実行し、3回目の実行の途中で、このクロージャが自分自身をどこかに保存したいとします(たとえば、ハッシュテーブル内)。(funcall)
それから私はしばらくの間このインスタンスをしません。次に、このインスタンスをハッシュテーブルと(funcall)
それから再度取得し、戻り値4を取得します。
クロージャー内の関数はどのようにそれ自体を参照するので、そのハッシュテーブルにそれ自体を保存できますか?
編集1:これはより詳細な例です。クロージャーをパラメーターとしてそれ自体に渡すことで、目標を達成します。しかし、私はクロージャーが自己パラメーター化されることなく、これをすべてそれ自体に対して行うことを望んでいます。
編集2:はい、マクロを使用して関数の名前を最初のパラメーターとして挿入し、の代わりにそのマクロを使用できることは(funcall)
わかっていますが、クロージャーがそれ自体を参照するようにする方法を知りたいです実例。
編集3:SK-logicの親切な提案に応えて、私は次のことをしましたが、それは私が望むことをしません。同じクロージャへの3つの参照ではなく、スタックに3つの新しいクロージャをプッシュします。それらをスタックからポップすると、呼び出しの値が6、7、および8ではなく1、1、および1になる方法を参照してください。
編集4:JonOの提案は正確に的を射た。コードと出力は次のとおりです。
編集5:Mironの提案も的を射ており、実際にコードをもう少し読みやすくしています。
emacs - CLISP / SLIMEを設定するとき、eval-bufferは何もしません
私は次のチュートリアルを使用しています:
http://www.pchristensen.com/blog/articles/installing-clisp-emacs-and-slime-on-windows-xp/
すべてのディレクトリを設定し、必要なすべてのファイルをダウンロードしました。ただし、ステップ4では、emacsコマンド「eval-buffer」を使用しています。設定を入力し、「eval-buffer」を実行し、フィードバックを受け取り(下部のバーで)、すべてが正しく機能していると想定しました。次に、Mx "slime"を実行すると、次のエラーが発生しました。
.emacsファイルに間違って入力したと思ったので、再編集しました。ただし、Mx "eval-buffer"を実行しようとすると、フィードバックが届かず、新しいコードが実行されるとは思われません。
ちなみに、私のファイルは次のとおりです。
lisp - cl-ppcre を使用する clisp プログラムをどのようにコンパイルしますか?
Debian で、cl-ppcre パッケージを使用する CLISP プログラムをコンパイルしようとしています。
サンプルの単純化されたプログラム (バリアント 1 と呼びます) は次のようになります。
このように実行したとき::
私はこれを得た:
しかし、私がそれをコンパイルしようとしたとき:
私はこれを得た:
バリアント 2 では、実行が成功し、コンパイルが失敗した場合でも同様の結果が得られました。
コンパイルするにはどうすればよいですか?
答えを見つけるのに役立つかもしれない場合に備えて、バリアント 1 の実行によってトリガーされたファイル I/O を調べました。私がこれをしたとき:
私はこの出力を得ました:
それで、私は何をしますか?
lisp - Lispコンパイラに(label-variety)関数を無視するように依頼するにはどうすればよいですか?
私は顔が青くなるまでSteeleのCommonLispthe Languageを見つめてきましたが、まだこの質問があります。コンパイルした場合:
これは起こります:
けっこうだ。では、関数yを無視するようにコンパイラーに要求するにはどうすればよいですか?私はこれを試しました:
そしてそれはうまくいきました:
しかし、どういうわけか、それが私がそうすることを警告が示唆していることではないと思います。
私は何をしますか?
common-lisp - プロンプトで行を読み取った後の改行状態が更新されていないようです
私はGNU CLISPを使用していて、このプログラムが原因で夢中になっています:
次のようなものを出力します。
しかし、(read-line) の前にプロンプトを出力すると、偽の空の行が表示されます。
例えば:
read-line の前後に (finish-output) を使用してみましたが、役に立ちませんでした。その空の行がどこから来たのかわかりません。CLISP にバグがあると思われます。
sorting - Clipsでの並べ替え
clispで挿入ソートとマージソートを書きたいです。入力は数値のフラットなリストになります。これら 2 つの並べ替えを再帰的に (できればラムダを使用せずに) どのように記述しますか? 挿入ソートについては、リストと整数 (目的の要素の現在のインデックスを意味する) を引数として受け取る関数を作成し、setf と nth を使用してリストを操作することを考えていました。その内部には別の再帰関数もあるはずですが、... 保存する関数や変数が多すぎて混乱します。
マージソートについては、まったくわかりません。