Skip to main content

次のタグが付いている話題の回答:

5
承認済み

Greenspun's tenth ruleとは何なのか?

「グリーンスパンの第10法則」は、「車輪の再発明」に近い機微の言葉かと思います。 1980年代後半のグリーンスパン氏は、大規模なソフトウェア開発と関わる中で、大規模なCやFortranでの開発は、Common Lispの言語機能を再実装する頻度が高いことに気付き、架空の法則をでっち上げました。 適当に記憶に残りやすい番号をふってみただけとのことで、第1-9法則は存在しません。 時代背景として、...
g000001's user avatar
  • 1,371
4
承認済み

common-lisp の setq はいつ使うのか?

setqはどんなケースで使われるのか教えて下さい。 setqは、変数への代入全般で使います。基本的に他の言語と変わりありません。 Lisp特有のところとしては、シンボルというオブジェクトが値を格納する場所を持っており、この場所に値を代入できることです。 コンピュータ言語には、 変数宣言がいらない言語 変数宣言が必要な言語 がありますが、Common Lispは、変数宣言が必要な言語です。(...
g000001's user avatar
  • 1,371
3
承認済み

listからcdrして得たstringをread-from-stringすると文字列ではないとエラーが出る

実際は ("70" . nil) が取得されているため、"70" を取得するにはもう一度carしないとダメだからという理解で合っているでしょうか? はい。 CLHS: Accessor CAR, CDR, CAAR, CADR, CDAR... Syntax: cdr x => object Description: If x is a cons, ...
metropolis's user avatar
  • 6,915
2

xyzzyで((4 1 . #1=(2 . #2=(3))) (1 4 . #1#) (1 2 4 . #2#) (1 2 3 4))は普通のリストで表示されない

#1= #1# というのはCommon Lisp系Lispでは同じデータを参照していることを示す表示です。 xyzzyはCommon Lispに六割程度準拠とのことですが、Common Lispであれば、 *print-circle* を nil に設定することで、共有構造の表示を無効にできます。 (setq *print-circle* nil) (ins 4 nil '(1 2 3)) ...
g000001's user avatar
  • 1,371
2

Emacs系のエディタを一通り学習する手順を教えてください

Emacsについては、インターネットやその他の書籍に情報は多数存在していますが、なにぶん歴史の長いソフトウェアであるため、最新のバージョンには適さない古い情報が多く存在しています。 そこで、2017年に出版された改訂版Emacs実践入門という書籍を利用するのが比較的情報も新しく、初学者向けの内容であるため優れているかと存じます。 [改訂新版]Emacs実践入門―思考を直感的にコード化し、...
PicoSushi's user avatar
  • 4,959
2
承認済み

Common Lispでのインスタンス初期化の書き方が分からない

手元の Lisp 処理系は GNU CLISP 2.49.93+ (2018-02-18) なのですが、initialize-instance を override する場合には、引数に &rest _ を指定する必要があるので、以下ではその様にしています。また、(setq (bmi-bmi x) ...) では setq ではなく setf を使います。 (defclass bmi () ...
metropolis's user avatar
  • 6,915
2
承認済み

Commn lisp コマンドライン引数の処理について

表示されるメッセージは以下の通りで、コンパイル時のワーニングです。(実行時には person の内容が表示されます) ; compilation unit finished ; Undefined variable: ; PERSON ; caught 1 WARNING condition CLHS に以下の説明があります。 CLHS: Macro DEFPARAMETER, ...
metropolis's user avatar
  • 6,915
1
承認済み

common-lisp loop の変数をbit型ではなく、Integerで回すには?

Bit型をInteger型にキャストする bit 型は integer 型でもあります。 CLHS: Type BIT Description: The type bit is equivalent to the type (integer 0 1) and (unsigned-byte 1). $ sbcl This is SBCL 2.2.9.debian, an ...
metropolis's user avatar
  • 6,915
1
承認済み

common lisp で while の使い方が解らない

half 関数ですが、除算(/)の結果が整数ではなく、rational 型になる場合があるので floor 関数を使います。 * (type-of (/ 3 2)) RATIO * (oddp (/ 3 2)) debugger invoked on a TYPE-ERROR @530D0FE4 in thread #<THREAD "main thread" ...
metropolis's user avatar
  • 6,915
1

Common Lispでのインスタンス初期化の書き方が分からない

ストレートな回答は既にあるので、プログラミングスタイル的な観点��ら回答します。 Common Lispではメソッドはクラスに従属していないため、クラスというモジュールの中で計算をするという意識が希薄です。 大抵は、関数+データ構造でのプログラミングをベースにクラスの継承機構を活用するというスタイルになります。 そのため、今回のようなBMIの計算についても、...
g000001's user avatar
  • 1,371
1
承認済み

Common Lispの引数有りメソッドの書き方

立方体の体積を求めるメソッドの書き方と呼び出し方 (defmethod cube ((x square) tall) (* (shape-width x) (shape-height x) tall)) (format t "~d" (cube sq 5)) 追記 cuboid クラスと volume メソッドを定義してもよいかと思います。 (defclass ...
metropolis's user avatar
  • 6,915
1

common lispのデバッガーの使い方を教えて下さい。

既に参考文献のなかに挙げられていますが、Debugging Lispには邦訳があり、対話的/非対話的な使い方の双方が解説されています。 日常的に使う範囲はほぼ網羅されていると思いますので、かなり有用かと思います。 https://glider-gun.github.io/blog/2015/12/19/debugging-lisp-part-1-zai-konpairu/ また、Common ...
g000001's user avatar
  • 1,371
1
承認済み

Common Lispで、#.を使って値の埋め込みをしたい

まず、#.はリード時に作用するものなので、コンパイル時に作用するものではありません。 リード時はコンパイル時より先に来ます。 test-funcをできるだけ先に評価しようとして、eval-whenを付けて、最も早い評価タイミングにしたとしても、コンパイル時までになりますのでやはり手遅れ、というのが起きている現象です。 通常、上記のようなコードは、ロード時(...
g000001's user avatar
  • 1,371

無効化に投票