探検
LISPって実際どうなの... [無断転載禁止]©2ch.net
1デフォルトの名無しさん
2015/12/26(土) 21:08:22.74ID:4MtdCfLl ポールグレアムがLISPをメッチャ推してるから今独学でやってるんだけど、やってる人が少ないからか参考書も少ないし正直javaとかのほうがいいんじゃないかと悩んでるんだが実際どうなん...
103デフォルトの名無しさん
2021/09/09(木) 23:10:01.54ID:ByNHohVX >>97
elispはバッファーローカル変数も興味深い
スレッドローカル変数と意味論的にも近く
マルチバッファーセーフ←→マルチスレッドセーフ
という対比ができる
凄くシンプルな設計と実装で上手くこなしてる
standard-outputやnilストリームの使い方も上手い
elispはバッファーローカル変数も興味深い
スレッドローカル変数と意味論的にも近く
マルチバッファーセーフ←→マルチスレッドセーフ
という対比ができる
凄くシンプルな設計と実装で上手くこなしてる
standard-outputやnilストリームの使い方も上手い
104デフォルトの名無しさん
2021/09/10(金) 16:13:07.64ID:y2IogSqT --- test-global-variable.el ---
;;; -*- lexical-binding: t; -*-
(defvar foo "foo")
(defun print-foo ()
(print foo))
(let ((foo "FOO"))
(print-foo))
(print-foo)
(setq bar "bar")
(defun print-bar ()
(print bar))
(let ((bar "BAR"))
(print-bar))
(print-bar)
--------------------------------
続く
;;; -*- lexical-binding: t; -*-
(defvar foo "foo")
(defun print-foo ()
(print foo))
(let ((foo "FOO"))
(print-foo))
(print-foo)
(setq bar "bar")
(defun print-bar ()
(print bar))
(let ((bar "BAR"))
(print-bar))
(print-bar)
--------------------------------
続く
105デフォルトの名無しさん
2021/09/10(金) 16:14:14.79ID:y2IogSqT -*- lexical-binding: t; -*-の有無で静的束縛を有効無効に出来るけど、
↓有りの場合
$ emacs --script test-global-variable.el
"FOO"
"foo"
"bar"
"bar"
↓無しの場合
$ emacs --script test-global-variable.el
"FOO"
"foo"
"BAR"
"bar"
1つ嘘ついたか…動的束縛の場合は、setqで作ったグローバル変数もスペシャル変数になるようだ
しかし、スペシャル変数のletで束縛する挙動は静的動的束縛に関係無く同じ挙動だ
それが言いたかっただけ
↓有りの場合
$ emacs --script test-global-variable.el
"FOO"
"foo"
"bar"
"bar"
↓無しの場合
$ emacs --script test-global-variable.el
"FOO"
"foo"
"BAR"
"bar"
1つ嘘ついたか…動的束縛の場合は、setqで作ったグローバル変数もスペシャル変数になるようだ
しかし、スペシャル変数のletで束縛する挙動は静的動的束縛に関係無く同じ挙動だ
それが言いたかっただけ
106デフォルトの名無しさん
2021/09/10(金) 16:22:31.87ID:y2IogSqT >>103
バッファローカル変数は、他の言語で言うインスタンス変数と役割は同じだな
例えば、buffer-file-nameはバッファローカル変数で、バッファ毎に違う値になるけど、
本来ならばbuffer.file-nameのように、作成したインスタンス変数内(この例ではbuffer)に有るべきだけど、
Emacsはオブジェクト指向を採用しなかったので、グローバル変数をバッファー毎に違う値にする為に、苦肉の策と言えなくもない
LispでもCLOSのようなオブジェクト指向を全面的に採用していれば、バッファローカル変数の仕組みは必要無いものだった
バッファローカル変数は、他の言語で言うインスタンス変数と役割は同じだな
例えば、buffer-file-nameはバッファローカル変数で、バッファ毎に違う値になるけど、
本来ならばbuffer.file-nameのように、作成したインスタンス変数内(この例ではbuffer)に有るべきだけど、
Emacsはオブジェクト指向を採用しなかったので、グローバル変数をバッファー毎に違う値にする為に、苦肉の策と言えなくもない
LispでもCLOSのようなオブジェクト指向を全面的に採用していれば、バッファローカル変数の仕組みは必要無いものだった
107デフォルトの名無しさん
2021/09/10(金) 16:29:15.85ID:y2IogSqT CLOSだと(file-name buffer)で済む所を、elispだと
(with-current-buffer buffer
buffer-file-name)
と書く必要があって、CLOSの方がスマートだと思う
他にもelispのadviceも、CLOSのdefmethodの:before :afterを使えば似たような事ができるだろう(完全に同じじゃないけど)
(with-current-buffer buffer
buffer-file-name)
と書く必要があって、CLOSの方がスマートだと思う
他にもelispのadviceも、CLOSのdefmethodの:before :afterを使えば似たような事ができるだろう(完全に同じじゃないけど)
108デフォルトの名無しさん
2021/09/11(土) 14:40:21.99ID:WRGMhX/P >>107>>108
それじゃbufferがthisのような特殊な識別子になってるだろ
それじゃbufferがthisのような特殊な識別子になってるだろ
109デフォルトの名無しさん
2024/01/25(木) 23:01:09.63ID:GdCzxGB4 人工知能言語として脚光を浴びた時代もありました
110デフォルトの名無しさん
2025/02/02(日) 07:50:12.47ID:DG2EYWWi 全部が式だし全部がオブジェクトなので分かりやすいよね。
小さい単位で動的に書き換えていけるので開発体験が良い。
動いてるプログラムのオブジェクトをインスペクタで調べたり中身書き換えたり、デバッガ内で値差し替えてリスタートとか楽しい。
Pythonとかより遥かに動的言語してるイメージある
小さい単位で動的に書き換えていけるので開発体験が良い。
動いてるプログラムのオブジェクトをインスペクタで調べたり中身書き換えたり、デバッガ内で値差し替えてリスタートとか楽しい。
Pythonとかより遥かに動的言語してるイメージある
111デフォルトの名無しさん
2025/06/14(土) 06:59:12.29ID:3Q/jS2n6 norvigやgrahamも言ってたが
PythonはほぼほぼALGOL風味構文のlispだわ
意味論という意味で
まあlispは構文の斉一性こそが大事なので半分だけ同意
PythonはほぼほぼALGOL風味構文のlispだわ
意味論という意味で
まあlispは構文の斉一性こそが大事なので半分だけ同意
112デフォルトの名無しさん
2025/06/15(日) 01:00:42.54ID:bHsxd1q/ Lispってまだあったのか。カァーとかクダァーとかね。
馬鹿馬鹿しいほどのかっこがあったね。今のエディタは
改善されたけど、昔は大変だった。
smalltalkとかprologはどうなったんだろ
馬鹿馬鹿しいほどのかっこがあったね。今のエディタは
改善されたけど、昔は大変だった。
smalltalkとかprologはどうなったんだろ
113デフォルトの名無しさん
2025/07/04(金) 15:29:07.20ID:rrB9liNl むしろエディタの進化でカッコの恩恵受けられてるぞ
フォームをドラッグ&ドロップで移動できる
フォームをドラッグ&ドロップで移動できる
114デフォルトの名無しさん
2025/07/04(金) 15:30:44.25ID:rrB9liNl なんというかscratch的なアレ
115デフォルトの名無しさん
2025/07/04(金) 21:06:35.47ID:qls1kG6o lispって、むしろ箱のコピペで記述したら良くね?
116デフォルトの名無しさん
2025/07/06(日) 10:21:58.33ID:jyZjYPic プレーンテキストが正義
vimとかでSexpr認識して、その操作受け付けるんだから無用でしょ
vimとかでSexpr認識して、その操作受け付けるんだから無用でしょ
117デフォルトの名無しさん
2025/07/08(火) 11:32:50.33ID:Lf/Jcjxk 今でも見てる5chの板ってある?
はてな
匿名
ダイアリ
はてな
匿名
ダイアリ
118デフォルトの名無しさん
2025/10/12(日) 02:51:28.83ID:DKsy7+ZR >>111
>>110
Pythonはlispである、という言説を理解するにはpythonのastを知っているのが前提だろう
pythonは標準のastモジュールで、lisp風前置記法のabstract syntax tree(ast)を出力でき、またそのastを書き換えてコンパイル/実行ができる
すなわち(少なくとも標準c実装の)Pythonには2種類の文法があるということを理解せねばならない
また関数型指向とかイテレータ指向とかの中心教義もlispの(少なくとも当時は)唯一無二な特徴であったから思想的にもね
astは大抵の言語でも構文上lispぽいけど、そこへさらに先に述べた設計思想やらも大体lispインスパイア(GvRも言ってる)なんで、ast構文のPythonはlisp方言と言って差し支えない
algol+c系構文のPythonの記法はastに直されて(あとさらにバイトコンパイル)されるので、シュガーシンタックスなlispともいえるかもね
>>110
Pythonはlispである、という言説を理解するにはpythonのastを知っているのが前提だろう
pythonは標準のastモジュールで、lisp風前置記法のabstract syntax tree(ast)を出力でき、またそのastを書き換えてコンパイル/実行ができる
すなわち(少なくとも標準c実装の)Pythonには2種類の文法があるということを理解せねばならない
また関数型指向とかイテレータ指向とかの中心教義もlispの(少なくとも当時は)唯一無二な特徴であったから思想的にもね
astは大抵の言語でも構文上lispぽいけど、そこへさらに先に述べた設計思想やらも大体lispインスパイア(GvRも言ってる)なんで、ast構文のPythonはlisp方言と言って差し支えない
algol+c系構文のPythonの記法はastに直されて(あとさらにバイトコンパイル)されるので、シュガーシンタックスなlispともいえるかもね
119デフォルトの名無しさん
2025/10/12(日) 17:32:03.23ID:r9Vknw05 つまりlispのM式がpythonってことだよな
レスを投稿する
ニュース
- 【速報】10月の消費者物価3.0%上昇 [蚤の市★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★6 [BFU★]
- 日中関係悪化で「日本からもうすぐパンダがいなくなる」 中国SNSでトレンド1位に [♪♪♪★]
- 【コメ】価格「5キロ4316円」で最高値を更新…「おこめ券」が解決につながらない根本的な理由 コメ農家が危機感をあらわにする「離農」 [ぐれ★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ★2 [♪♪♪★]
- 中国「ごめんなさい😭日本さん和解して」高市「は?舐めてんのか?😡」日本人「高市さんカッコいい😍」 [441660812]
- 【悲報】「日本レコード大賞」、マジのガチで終わる [126042664]
- 高市早苗、会食せず議員宿舎に籠って勉強の毎日「飲んでる暇があれば、政策を練り、資料を読みたい」 [485187932]
- 企業「頼む!転勤を受け入れてくれ!初任給は1.5倍にする、転勤したら100万円やる」金銭メリットを手厚くする企業相次ぐ [903292576]
- 🏡
- お腹すいたのに、ごはんが食べられない
