![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.3ベストアンサー
- 回答日時:
> 変数を大域変数にしておけばいいのですね。
下記のようにやったらうまくいきました。あと、大域変数だけじゃなくって、letで定義した局所変数対象でもうまくいくんじゃないでしょうか。
> (let ((x 10))
(setq x 20)
x)
> 20
> OK! ISLisp というのが処理系の名前でした。
ああ、沖電気工業が作った処理系かな?
多分ISLISPの仕様が決まってからすぐさま作ってくれた元々は商用の処理系だったと思いますけど。
> Common Lispはシステムが大きく、初心者には荷が重いです。
そうですね。かなりデカいのは事実です。
ぶっちゃけ、Lisp初心者にはCL系よりもSchemeかSchemeの亜種の方が向いてますよね。
世界的に一番売れてる、っつーか使われてるLisp処理系は、今だと多分Racketだと思います。
Racket:
https://racket-lang.org/
オールインワンのタイプで、昔のBASICよろしく、インストール、即起動、IDE付きってんで、簡易性から言うとこれに勝てるLispはありません。多分これが世界的に一番人気です。
また、自分が書いたソースコードをコンパイルしてスタンドアロンのexeを作れる辺りでもオススメです(ただ、日本語が絡むとコンパイルが失敗する、ってぇのが玉に瑕)。
> 昔々16ビットPC用のmu-Lispという処理系でちょっとだけ遊んだことがあるので、またやってみたくなりました。
テキサス・インスツルメンツ制のCommon Lispのサブセットかしら?
昔のTIってLispマシンも作ってたし、割にLispには本腰いれてたんですよね(笑)。
> そのときはいきなりsetqを使っても問題なかったような記憶があります。
はいそうです。
ってか、今のCommon LispやSchemeでもそうなんですよ。
Common Lisp Hyper Specだと
CLHS(setq):
http://www.lispworks.com/documentation/HyperSpec …
何も書いてないんですが、一方、defparameterやdefvarで一旦変数をキチンと定義しないでsetqをいきなり使えば警告を出す処理系も多いですね。
Racketの場合は、ISLISPと同様に、一旦defineで変数を定義しないでいきなりset!を使うとエラーを出します。
写真: Racketの例。defineで変数定義をせずset!(Common Lispで言うsetq)をいきなり使おうとするとエラーを食らう。
![「ISLispのsetq関数について教えて」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/4/525078_610a97523190e/M.png)
cametan_42さん、ありがとうございます。おー、Racket。いかにも軽くていいネーミングです。こちらも使ってみたいと思います。それにしても、Lispファミリーは半端ない数ですね。
mu-Lispは現在でもあるようで、ご推察のようにTI社が関係しているようです。どうもお金がかかるみたいです。
http://www.edm2.com/index.php/MuLISP#Author_.26_ …
完璧な回答のため、ベストアンサーといたします。ありがとうございました。
No.2
- 回答日時:
あ、ちなみに、
> 学習用に簡単に使えるLispの処理系 ISLisp
ではないです。
ISLISPは処理系の名前じゃありません。
ISLISPはISO(国際標準化機構)で唯一公式に制定されてるLisp方言の「規格」であって、処理系の名前じゃないんですよ。
むしろ、生憎、処理系の数がどっちかっつーと「無い」とか「少ない」と言うレベルの、ぶっちゃけ「存在自体が殆ど忘れ去られた」Lispの規格、って言って過言じゃないです。
JIS(日本産業規格)にも制定されてる唯一のLisp系規格なんですけどね。
どこで入手されたか知らないですが、学習用じゃなくって、むしろ珍しいですね(笑)。どーやって入手したんだろ(笑)。
No.1
- 回答日時:
ええとですね。
setqでいきなり変数を定義出来るのはCommon Lispなんですよね(非推奨だけど)。
ISLISPの場合、大域変数的にdefglobalとかdefdynamicとしてxを定義しておくか、あるいはletで局所変数としてxを定義しておいて、「束縛を変更する」時にしかsetqって使えないんじゃないかしらん。
Unbound Variable: X
と言うメッセージはそれを表しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作成するには 2 2022/10/25 21:19
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作りたいのですが 1 2022/10/24 18:56
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- Excel(エクセル) 時間差を求めるマクロコードを教えてください。 4 2022/05/17 18:22
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- 医療事務・調剤薬局事務 どちらの薬局の方が安いか、判定お願いします 1 2022/09/22 17:26
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- Excel(エクセル) 次のようなケースを関数で処理するには。。 5 2023/07/18 03:24
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
End Sub が必要です。
-
対応する関数ヘッダーがありません
-
解説サイトに従ったfortran並列...
-
intel fortranのエラーで困って...
-
構造体のポインタ参照
-
AccessVBAでVLookupを使いたい
-
43:syntax error at end of input
-
#ifndefとかヘッダファイルにつ...
-
VB2005でOCXを動的に呼び出すに...
-
STL mapでアクセス違反
-
python numpy.linalg.inv()での...
-
typedef による2重定義
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
配列数式の解除
-
メッセージボックスのOKボタ...
-
UserForm1.Showでエラーになり...
-
エクセルのマクロについて教え...
-
教えて下さい
-
エクセルで特定の列が0表示の場...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
End Sub が必要です。
-
フォートランのエラーについて...
-
intel fortranのエラーで困って...
-
C言語のプログラムが実行できま...
-
対応する関数ヘッダーがありません
-
Excel VABについて 下記記述が...
-
VBでエラー'ActiveX component ...
-
他クラスからForm1内コントロル...
-
Makefile と <math.h>
-
43:syntax error at end of input
-
AccessVBAでVLookupを使いたい
-
VB.NETのStructureの使い方を教...
-
フォートラン(fortran)のエラー...
-
(fortran) run-time erro M620...
-
解説サイトに従ったfortran並列...
-
verilogでデマルチプレクサの作...
-
構造体のポインタ参照
-
【ルネサスのマイコン】E8aから...
-
Excel VBA: UserForm.Show で実...
-
typedef による2重定義
おすすめ情報
cametan_42さん、ありがとうございます。変数を大域変数にしておけばいいのですね。下記のようにやったらうまくいきました。
>(defglobal x 10)
x
>x
10
>(setq x 20)
20
>x
20
ISLispは規格の名前でしたか。こちらのサイトで見つけました。
http://www.islisp.org/index-jp.html
OK! ISLisp というのが処理系の名前でした。.exeファイル1つだけで動くので、簡単でよいと思いました。Common Lispはシステムが大きく、初心者には荷が重いです。
昔々16ビットPC用のmu-Lispという処理系でちょっとだけ遊んだことがあるので、またやってみたくなりました。そのときはいきなりsetqを使っても問題なかったような記憶があります。