Lisp Scheme Part41

2020/12/01(火) 23:12:43.95ID:Ul2ITO5q
スキーム手習いなんですけど
前の章までしっかり理解してから読み進めてくださいとのことですが
継続渡しから急に難しく感じます
そこまでが理解できてないってこと??
2020/12/02(水) 11:19:13.62ID:wCsCmSK2
>>254
私はその本を持っていないから具体的なことはわからんけど、
不慣れな初心者にとって継続渡しは実際に難しいと思う。
でも「難しい」だけで「理解できない」わけじゃないならたぶん前章まで一応の理解はできてるんじゃないかな。
2020/12/02(水) 12:39:58.54ID:2sTDa/BO
継続渡しスタイルに書き換える方法がわからないではなくて継続渡しスタイルに書き換える意味がわからないからかな?
2020/12/02(水) 13:45:58.76ID:wCsCmSK2
ああ。 なるほど。
継続渡し形式でプログラムを書くことは実際にまず無いし便利でもないので
その点では意味不明と感じられても仕方がないことではあるな。

後の話 (第一級継続) に繋がる前振りだと思うので、
この時点ではパズルとでも思ってとりあえずこなすしかないわ。
2020/12/02(水) 22:18:09.20ID:3rT4yRJc
>>256
そんな感じです
例で挙げられてる渡される側の関数が何したいのかよくわからないし
多分、教育的に意図的にそうしてるのかもしれないけど
その意図がいまいちわからなくてモヤモヤするんですよね

>>257
一応追っかけることは出来るんですが
直で継続教えてもらったほうがわかりやすいような気がするのですが…
つまり、読めてないってことなんだろうなと
259256
垢版 |
2020/12/02(水) 22:40:35.57ID:2sTDa/BO
俺はsicpでcall-cc出てきてもさっぱり理解できなかったけど、
onlispで継続の実装を読んでやっと理解できた。

継続でできることってのは超高性能goto(?)が使えるようになることなんだけど、
そのためには継続渡しスタイルで今までの状態(実際はクロージャだけど)の全部または一部を渡して計算をしていくんだよ。
渡されたクロージャのどれかを呼び出す事によって以前の状態に復帰できる。

みたいなことだったと思う。空覚えなんで誰か突っ込んでね。

それと本のわからんところのコードを貼れば誰か解説してくれんじゃない。
2020/12/02(水) 22:45:58.51ID:2sTDa/BO
超高性能gotoって書いてるのは普通の言語のgotoって同じ関数内でしかジャンプできないんだけど、
継続なら安全に関数間でもジャンプできるっていう意味。
2020/12/02(水) 22:48:34.44ID:2sTDa/BO
継続はわかってしまえば当たり前でどこにでも存在してるんだけど、
継続を考えたやつは本当頭いいわとおもった。
2020/12/02(水) 23:20:42.42ID:wCsCmSK2
>>258
「プログラミング言語 Scheme」や「プログラミング Gauche」でもそういう手順で説明されている。
ネット上で見つかる解説でもよくあるパターン。
http://www.shido.info/lisp/scheme_cc.html
http://www.nct9.ne.jp/m_hiroi/func/abcscm20.html

ようするに定番なんですわ……。
2020/12/03(木) 00:08:17.53ID:BSRv8eBD
なんでも継続
http://practical-scheme.net/docs/cont-j.html

はよ完成させて
264デフォルトの名無しさん
垢版 |
2020/12/03(木) 12:12:09.32ID:vc9+WZu6
Landin's J operator の糖衣みたいなもんじゃ?
call-ccって.
2020/12/03(木) 14:15:21.78ID:sf+VFKLQ
普段cl書きなんでこのまま動くか知らんが、雰囲気はたぶん
(define call/cc (lambda (func) (func (J (lambda x x)))
2020/12/03(木) 19:48:43.98ID:1MHSKMz8
>>258
継続渡しの初期の用例にヒューイットのアクター理論があるように
並行性が絡むと有り難いこともあるけど
Schemeの規格にそういうのがないから

Gaucheを使ったウェブアプリサーバーにKahuaってのがあったけど
あれが継続渡しを使ってたはず
267デフォルトの名無しさん
垢版 |
2020/12/04(金) 22:12:04.78ID:9AUT9QCq
エンジニアが教えるの下手くそな理由を論理的に解説してみた【教育の本質】
https://www.youtube.com/watch?v=3YwyYSj-k2s
派遣エージェントの言う事は9割ウソである理由【カモられない方法】
https://www.youtube.com/watch?v=8DxQFLAuFqo&;t=231s
IT業界のヤバすぎる落とし穴5選
https://www.youtube.com/watch?v=WPPCJ4o-mpA
絶対にエンジニアになってはいけない人とは【ハイクラス人材】
https://www.youtube.com/watch?v=kKUC7rZRUtc
りゅうけんKENTAマナブは怪しいアフィ勢だとベテランエンジニア(笑)に言われるらしいwww
https://www.youtube.com/watch?v=Cp7ByHiFk6Y
【個人で稼ぐ】会社を辞める前に習得しておくべきスキル5選
https://www.youtube.com/watch?v=8WB4O1V6YLg
【聞いてください】「会社員」という働き方の本当のヤバさ
https://www.youtube.com/watch?v=HbIAACbQkPc
サラリーマンが知らないフリーランスの真実
https://www.youtube.com/watch?v=vxVG8eAQbsc
2020/12/07(月) 13:18:23.95ID:kze+rPTU
結局call/ccは実装読んだ方が早い
2020/12/08(火) 00:25:26.96ID:g/rTchWW
そういう発想はschemeっぽくないと思う
これはコンピュータにかける魔法言語なんだからぁ
2020/12/08(火) 10:24:39.14ID:7buWiz9t
schemeは知らんがclでcall/ccエミュってるぞ、こういうのは勉強になる
閲覧無料の論文もたくさん出てくるし、確かrosetta code(だったか)に少し残念だけど動く実装載ってた気がする
デフォでdynamic scopeのclの方が(エミュる)のはむしろ簡単な気がする
2020/12/10(木) 03:16:14.79ID:FVBY7yTa
clデフォでdynamic scopeじゃないな
どういうcps実装なん
2020/12/10(木) 19:52:56.52ID:m5YUCflP
dr.schemeを起動したらada lavelaceが表示された。12月10日が誕生日らしい。
2020/12/18(金) 00:23:57.39ID:xE2tdWzM
3月にサスマンの新しい本が出ますね
2020/12/18(金) 00:35:54.39ID:wHl77nxB
Software Design for Flexibility
How to Avoid Programming Yourself into a Corner
https://mitpress.mit.edu/books/software-design-flexibility
2021/01/02(土) 01:05:03.40ID:wp0Bo1A/
>>6
この冬、職場から休暇をいただいたことをきっかけに a little schemer への再チャレンジを始めました
2週間では >>6 までは進めなかったけれども、しつこくてべたな精読を今後も継続することにしました‥‥個人的な話でごめんなさい
2021/01/02(土) 09:30:41.51ID:DXffwUjS
頑張れ
2021/01/02(土) 12:55:01.66ID:rf+zWHQf
2018 年の話題へスレ内でアンカーできるあたり、だいぶん進みの遅いスレだなぁ……

ところで先月、 Gauche の 0.9.10 がリリースされたよ。
2021/01/11(月) 12:28:40.23ID:evx8yw3j
最近Clojureをさわって思ったんだけど、コンスって必要?ただのリストじゃだめなん?
2021/01/11(月) 22:00:08.80ID:TgqHKx3G
最近はlistと言いつつ狭義のlist(linked)じゃなくlinked arrayな事が多いけどclosureもそれかな?(触ってないごめん
(三十年前の言語だけど)Pythonのコード読んだけどそうだったはず
計算量の議論なんかだとlinked listとarrayは一長一短ってことになってるが、アーキテクチャと殆どのデータの性質によって連結配列が実質万能なんで仕方ないね
抽象データ型としてcons/car/cdrというインターフェイスを提供してるなら十分lispだよ

consがなんでそんな大事なのかというと、普通に使われる抽象データ型の中では最も表現力が高いこと
単に自由に伸ばせるリストのようなモノでは、構文上バイナリツリーより複雑な構造は書きにくい(ポインタを駆使しない限り)
consが提供されていれば自然に平面DAGが、そしてちょっと読みにくくなる程度で任意のグラフが表現できる

化学構造やグラフをconsで扱ってるけどほんと便利だよ
2021/01/11(月) 23:51:15.24ID:TgqHKx3G
書きにくい/やすい、ってのは環や分岐がcarとcdrとconsだけで書けるって意味ね
これらのアクセサが提供されていない言語、例えはPythonやcではリストのインデックスに対応する参照/ポインタを明示的に取り出して記録し、アドレスを格納する必要がある
またアルゴリズムにかける時に素の型とポインタ型を区別して場合分けする必要まである
そのまま文字列として吐くのも実装しなくていいし(リンク先のインデックス表示が読みやすいとは言わないが)

PythonなんかだとオブジェクトがリッチなのでnetworkXのような巨大なライブラリを使えば木を超えた表現も自然にかけるので、一時浮気をしたが…


形式言語の分野だともう線形な文字列や二分木の括弧文法は研究され尽くしてるので、グラフ文法なんかが最近流行ってlisp系言語で論文書かれてるね
2021/01/12(火) 00:03:51.23ID:XqNkUArk
連投してごめんだけど、環や分岐がポインタ使わず自在に描けるのはかしこいsetfの寄与もある、って書き忘れてた(schemeはset-cdr!だっけ)
念のため
2021/01/13(水) 22:45:17.14ID:c60O+Iz7
>>279
興味深い内容をありがとう
ちょこちょこ遊んでいるだけなので到底そこまで使いこなせる気がしないけど、
データをプログラム中にストレートに表現して操作できるというのはよく分かる

他の言語だとデータを保持するためにわざわざクラス設計からしないと
いけないような強迫観念にかられるけど、lispはそういう気にならない
2021/01/14(木) 12:13:04.15ID:/NlgSZrU
データ型を定義しないのはトイプログラムだけだけどな
Lispはリストだけ使うのが通だとか善意で広めないでくれよ
2021/01/14(木) 22:43:13.17ID:9qLPLWCT
(カッチリした型を中心にする言語に比べれば) 最初はラフに
書き始められるというのはあると思うよ。

でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。
人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、
雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、
試行錯誤で弄ってるときと同じノリでどんどん拡大していったら
すぐわけわからんようになる。

世間で思われているよりは型定義はすると私も思う。
2021/01/15(金) 01:43:39.29ID:Hai3vgIl
そういう後付けのボイラープーレトにはCLOSやジェネリックよりコンパイラマクロが便利ね
2021/01/15(金) 21:24:11.84ID:6113KkR6
ここでいう型定義はdeftypeのことを指しているのでしょうか
2021/01/16(土) 09:43:26.51ID:uH9KWN6j
Common Lisp でなら deftype とか defclass とかいったものを使うことになるんかな。
私は Scheme しか知らんからよくわからんけど。
2021/01/17(日) 08:06:30.53ID:MtDeBO+C
>>285
嘘でしょ
人口無能が生成した文かこれ
2021/01/17(日) 11:47:31.37ID:9ajuvsmH
>>288
defgeneric/methodは勢いで書き上げた触りたくないコードに機能追加するにはコード触らなくちゃならない
型の付いていない複雑なconsはどうせdestructuring-bindして振り分けるしかないんだから分けてdefmethodする利点もない
define-compiler-macroなら一切既存のコードに触れる必要は無いからすごく便利だよ
既存のライブラリに手を入れたいけど、直接書き換えるとアップグレードで無かった事にされるから嫌、って時にも活躍する

もちろんリファクタリング出来るならした方がいいけど、取り敢えず動けば良い時の話ね
2021/01/17(日) 12:14:47.80ID:fZnccXPg
この場合、 alist はどっち側に分類されるのかな…
個人的にはだいたい alist で済ませてるけど。
2021/01/17(日) 12:16:55.56ID:ERThMJgw
Lisp 的なスタイルだとかなり短いサイクルで開発が進むので、
リファクタリングしないまま手の付けられないほどグダグダになった状態は単にサイクルを
回すのが下手なように思うんだけど。

まあ上手くいってないときでもどうにかする方法があるのはありがたい話ではあるけどさ。
2021/01/17(日) 12:22:48.91ID:16Ro+9sx
既存のコードには手を入れず振る舞いだけに着目して付け足して行くってスタイルはaspect oriented programmingとか言うんだっけな
まあ盲で付け足してゆく事と同義ではないが
2021/01/17(日) 12:36:52.37ID:16Ro+9sx
>>290
plistの方が好きだな、pprintでkey-valのカラムに並べられるし、alistが要求されれば一段flattenすれば済む
consの数も同じだし好みでは

ただvalがlistだと(a . (b c))=(a b c)とformatされてしまうので(a . ((b c))) = (a . (b c))と書いてる
aとリストのペアなので意味的にも正しいはず
294289
垢版 |
2021/01/17(日) 12:38:34.26ID:16Ro+9sx
最後は(a (b c))が正しい、.が余計だった

なんかid変わってたけど289です
295289
垢版 |
2021/01/17(日) 12:54:42.47ID:16Ro+9sx
真意を掴めてなかった感がある
alist-pとplist-pを定義してる、よく見るし受け入れられてるイディオムだと思う
deftypeしておくといい
すると振り分けをdefmethodに任せる事が出来る
2021/01/17(日) 22:27:16.25ID:MtDeBO+C
deftypeしたtypeはclassじゃないからdefmethodできない
コンパイラマクロはプログラムの意味をかえたらいかんし
パッチするなら別定義のファイルを追加でloadすれば上書きされるのでコンパイラマクロする意味0
嘘ノウハウいらないです・・・
2021/01/17(日) 23:38:13.35ID:4VqziDiv
>>296
そうだっけ、ごめん確認してきます
2021/01/20(水) 01:48:17.88ID:9Gv1v6nA
alist vs plist はalistの方がassocが(lisp的な意味で)簡潔になるから?で一票
assoc[x;y] = eq[caar[y];x] → cadar[y];T → assoc[x;cdr[y]]]
M式、[x→y; ...はapplyによってS式(QUOTE (COND (x y ) …に展開される

http://www-formal.stanford.edu/jmc/recursive.html
pdf17p

evalのボトムケースでもある大事なassoc、俺にはplist版は思いつかない
evenpが欲しいところだけど算術の定義がまだだし…

clのcx^nrがn=4までなのもcaddarまで使ってるからだろうかね
2021/01/20(水) 01:59:40.44ID:9Gv1v6nA
ffとかappqとか見慣れない面白関数出てきて面白かった
first/restは単なるエイリアスでなくL-exp(線形リスプ?)における相似物としてちゃんと別に定義されてるとかも

あとpairがpairlisに改称した理由とか気になってる、次は1.5マニュアル読むか
小並感
2021/01/22(金) 02:54:51.68ID:GlnM3g/q
consesのカッコのネストを無視して初めのシンボルを返すffは、左端の簡約だけで導出が決まる特性を持つコンビネータ計算(SKなど)にとても重宝する関数だよ
applyを.と見なせば(論理学記法で)SKx = ((S K) x)はcons((S . K) . x)と等価
.
/ \
. x
/ \
S K
(ff ((S . K) . x)) ; => S

ffでSを得て、そこへのaccessor は(dfs 'S '((S . K) . x))で4行程度で実装出来る、carで潜る時にはpush 'car、cdrならpush 'car、その枝で見つからなかったときにはpopでSへのアクセサ(car car)が得られて、そのノードを公式に従ってsetf '公式すれば導出完了

lispと言えばラムダってイメージあるとおもうけど、むしろコンビータと相性が良い、特にclのラムダは細かなコントロールを求めた代償として明示的なapply/funcallが必要だからなあ
あとdotprintとか定義しとくと便利ね
2021/01/22(金) 08:32:42.17ID:hEWi2BMh
jmcはラムダ教徒だったろうになあ
いくらlispが形式言語処理向けとはいえ、機械的に処理するには置換が面倒過ぎる
2021/01/26(火) 22:54:00.78ID:+x6NTk+g
>>299
app(ly)-q(uote)?直訳するとこんな感じか

(defun appq (m)
(cond (null m) nil)
(t (cons (list 'quote (car m)))))
(appq (cdr m))
>(appq '(a b c d e))
; ('a 'b 'c 'd 'e)

(jmcの)applyは関数fをコレにconsしてS式 (#'f 'a 'b 'c ...)を得ると
common lispではformの先頭は関数名かラムダじゃないとダメなのでevalには'funcallか'applyを追加でconsする必要があるので、組み込みevalを使う限りは循環定義だな
2021/01/26(火) 23:06:50.96ID:+x6NTk+g
誤解してた
M式apply[f; args]の引数はシンボルなのでS式のapplyに渡ってくるのはfunction fじゃなくてシンボルfか
グローバルでdefunしたfなら多分呼べるはず、試してないけど
2021/01/28(木) 03:52:37.47ID:52TUUvk8
cons-car-cdr公理主義者への反発として最近妙に感心してしまったポエムを貼っとく
https://arxiv.org/pdf/1507.05956
本当の基本関数はc、a、d、rでした

paulのon lispに載ってる(explode 'bomb) → (B O M B)がハマりそうと思い、実装してみたは良いけどなんに使うんだコレ…
楽しいからいいか
2021/02/06(土) 00:01:36.05ID:7zAE1WPt
cxrとconsは表裏一体なので片手落ち
r•c = idになるからこそ
car•cdr = c•a•r•c•d•r = ca•(r•c)•dr = cadr
と読める訳であって

cxr • cons= id を成り立たせるにはcxons = id となるようなo, n, sも定義せねばならない

後はまかせた
2021/02/12(金) 22:14:51.72ID:rBgVuMm7
わたばさんのところ見て知ったけど
井田昌之先生のHPで
bit 1996-4、5月号、Guy L. Steele Jr.『Scheme 過去◇現在◇未来』(訳 井田昌之)
などの歴史資料PDFが読めるね
2021/02/15(月) 14:15:58.52ID:GNSRFiac
Racket のメジャーリリース。
https://blog.racket-lang.org/2021/02/racket-v8-0.html

ついに Chez Scheme の実行エンジンを組み込んだものがデフォになった。
2021/02/16(火) 17:43:38.86ID:05vP8Ot3
普通のやつらを超えろおじさんのarcヲチするのにちょっとracketしてるけどフレンドリーかつ尖ってるね
どんどん尖ってゆけ
2021/02/16(火) 18:27:11.46ID:6gVrqubW
グラハムさんは今はBel言語では
2021/02/16(火) 19:02:11.29ID:05vP8Ot3
>>309
現在の俺がもしjmcだったら?とか言い出したので見限った
今ざっと目を通しても目新しいところ、興奮するところが全然ないんだなこれが
https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt
ofは便利くらいの感想しか出ない
あと整数nをnth nへオバロは、逆なんじゃないかな?
push n へオバロならforthライクに発展できるのに
おじさんは自分に求められてるのは変態テクニックやインスピレーションだと自覚しろ
2021/02/16(火) 19:13:16.29ID:RZ7vFu0i
>>309
グレアムの方が近いはずだが
2021/02/16(火) 21:26:58.99ID:6gVrqubW
>>310
言語が自分自身を書くことが出来る、ということをよりうまくやれれば
ってことでしょ
lisp1.5マニュアルを彼なりにアップデートしたいんだよ
2021/02/17(水) 03:29:33.90ID:PFWUQJwx
関数やマウロの実体もリストというのはだいぶん振り切れていると思うがおまえらには目新しくはないのか>bel
2021/02/17(水) 03:49:42.83ID:KZUgEKHz
>>313
むしろ昔ながら/手抜きlispがそんなもんでは
lit(eral)はマッカーシーのappqだし、elispは対話モードならちゃんとcarでlambdaが取れる
2021/02/17(水) 04:32:37.72ID:KZUgEKHz
後は語り尽くされたlisp1/2の分化の話になるのでその辺はググって
2021/02/17(水) 04:57:15.21ID:KZUgEKHz
補足
elの挙動は完全にバグいので忘れた方がいい、一方で関数実体はリストのサブタイプではないとヒューリスティックに判定されるのでそもそもill-defined
2021/02/17(水) 18:52:29.11ID:zk5Pyjxw
アラン・ケイもそれを自分でやってみようとすることが重要だと言ってる
原始関数が変われば何もかもが変わるわけだから
変わった世界が良いのか悪いのか、は自己言及がどれだけよく出来てるかどうか
ということだと思うんだけど
つまり、僕らが使いやすいと感じるかどうかではなく
未来にそれに慣れた人たちがより効率の良い開発が出来るかどうか

で、グレアムは自分なりにBelは良く出来てると思ってるんだろう
オレにはよくわからんがw
2021/02/18(木) 00:14:56.95ID:k6/K1ymI
グレアムが現役プログラマだった時代なら実務に全振りしただろうが、今は投資する側の立場だからね。
投資に技術的な知見を活かしてはいるんだろうけど、道楽が出来るんだろう。
2021/02/18(木) 01:58:35.80ID:lD1LwcuS
レディットで実装した人いるね
確かに使われてみなければ分からん事もたくさんあるので使ってみたい、まあ、そのうちね…

原典からlit=appqを引用(復古)するのなら、read&eval結果を示すのでなく、各々の挙動についてイメージできるように書いてほしい
とりわけlitは、302のレスにあるdefunをdefmacroに置き換えた定義(その場合(lit a b c)と記述できる)であっても、
より強力なreader macroによる、定義(e.g.quote)でも実装できるのだから、なおさら
2021/02/18(木) 02:07:31.14ID:lD1LwcuS
でもグラハムは尊敬してるよ、著書もエッセイ以外紙版で全部持ってるし、啓蒙家としての実績を差し引いてもトップクラスのハッカーであるのは間違いない
2021/02/18(木) 03:15:27.49ID:sRdwF113
>>319
言葉足らずでした
clは基本的にapplyへマクロを渡せないから、or/andに対応したsome/everyが提供されてるわけだけど、展開効率を無視すればread時に関数へすり替えるワークアラウンドで実現できる
そこが売りなんだからもうちょっと仔細を、と
2021/02/18(木) 06:11:12.33ID:FG25zgsT
ゲイツ、ジョブズと同い年なんだよな
2021/02/19(金) 11:35:19.85ID:VprFkjBX
・知能は高い
・こまかい技術用語をちりばめてくるので詳しそうと思わせる
・言語仕様と歴史的経緯と個人研究の区別をつける意識がない
・検証するとトータルとしては話が嘘

こまったもんだ
2021/02/23(火) 02:25:08.36ID:VIkkm8/q
関数がリストで表せるからatomじゃないってのは気持ち悪いな
別にどんな言語であろうと関数定義はトークンの並び≒リストで書けるわで
論理学では関数や述語はそのシンボルと引数のリストとして書かれるにも関わらずatomと定義される、あんまり明るくないんでなんでそうするのかは知らんが
2021/02/23(火) 03:38:31.96ID:aA0AvmX/
ELisp だと、一部の関数は本当にリストとして保持されてたりするんだよね。
ラムダ式そのままの形で。
だから car や setcar とかで中身にアクセスできちゃったり。
2021/02/23(火) 04:39:24.64ID:VIkkm8/q
elのfunctionはid関数っていうね…知りたくなかった
関数定義をいじくりたいならformとして持ち回って、invokeする時にfunction噛ますのがベストプラクティスと思うよ、わりとよく見る
2021/02/23(火) 04:45:23.10ID:VIkkm8/q
あ、後半はちゃんと関数を理論と整合するatomとして扱うlisp(clとか)への言及です
2021/03/14(日) 21:42:37.21ID:ykHNi/i1
linuxでdr.schemeがちゃんと表示してくれなくて追加パッケージも入れられない
(表示が崩れてまともにサブウインドウが開いてくれない)
どころか終了すらまともに出来ないので、、、
探したらgeiser(Emacs拡張?)というのがあって
それ入れたらEmacsからracket使えるようになった(≧∇≦)/
追加バックはコマンドラインから入れられた
これで充実した春休みが送れそうだぞ
2021/03/15(月) 17:40:08.88ID:mTFo5Bvn
Happy Hacking!

maclispのpitman/moonual読んでるけどシンボル操作系ユティリティが充実してて楽しい、ちまちまclへ移植
そんなのもうたくさん誰かやってるだろって?絶対にググらないぞ
2021/03/15(月) 17:56:03.28ID:iXam+Zcq
誰かがここに検索結果を貼る可能性を考えなかったのが敗因でした
2021/03/17(水) 18:41:37.66ID:e+VOZDZq
gosh> '()
()

racket> '()
'()

(。・_・。)…?
2021/03/17(水) 19:32:10.48ID:sFqg8ROj
>>331
Racket でも (write '()) としたら quote は付かない。
repl が quote を付けてる。
空リストの外部表現は () が正しい。
2021/03/17(水) 21:49:16.02ID:e+VOZDZq
racket> '()
'()racket> '()

になる……
2021/03/17(水) 21:49:52.85ID:e+VOZDZq
訂正

racket> '()
()racket>

になる……
2021/03/17(水) 22:26:44.32ID:e+VOZDZq
すんません、再度訂正

racket>(write '())
()racket>

になります
2021/03/18(木) 00:10:13.29ID:3weRgygV
replに代わってrpeplを提唱したい
意外とreadは仕事をしている
clだけどread-from-stringにはいつもお世話になる
2021/03/18(木) 01:34:59.90ID:4J+m36hV
>>333-335
モンキーパンツかよ。
2021/03/18(木) 21:03:14.59ID:jgE2sGe4
連投してスレ汚しすんませんでした

こんなのあるんだね
https://en.scratch-wiki.info/wiki/Snap!_(programming_language)#First_Class_Continuations
Snap!: Scheme Disguised as Scratch
https://youtu.be/wtUMvx9mvm4
339デフォルトの名無しさん
垢版 |
2021/03/19(金) 14:16:23.58ID:6iPIiOby
Lispへの憧憬
https://xtech.nikkei.com/it/article/COLUMN/20090324/327085/

Lispに対する偏見、エリートコンプレックスを赤裸々に吐露していて参考になった
すこし弄れるからといってエリート意識持っていたりするのも同じ事なんだよね
そこに本質的な差は無いし、能力的な差も殆どない
2021/03/19(金) 19:07:28.92ID:VzIhkYvX
>>339
なんかカッコいい感じは分かるけど、なんでそうなのかは分からん
Fortranはすげー科学者がみんな使ってて技術的にも常に(今も、Fortran2020を見よ)最先端だけど、別にFortranはカッコよくないと思うし
どういう心理なんだろ
2021/03/19(金) 19:12:24.45ID:VzIhkYvX
思うに、使ってる層のエリート度で考えるとFortranと変わらん
思うに、単純にコードの見た目がalien technologyっぽいかだろ
by an alien
2021/03/19(金) 19:13:41.78ID:VzIhkYvX
大事なことなので2回思ってしまった…
見た目は大事ってことじゃね
2021/03/19(金) 19:21:49.87ID:VzIhkYvX
ところで記事に挙がってるJava、cl/scm、(モダン)Fortranの全てにガッツリ関わってるSteele先生すげーな
2021/03/19(金) 20:26:43.21ID:6zFezuIX
十年前の記事だけど状況はだいぶん変化したのでLispへの憧憬などというものがもう成り立ってない・・
十年前に書き込んでくれ・・
2021/03/19(金) 21:04:26.12ID:RMQx/osX
なあにlispの本質は60年前から変わってないさ

lispに直接関わる事じゃないんだけど、ちょっとよろしいかしら
ISLISPなるものの規格を読むのにjisc.go.jpに登録しなくちゃならないんだけど、pcからもスマホからも"障害が発生しました"と怒られて進めないんだけど、俺だけ?
ちなみに一月前にも試して同じだった
フリーな規格なのでhtml版読めるとこもあるけど、一応pdfもと
2021/03/19(金) 21:11:14.03ID:RMQx/osX
一部の日本人が布教に熱心で検索にかかりまくるから胡散臭くて敬遠してたんだが、少なくとも初期はcl委員が関わってるし由緒はあるんだよな
無難なlispだが、大体スーパーセットなclにアクティブですごい処理系沢山ある限り絶対流行らんが

あんまり布教頑張るとネガキャンに見えるぞ…
2021/03/20(土) 01:03:24.86ID:iR2BedGg
>>338
vimだと階層に合わせて背景塗り分けるプラグインとかあるね

Peirce(パースの法則の人)も初めはlogical graphと言う円で囲む二次元言語を考えてたんだが、今言及されるときはテキスト表現で()になってる(そして読みやすい)
歴史はめぐるってか

ちなみにlispと見た目が似てるからってパーサを書いたが、やはり親和性が高い
面白いのでオススメ
2021/03/20(土) 01:11:33.86ID:iR2BedGg
コードエディタじゃなくて残念なんだけど、愛用してるOneNoteのテキストのドラッグが()ごとドラッグしてくれるのに気づいた
まあいつものMSのお節介なんですけどね
本来の用途である物書きでは選択範囲を自由に決めさせてくれないイライラ要素
2021/03/20(土) 01:12:20.50ID:iR2BedGg
(特に日本語!)
2021/03/20(土) 01:20:25.61ID:O2z0YRFR
規格っつーのは多少の粗があっても皆で統一したほうが便利だというもんなんで、
ユーザー規模がないものは規格化が活きてこない。
ISLISPでコードが書いてあってもオレオレLISPで書いてあるのと大差ないんだよ。
共通の知識になってないから。

ISLISP の仕様自体が悪いわけではないし劣っているわけでもないと思うんだけど、
最初に広められなかったらこれから広まるってことはもう無いんだろうな。
それはそれでいいんじゃね。 細々とやっていくのが好きな人もいるんだろ。
2021/03/20(土) 01:39:51.02ID:SzdWYV/s
30年事足りるほど十分カバーしてるclってすごいよな(実働は1980年初頭だからもっと?)
まあマルチスレッドあたりの仕様がバラバラなので、そこをしっかり決めてくれるMACLISP風規格があれば、俺はポッと出でも支持するんだが
2021/03/20(土) 02:00:29.14ID:O2z0YRFR
>>351
Scheme で言う SRFI に相当するものとして Common Lisp にも CDR (Common Lisp Document Repository) があるんだが、
Common Lisp は Scheme よりも実務主義というか話し合いするよりも動くライブラリを置いときゃいいだろみたいな文化があって
共通仕様の策定に熱心ではないような気がするな。
2021/03/20(土) 02:13:36.08ID:SzdWYV/s
>>352
今誰が主導してるかと訊かれて、答えに詰まるのは特異な状況だとは思う
商用(持ってないけど)ですら保守的にみえる
ぬるま湯に浸かるのを良しとしないISLISPの人を讃えたい

フリーでまともな処理系待ってるから出来たら起こしてくれよな!(讃えるだけ)
2021/03/20(土) 02:19:30.20ID:SzdWYV/s
こんな感じの人現れないかな
https://i.imgur.com/h6qXF7E.jpg
2021/03/20(土) 03:36:41.06ID:y8ipzAe/
でもミンスキーは言ってたよ
表情や仕草が人間ぽいものはたくさん作られたが、
福島の震災で作業できるロボットは創り出せなかった
もう何十年も止まったままだ
って
2021/03/20(土) 03:47:36.11ID:J9z4ezp0
SRFI出るや否や写経と称してシュババとクオリティ実装するclerが結構居るし、必要とあらば足りるしな
quicklispにも結構載ってるよね、clに混ぜるのは違和感あるからあくまでお手本としてアイデアを拝借するだけだが()

scheme処理系も多くのSRFIを標準で揃えてるわけじゃないから(ポートは容易だろうが)、やっぱまとめ役が居ないことに尽きる

qlがやる気出さないかな
2021/03/20(土) 15:18:16.80ID:O2z0YRFR
>>353
Common Lisp や ISLISP のワーキンググループは解散してるはず。
規格としての主導者は現時点で存在しないよ。
制度の詳細は知らんから再開できるのかもしれんけど。
2021/03/20(土) 15:25:35.53ID:O2z0YRFR
SRFI や CDR は (英語がわかるなら!) 誰でも提出できるし、
議論が尽くされたと思ったときに決定稿に (あるいは撤回を) していい。
ユーザーコミュニティの中に文書の置き場と相談の場所があるだけなので、
誰かが可否を決定してるわけではない。

主導者がいないっつってもコミュニティで議論してたらだいたい「いつもの面子」みたいにはなるだろうけどな。

つまり SRFI や CDR で決定稿になっても権威が与えられるわけではないので、
そんなプロセスを経ずとも適当にライブラリを作って皆が使ったり使わなかったりして
デファクトスタンダードが決まっていけばそれでいいんちゃうの?
という考え方もあって、 Common Lisp は割とそういう空気っぽい。

Common Lisp のことはそれほど知らない (Scheme についてもあまり知らないけど)
ので間違ってたら指摘してね。
2021/03/21(日) 02:50:10.72ID:GD6fpf+y
ところで IEEE の Scheme は期限を過ぎても更新せずにそのまま廃版になってたみたいね。
https://standards.ieee.org/standard/1178-1990.html
知らんかった。
元から参照しているやつはあんまりいなかっただろうし
ステータスが Withdrawn になったからといって何か変わるわけでもないけどさ。
2021/03/24(水) 15:11:25.30ID:HKW94SjI
>>338
https://i.imgur.com/I8gxrwl.png
2021/04/04(日) 11:13:09.40ID:dz+wreGq
lisp machine触ってみたいなと思ってたらとても素敵な物が手軽にあった!
https://archives.loomcom.com/genera/genera-install.html
2021/04/04(日) 22:30:38.28ID:9kDPlOMr
素敵!
2021/04/05(月) 19:12:20.11ID:DVkxDxiZ
わだばさんのところに紹介があった
https://g000001.cddddr.org/3690710797
2021/04/05(月) 21:56:17.84ID:i9PX2oQn
generaはwikipedia読んだ程度だけど随分先進的そうだ
mac/lml/clまぜこぜだそうな
>>360みたいな感じでマウスで弄ったりカーソル置くと引数やdocがポップアップしたり
オンラインヘルプ大好き人間としては興味あり

まあ今時のソフト無くてもテキスト書くくらいなら十分使えそう
試したらレポる(たぶん
2021/04/05(月) 22:16:42.87ID:i9PX2oQn
98年まで開発(メンテ?)されてたのに驚き
2021/04/05(月) 23:14:43.49ID:Z3TcF1gw
>>361
詳細にドキュメント化されていて迷うことは無さそうだけど、これで手軽ってどんだけ良く訓練されてんだよw
2021/04/05(月) 23:16:47.02ID:wm1TeUKF
lisp machine/generaではcやFortranもlisp実装なんだよね
性能はさておきとても興味深い
2021/04/05(月) 23:42:14.84ID:i9PX2oQn
権利的に大丈夫なのかが気掛かりだ
Symbolics(のようなもの、symbolics-dks.com)はまだホームページ持っててソフト売ってるわけで
実働してるかは怪しいが

lisp machineのVMもいつまで動くやら、動作報告のあるブロブのビルド方法は不明、linuxのバージョン上がればバイナリ互換性が失われるかもしれない
近いうちにロストテクノロジーになるなこれ
2021/04/06(火) 00:03:42.02ID:4WR5kIDO
linuxも一応abiの規定あるけど同じアーキテクチャでも違うディストロでそのまま動くとは限らんしな

とりあえずクローンした気がする(気がするだけ)

winならx86系でさえあれば安泰なんだが、generaのXインターフェイス使ってるぽいし無理そうだよなあ
うちでは代々バイナリをコピペし継いだoffice95がwin10でバリバリ元気に働いてるよ
2021/04/06(火) 19:03:06.66ID:9PToVtUo
Movitz
https://common-lisp.net/project/movitz/movitz.html
今は開発してないらしいが
2021/04/06(火) 19:36:16.54ID:R6aCJEvU
Alto→NextStep→OSXがコンシューマ向けになって成功してるのに
Interlisp-D、Symbolicsは(パンピー的には)伝説のマシンのままなのはどうしてなんだぜ
2021/04/06(火) 19:41:57.45ID:R6aCJEvU
Next, OpenStepを元にしたGNU/Stepというのもあるけど
GNU/HURDが完成したら、Lispマシンぽいことやるんでしょうかね…
Objective-Cならぬ、Lispective-C(仮称)で
2021/04/07(水) 02:31:56.66ID:nO5/cs4F
>>372
そういう考え方リスペクトする
2021/04/07(水) 22:28:51.32ID:0y6O4yId
GNUは、というかストールマンが目指してるのはフリーな(自由な)CとLispの環境だと思うんだよね
2021/04/07(水) 22:50:57.97ID:BC88Bm4+
guileをゴリ推してるけどなにそれ状態だよなー
特段良いとは思わないけどlisp押ししてくれる貴重な権力者
正直C協調性だとか拡張向きだとか今時普通なんで売れないと思います
2021/04/07(水) 22:52:05.81ID:BC88Bm4+
応援のつもりで一応入れてる
ちゃんとダウンロード数カウントしてるか知らんが
2021/04/08(木) 01:27:32.57ID:d0EnvaGP
Guile も良い処理系だよ。
Windows ではいまいち使い勝手が良くないからワイはあまり使わんけど。

GNUプロジェクトとして開発しているだけあって、
ライセンス的にもビルドプロセス的にもGNUのソフトウェアとは連携しやすいから
個別のソフトウェアとしてどうこうというだけでなく
GNUプロジェクトであることに意味があるんだと思う。

ただアプリケーションの拡張用に Guile はリッチすぎる気がする。
ライブラリはホスト環境 (アプリケーション) 側で用意するから
言語処理系の側は単純なほうがありがたいことが多い。
GIMP が TinyScheme をベースにしてることからもわかるように、
拡張用言語はこんくらいの規模でいんだよな。
2021/04/08(木) 18:16:52.22ID:IR9u3KhO
GNUといえばEmacs
最も普及しているLisp環境
379本田
垢版 |
2021/04/09(金) 05:55:12.32ID:U7WaDuwU
>>361

GitHub - lisper/cpus-caddr: FPGA based MIT CADR lisp machine - rewritten in modern verilog - boots and runs
https://github.com/lisper/cpus-caddr
2021/04/10(土) 00:08:20.59ID:pgV1eSpW
guileはdicoと使うと便利ぞ
dicoはdictと喧嘩しやがるアレなやつだからだが
2021/04/10(土) 00:11:58.64ID:pgV1eSpW
>>379
既にハードも気軽にお手製できる時代だったな…
やったことないんでどこまで気軽か知らんが
382本田
垢版 |
2021/04/11(日) 07:05:56.11ID:vMH2MoUG
>>381
Unlambda.com | Main / Cadr
http://www.unlambda.com/index.php?n=Main.Cadr
Retrocomputing - MIT CADR Lisp Machines
CADR Emulation
2021/05/04(火) 13:30:15.28ID:fppjg2ZR
LispとCの融合ということだと、KCLはLispective-Cなのでは
384本田
垢版 |
2021/05/06(木) 21:07:40.28ID:0MCggaNl
>>377
Guile-based Emacs
http://www.mit.edu/~raeburn/guilemacs/
2021/05/08(土) 16:12:40.38ID:HQQ9X3gD
Racket Programming the Fun Way: From Strings to Turing Machines
https://nostarch.com/racket-programming-fun-way
386デフォルトの名無しさん
垢版 |
2021/05/25(火) 18:47:13.72ID:JJYQeYh+
pというprocedureが何回呼び出されたかを出力したいと思って以下のコードを書きましたが、意図通り動きません。
どうすればいいですか?

(define (cube x) (* x x x))

(define (p x) (- (* 3 x) (* 4 (cube x))))

(define (count_p angle n)
(if (not (> (abs angle) 0.1))
n
(p (count_p (/ angle 3.0) (+ n 1)))))
2021/05/25(火) 18:50:37.18ID:JJYQeYh+
あ、分かりました。
2021/05/25(火) 19:30:00.29ID:xQ/lxTUk
そうか
389デフォルトの名無しさん
垢版 |
2021/06/28(月) 10:43:13.88ID:TRKsA7C/
Schemeで

(newline)
(display 1.0)

のように複数の文?をつなげて実行することができます。

x が正のときに (newline) と (display 1.0) を続けて実行するようにするにはどのように記述すればいいのでしょうか?
390デフォルトの名無しさん
垢版 |
2021/06/28(月) 10:44:02.91ID:TRKsA7C/
>>389

(if (< 0 x) …

と if を使いたいです。
2021/06/28(月) 11:02:31.15ID:PxTgcihw
(if (< 0 x) (begin (newline) (display 1.0)))
392デフォルトの名無しさん
垢版 |
2021/06/28(月) 11:03:43.42ID:7XtL7Dy7
(if (< 0 x)
((lambda ()
(newline)
(display 1.0))))
2021/06/28(月) 14:39:39.18ID:TRKsA7C/
>>391-392
ありがとうございました。
2021/06/28(月) 20:21:41.41ID:3DnBzo4y
condでいい
(cond ((< 0 x) (newline) (display 1.0)))
2021/06/28(月) 21:54:24.27ID:PxTgcihw
今度でいい?
2021/06/29(火) 12:31:46.50ID:aO3q0Gho
implicit progn(begin)が欲しいならwhenとunlessを積極的に使おう
2021/06/29(火) 12:46:42.78ID:aO3q0Gho
色んな書き方が出来るからこそ、most specificなものを使おう
398デフォルトの名無しさん
垢版 |
2021/06/29(火) 13:29:59.66ID:0N5v+m2R
二年前から、どうでもいい駄文が多すぎだな。
2021/06/29(火) 17:27:58.16ID:cKUJRDcK
へーじゃあ君は2年間何してたの
2021/06/29(火) 18:52:26.88ID:yETyFiIt
lispの質問が減って自己紹介みたいな駄文が多いんだよ
2021/06/30(水) 02:43:05.48ID:HrMy06Ib
結局 most specific なものは何だろう
2021/06/30(水) 03:40:26.71ID:hbO/nBwY
when でいいんじゃね
403デフォルトの名無しさん
垢版 |
2021/07/07(水) 05:18:16.92ID:Jk8/Aq6G
stalin って今も最速?
2021/07/07(水) 20:28:05.30ID:Kq6g4muF
スターリンは残酷に最適化するからな
2021/07/07(水) 23:24:28.15ID:690XxCxv
プログラムがr4rsで記述できていてシングルスレッドしばりの競争ならいまでも速い可能性はあるだろうな
だれか追試してくれよ
406デフォルトの名無しさん
垢版 |
2021/07/11(日) 18:50:40.89ID:aa3AN28M
(eq? '(a b c) (list 'a 'b 'c))

を実行すると

#f

となるのはなぜでしょうか?
2021/07/11(日) 19:31:30.75ID:19O1KSs3
eq?はメモリ上の実体が同一かどうかを返すので、値を比較したかったらequal?を使えばいいよ
2021/07/11(日) 20:25:33.03ID:aa3AN28M
>>407
ありがとうございました。
2021/07/12(月) 20:42:52.24ID:O01P9WLY
named let使おうと思ったらCommon lispには無かった
2021/07/12(月) 22:45:17.08ID:u5zIJQm8
(let loop ((n 10)) (if (> n 0) (loop (- n 1)) #t))

(((lambda (loop) (set! loop (lambda (n) (if (> n 0) (loop (- n 1)) #t))) loop) 'dummy-label) 10)
こういう仕組みだからCLで書けなくもないと思うけど
2021/07/12(月) 23:10:07.08ID:eka9NNGK
現代のlispハッカーはみんなloopマクロ使ってるよ
2021/07/13(火) 08:34:35.37ID:egse1qJT
named-lambdaならalexandriaにある
2021/07/13(火) 10:27:19.42ID:A078Hhon
Schemeで、

(+ '3 3)

を評価すると

6

が返ります。

'3 は「3」というシンボルを表わすのではないんですか?
2021/07/13(火) 11:05:03.90ID:jDPJbhfl
>>413
クウォートは評価を抑制するという仕組み。
データ (S式) の世界がプログラムの世界にマッピングされるときにデータの世界のままで留め置く感じ。

識別子はデータの世界ではシンボルなので、(変数として) 評価しなければシンボル自体となる。
3 はデータの世界でも数値の 3 であり、数値はプログラムの世界で評価すると
それ自体になるという自己評価 (self-evaluating) という規則の対象なので
3 はクウォートを付けても付けなくても評価結果は数値の 3 。

ちなみにベクタリテラルが自己評価の対象になるかどうかは変更があったので注意が必要。
R5RS/R6RS では自己評価の対象ではないのでクウォートが必要だが R7RS では自己評価になる。
まあほとんどの処理系は適当に許容したりもするんだけど。
2021/07/13(火) 16:32:31.52ID:NGIJbx4Y
number?で#tなだけで数値をシンボルで実装した処理系もあるかもしれん
2021/07/13(火) 17:10:19.73ID:QSkHhbzy
小さい数値はヒープアロケーションせずにワードに詰め込む (ことで GC 削減して高速化を図る)
ような実装が一般的だったり、同じ内容の文字列リテラルを統合したりすることがある。

eq? が数値や文字列について処理系依存になっているのは
おそらくそういった最適化を許すための配慮なんだけど、
処理が遅くなってでも一貫した扱いをするというデザインを選んだなら
内部的に数値とシンボルと統合することも選択肢としてはあるかもね。

そうしてもユーザー視点ではたいして得なことはないんだけど、
アプリケーションに組み込んで拡張用言語として使うとか
だったらアプリケーション側の事情と馴染みやすいかどうかみたいな視点もあるし。
2021/07/13(火) 19:58:17.06ID:tejz1RXC
数字はreadした時点でnumberになる
それをquoteしてもnumberのまま
quoteするとはevalされないということだ
もちろんnumberをevalしてもnumberのままだ
2021/07/14(水) 06:57:41.65ID:O4vE2Kew
あっそうか
末尾再帰が仕様にないからloopを使うようになってるのかな?
2021/07/15(木) 04:52:42.37ID:eqEigNI9
逆やね末尾再帰でloopを代替できるからイキって仕様からloopを消したったのがschemeやからユーザーもイキるやで
2021/07/15(木) 06:43:25.74ID:S7wkmjz6
末尾呼び出しの最適化が至高の技術のように思っていた時期が僕にもありました
2021/07/15(木) 11:32:01.61ID:d93moyXm
末尾呼出し最適化はあくまでもセマンティクスの話であって、
ループ構文を避ける強い流れがあるわけじゃないよ。

do や named let くらいしか繰り返し構文が用意されてないのは
皆が合意できる仕様をまとめられていないという非常に単純な理由だよ。

R7RS-Large に入れるループ構文の候補としては
・ SRFI-42 (https://srfi.schemers.org/srfi-42/srfi-42.html)
・ foof-loop (http://wiki.call-cc.org/eggref/5/foof-loop)
・ chibi loop (http://synthcode.com/scheme/chibi/lib/chibi/loop.html)
が挙がっている。

まあまだちゃんと議論されてないので他の候補が出るかもしれないし、
結局何も入れないということもあるかもね。
2021/07/15(木) 16:04:48.23ID:MIyHkZEB
アキュムレータ加えて末尾再帰で書くよりはdoを好むわ
ロジックとしては全く等価だし、見やすい方がいい
2021/07/15(木) 16:12:57.83ID:MIyHkZEB
loopキーワードは:を付けてlisp keywordにすればビジュアル的に随分見やすくなるね

ところでloopの独特の言い回しはAlgol由来だと最近知った、downtoとか
esacやfiまで取り入れてたら投げ捨てるけど
2021/07/15(木) 16:15:28.68ID:MIyHkZEB
>>412
sbclが内部でnlet使ってるね
::で参照したりコピペしたりしてるわ

やっぱclに入れた方が良かったな
2021/07/15(木) 16:34:32.82ID:zKeMNTWP
loopしなくてもdestructuring bindやwithの為にloop使うのは我ながら良くないと思う
値を集める節がハマると簡潔に書けるのでつい
2021/07/15(木) 17:45:11.96ID:d93moyXm
慣れた Scheme ユーザーなら末尾呼出し (末尾再帰) になっているかどうかは空気のように判断できるけど、
do で書けるものなら do で書いたほうがそういう判断をする必要さえないわけで、
なるべく抽象度の高い構文 (または手続き) を使うに越したことはない。

大事なのは抽象化で、繰り返しをしているところなら繰り返しに見えるように書くのが筋だろ。
(繰り返しに do という名前を当てるのがどうなんだ……とも思うけど Fortran 由来らしい。)

そういう意味では >>425 が loop をループ以外の用途に使うのは確かに良くは無いんだが、
場合によってはそういうのもイディオムとして定着していることがあるから
意味に忠実にするために冗長になるくらいならイディオムに頼るほうが「わかりやすい」場合もある。

どちらがいいというわけでもなくて全体の匙加減だから難しいよね。
2021/07/15(木) 19:48:28.17ID:eqEigNI9
末尾呼出し最適化をいかした書き方というのは確かにあるのだけれど named let はシンプルな loop に特化していて中途半端なのだよなあ
2021/07/15(木) 21:29:35.37ID:hFBqwrB0
named let 嫌いだわ、構文として紛らわしいだけ
あれはgotoとでも名乗るべき
2021/07/16(金) 08:09:46.64ID:IT8DyczJ
>>428
おいらはすき。letなんてどうせシンタックスシュガー。
2021/07/18(日) 09:56:21.45ID:2Hl3gQcn
書き捨てなら抽象度は低い方がよいのが原則じゃないか?
高いほうがいいのは使い回すケース、例えば数列計算関数に項を計算する関数を渡して特殊化したい場合
carがdoなら、何がしたいのか一目で分かるよね

あとclでも普通ループへの展開はしてくれると思うけど、保証はされてないから神経質な人は、より確実に等価なコードに展開されるだろうdoの方がいいかも
いやさすがに気にし過ぎか
2021/07/18(日) 10:09:27.74ID:+Ch+KzUq
>>430
> 書き捨てなら抽象度は低い方がよいのが原則じゃないか?

手間とのトレードオフで抽象化層をわざわざ作るのを避けるという意味ならそうだけど、
多様な語彙 (標準ライブラリ、またはそれに近いもの) がすでに揃っている中
から選べるなら状況をより適切に表しているものをピックアップしたほうが
わかりやすいし手間も少ないでしょ。
2021/07/18(日) 10:13:20.17ID:2Hl3gQcn
ポエムだけど、状態機械ともロジックは等価だよね

二項漸化式を例に
仮引数-呼び出し
末尾再帰
a b accum - b (next b) accum'
do
a b result - b (next b) result'
状態機械
a b state - b (next b) state'

状態機械は普通遷移テーブルを与えて考えるけど、制御構造で動的に割り振れば前の二者になる
状態を引数で受け渡すことで、ステートフルな計算を実現する
2021/07/18(日) 10:18:13.98ID:2Hl3gQcn
>>431
その文章には賛同するけど、その線引は深入りすると宗教戦争になりそうなやつだな…

忘れてくれ
2021/07/18(日) 10:31:34.34ID:2Hl3gQcn
'formをテーブルに書き込んでしまえば…
2021/07/18(日) 10:43:00.23ID:iK76XXqo
状態機械の定義にそぐうかは詳しくないので分からないけど、表で管理するのは見やすそう
でもデータ構造中に保持する限り反復に翻訳される可能性は皆無だろうな
2021/07/18(日) 22:30:22.92ID:wZnHH9/v
do構文は何がどこかすぐ忘れる
named letはうる覚えでもなんとかなる
ただのletの亜種だから断然読みやすい
437デフォルトの名無しさん
垢版 |
2021/07/18(日) 22:33:40.35ID:3JZJIWfz
×うる覚え
○うろ覚え
2021/07/20(火) 02:01:05.64ID:DJlNseKm
すみませんscheme初心者なのですが累乗を求めるプログラムが動きません
http://www.nct9.ne.jp/m_hiroi/func/abcscm04.html
を参考に、let と cond を使って書いてみたのですが let で局所変数を導入した瞬間に動かなくなりました
何が間違っているのか指摘していただけると幸いです
(define (pow x y)
  (let ((z (pow x (quotient y 2))))
     (cond ((zero? y) 1)
        ((zero? (modulo y 2)) (* z z))
        (else (* x z z))
     )
  )
)
2021/07/20(火) 02:30:15.19ID:yRdGIeGP
infinite recursion
2021/07/20(火) 03:11:09.60ID:DJlNseKm
(z (pow x...)) の評価が ((zero? y) 1) の前に起きてるのが原因なんですね
z に (pow x..) を束縛だけして評価しないみたいなことって出来るんですかね?
(define (pow2 x y)
 (if (= y 0)
   1
   (let ((z (pow2 x (quotient y 2))))
    (if (= (modulo y 2) 0)
      (* z z)
      (* x z z)))))
みたいに if 文に分解して (= y 0) 1 を (let ((z (pow2 x ..) の前に出すしかないんでしょうか
let と cond を一緒に使うとスッキリ書けそうなのですが…
2021/07/20(火) 09:22:43.66ID:0xL9gg55
(define (pow x y)
  (let ((z (lambda()(pow x (quotient y 2)))))
     (cond ((zero? y) 1)
        ((zero? (modulo y 2)) (* (z) (z)))
        (else (* x (z) (z))))))
2021/07/20(火) 10:43:12.24ID:aBN0Hnxa
計算量悪化してない?
2021/07/20(火) 11:23:57.77ID:0xL9gg55
(define (pow x y)
  (let ((z (lambda()(pow x (quotient y 2)))))
     (cond ((zero? y) 1)
        ((zero? (modulo y 2)) (set! z (z)) (* z z))
        (else (set! z (z)) (* x z z)))))
2021/07/20(火) 12:21:34.41ID:27sTwTCb
ifとletを使うのが一番いいと思う

(define (pow1 x y)
(let ((z (delay (pow1 x (quotient y 2)))))
(cond ((zero? y) 1)
((zero? (modulo y 2)) (* (force z) (force z)))
(else (* x (force z) (force z))))))

(define (pow2 x y)
(let ((z #f))
(cond ((zero? y) 1)
((begin
(set! z (pow2 x (quotient y 2)))
(zero? (modulo y 2)))
(* z z))
(else (* x z z)))))
2021/07/20(火) 12:42:50.05ID:DJlNseKm
>>443
なるほどアリティ0の無名関数として束縛してやれば定義時に評価されずに済むんですね
評価したいときはリストにすれば評価されると
めちゃくちゃ為になりました
ありがとうございます
2021/07/20(火) 13:00:13.21ID:DJlNseKm
>>444
やはり自然なのはifとlet使った書き方なんですかね
そもそも明示的に遅延評価を表すシンタックス形式(delay)があるんですね勉強になります
ありがとうございました
2021/07/20(火) 16:19:35.74ID:BjsPOMc7
計算量のことを言うなら繰り返し二乗法を使うのがスマートやろ。
2021/07/20(火) 17:16:38.64ID:FEwdsMz6
force 使うの大袈裟すぎない?
440で全く問題ないと思ったけど
2021/07/20(火) 17:33:51.23ID:BjsPOMc7
元になる数式をなるべく形式を変えずに書きたいみたいな要求はあるんじゃないの?
プログラマ的視点で見れば >>440 の形に不自然さは感じない (むしろ比較的自然だと思う) けど、
理論家がコードに書き起こすときにはコードを変形させるよりは
遅延を明示したほうがすっきりと感じることだってあるだろう。

そこらへんは何が正しいとは言えないけど、
現時点で Scheme を学習中の人みたいなので色々な方法に触れておけば
どれかは役にたつこともあるかもね。
2021/07/20(火) 17:41:31.79ID:yRdGIeGP
こんなんでもいいんじゃない

(define (pow2 x y)
 (if (= y 0) 1
  (let ((z (pow2 x (quotient y 2))))
   (* (if (= (modulo y 2) 0) 1 x) z z))))
2021/07/21(水) 23:35:17.25ID:tIqEOSex
Racket 8.2 がリリースされておった。
https://blog.racket-lang.org/2021/07/racket-v8-2.html
2021/07/29(木) 12:26:00.90ID:AB6awnRN
トイプログラムをチューニング合戦やめーや
2021/07/29(木) 14:35:36.73ID:lV+mYu1n
簡単な場合をよく考えられないなら応用的状況ではもっと出来ないよ。
応用ができるようになってからなら枝葉は後回しにすべきだけど。
(いわゆる「早すぎる最適化は諸悪の根源」ってやつ。)

あと、単にこのスレってあまり話題ないから。
454デフォルトの名無しさん
垢版 |
2021/08/29(日) 19:48:00.40ID:ExQfKpCF
Parenscriptとclojurescriptのメリットとデメリットどこかにまとまってないかな
主力をcLかclosureのどっちにするかで悩んでる
455デフォルトの名無しさん
垢版 |
2021/09/01(水) 11:05:24.22ID:3cqZfQ8E
racket から pythonのtensorflowとか使いたいのに
まともなpython ffiが見つからない

racket死んでる?
456デフォルトの名無しさん
垢版 |
2021/09/03(金) 17:00:38.92ID:w5919iNp
フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
https://prtimes.jp/story/detail/DBnPOktyljr
テレワークの一般化により、11月にはテレワーク可能案件83.7%へと増加。
2021年、フリーランスのトレンドは「移住&テレワーク」と予測
https://prtimes.jp/main/html/rd/p/000000045.000050142.html
リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、業務委託契約の求職者と企業をマッチング
https://www.value-press.com/pressrelease/262778
1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
https://www.nishinippon.co.jp/item/o/713384/
新潟県、移住してきたテレワーカー/フリーランスに最大50万円を支給
https://internet.watch.impress.co.jp/docs/news/1287094.html
茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
https://internet.watch.impress.co.jp/docs/news/1281120.html
長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
https://internet.watch.impress.co.jp/docs/news/1274735.html
フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
https://freenance.net/media/money/4255/
『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル
https://prtimes.jp/main/html/rd/p/000000051.000010457.html
457デフォルトの名無しさん
垢版 |
2021/09/04(土) 12:17:58.77ID:7RPQ9cbD
hy一時期話題になったけど今は誰も使ってない
458デフォルトの名無しさん
垢版 |
2021/09/04(土) 13:00:17.62ID:P/r0boNY
春頃にLispマシンの話題になっているが、
TAOのコードは結局Public Domainに出来ないのかな
https://www.nue.org/nue/tao/celis/index.html
2021/09/04(土) 17:09:55.40ID:jSSzYM7r
だいぶん昔にjaistでtaoのイベントがあったが同様の質問が出たが権利問題が解決できないらしく関係者にさえ配布できない状況らしい
lispの勉強会で遭遇した人の話なので風の噂レベルでスマンがガッカリしたのを思い出した.エミュレーションもデモしたらしい
2021/09/05(日) 06:20:35.31ID:pE5Z7TQ6
quickdocs復活してるな
2021/09/07(火) 20:50:21.97ID:8Gi3qZOZ
Scheme版のcl-ppcreは何処いったんだ?
2021/09/07(火) 21:18:49.39ID:yn0D/zff
>>461
srfi-115
463デフォルトの名無しさん
垢版 |
2021/09/10(金) 16:25:34.83ID:vbZ+sZ5t
政治闘争で頻繁に互換性ないアップデートを繰り返して死んだ
hy

次はclojureで同じ政治闘争が始まりそうという噂が
2021/09/10(金) 17:54:13.80ID:53pAHbe3
hy くらいの新興処理系でどんどん変更が入るのは普通のことだと思うが。
つってももう登場から 8 年なのか。
2021/09/11(土) 14:53:00.01ID:WRGMhX/P
>>462
いやそこにある実装は知ってるけど必要なのは>>461
もしかして自分で変換して使ってたのかな?
2021/09/11(土) 20:38:39.26ID:Suq8GRsb
スレに書き込む前に妄想と現実の区別がついていることをよく確認しましょう
2021/09/11(土) 21:45:04.20ID:E5TnD1wu
自分で変換した不確かな正規表現ライブラリなんて使いたくねーな
2021/09/11(土) 23:37:54.18ID:Suq8GRsb
いやそれは移植元にテストケースがあるからテストが完走すればだいじょぶっしょ
しかしそもそもschemeにもpcreライブラリは沢山あるだろうけど
469デフォルトの名無しさん
垢版 |
2021/09/15(水) 04:41:28.63ID:mYoOhxQF
妄想も噂も似たような言い換えみたいなものなのに
何でそんな強い口調で言い換えを強要してくるんだ
470デフォルトの名無しさん
垢版 |
2021/09/15(水) 04:43:02.67ID:mYoOhxQF
何でそんな強い口調で言い換えを強要してくるんだ
2021/09/16(木) 00:32:04.26ID:4L00LZ3y
()に包めば言い換えないでも柔らかさを演出できる
()はすごいのだ
2021/09/16(木) 02:34:55.53ID:PaKnZlMf
465から別の話題になってて468まででひとつの会話の流れ.
つまりお前が勝手に被弾してるわけよ‥
2021/09/16(木) 07:32:28.90ID:d2OD6VRD
クオートしてエバらなければよろしい
2021/10/09(土) 23:58:58.03ID:6Ftx/1cj
sbcl2.1.9 windows版(amd64)入れてみたけど今まで起動直後に表示されてたWARNING(win版はスレッドまわりが壊れやすいけどそんなの対応してらんない!みたいなやつ)が表示されなくなって地味にうれしい
2021/10/10(日) 10:54:30.08ID:Td68Zwht
スレッド周りはpthreadのエミュレーションを自前で実装してたのを、直接Win32のAPIを呼ぶようになった
コードが一気にシンプルになったし、その時にバグの修正も行ったのだろう
2021/10/28(木) 23:14:45.49ID:61MCerNv
hhk限定モデル注文した
これでlisp書きまくるぞ
2021/10/29(金) 10:04:04.19ID:Wx77+vYW
[ )* ]
このキートップを作って売ったら儲かる!
2021/11/04(木) 15:30:13.66ID:Pg5ZjBDA
()と[]は入れ替えてる
スペースカデットの模造品とかないんだろうか
2021/11/19(金) 06:28:29.94ID:xMhA1wC0
roswell環境で.roswell/local-projects/が認識されないんだけど原因分かる人いない?
2021/11/28(日) 23:37:15.25ID:RhGEQvG/
roswell emacs
2021/11/29(月) 20:25:25.48ID:egtLBMKE
roswellは複雑すぎて分からん
2021/11/30(火) 11:59:55.55ID:mt2EOzfV
LISPマシン
https://youtu.be/4c8qJGlG9Ik
2021/12/01(水) 00:08:54.18ID:S5WVP6ck
quicklispとかroswellとか、全部一体化されたら使うわ
2021/12/08(水) 02:22:37.34ID:7SPCPFJp
https://mevius.5ch.net/test/read.cgi/tech/1333015632/688
485デフォルトの名無しさん
垢版 |
2021/12/15(水) 14:51:19.13ID:gD/y5IR+
Lispworks 8でた!
2021/12/15(水) 16:19:54.21ID:liRiJS5F
Chicken Scheme 5.3.0 が先月リリースされてたのに気づいてなかったわ。
2021/12/18(土) 20:20:58.46ID:wxlLyg04
Lispworksのpro版購入してる人いますか?
488_
垢版 |
2021/12/27(月) 16:17:35.40ID:kKbRMARZ
Release of LispWorks 8.0
http://www.lispworks.com/news/news39.html

LispworksってSBCL みたいなSIMDサポートありますか?
2021/12/27(月) 23:09:52.29ID:W+QyKxlb
週2日出社、週2日在宅の週4日勤務が最高の働き方だと提唱したい

週休3日制になったら給料を減らされる??そんな考えだからいつまで経っても貧乏なんだよ...

サラリーマンが副業でプライベートカンパニーを設立するメリット

Webマーケターに転職して、セミリタイアを実現させる方法

【朗報】「在宅勤務OK」の求人、コロナ前と比べて7 7倍に上昇!

【悲報】「会社員に戻りたい!」というフリーランス、全体の3%しかいないw

【悲報】副業が解禁されても、副業を見つけられずに困窮する会社員が続出...
日頃から副業をやっておくことの重要性を再認識しよう

【驚愕】5人に1人は本業よりも副業収入の方が多いことが判明w 本業よりも稼げる副業とはなんなのか??
2021/12/27(月) 23:20:39.96ID:rFnrNjhz
家でゲームやってる方が100倍楽しい
2021/12/28(火) 14:24:25.81ID:ikdMcku9
Gauche 0.9.11 リリース
2021/12/29(水) 00:16:33.25ID:CixWfOUS
>>491
でも来年も1.0は出ないんでしょう?
493_
垢版 |
2022/01/04(火) 06:23:02.11ID:rzEME/gD
>>491
Gauche 0.9.11-p1 リリース
Windows での問題修正のみみたい。

>>492
1.0に向けての作業入られているようだけど
今年中に出るかは判らんなぁ
2022/01/04(火) 09:25:24.58ID:0EKZRL01
>>492
https://mevius.5ch.net/test/read.cgi/tech/1426481152/471
2022/01/04(火) 18:09:56.39ID:M2x34zFQ
>>494
それでも1.0はやっぱり大きな節目じゃないかな
それでなくてもマイナー言語を採用する
障壁は大きいのに、まだ安定版じゃ無い、
とか難易度が高い
2022/01/05(水) 01:55:05.36ID:M/mCn8xE
1.0 で Stabilize と書いてはいるが、別に現状の動作が不安定で落ちたりするという意味じゃなくて
API の試行錯誤とかをやってたのを 1.0 では「とりあえずの」決定版にしようねという話であって、
後にもたまには大きな変更だってあるだろうし、そのへんの感覚は番号だけ見てもわからんのだよな。
むしろメジャーバージョンが変わった直後は不安定という通説もあるし。
メジャーバージョンがクソデカでも信用ならんものなんて腐るほど見てきただろう?

心理的な障壁というのはわかるんだけど、逆に言えば気分の問題でしかない。
検証した上でやっぱりアカンとなったならしょうがないんだけど、
バージョンナンバー「だけで」判断してるのならよい態度ではないよね。
2022/01/05(水) 09:05:38.61ID:i4+082M6
1.0をだしたら、これまでできなかったあんあことやこんなことをやってみて、がんがん不安定化させるということだよね。もう飽きたからメンテナンスフェーズにはいるじゃないよね。
2022/01/08(土) 17:42:20.32ID:p9TLuwuj
Gauche は作者自身が仕事で使うための道具でもあるから
万人向けではない方向にデザインされるということはあるかもしれんが、
(まあそもそも Scheme が万人向けではないが……)
常に作者によって使われているので大きく壊れることはたぶんあんまりない。
2022/01/09(日) 03:10:06.49ID:Yh7kYLt+
forkすりゃいいじゃん
2022/01/09(日) 09:17:46.18ID:/FcxVx4/
無理
2022/01/09(日) 19:19:41.13ID:KdA6aSLx
gaucheはr7rs対応したときに2.0になっていてもよかったのではとおもう
2022/01/10(月) 19:38:26.99ID:2hS04FMw
俺はscmは遊ぶ用だけどguileがいい感じ、イントロスペクションがつよいので掘って遊べる

まだまだあんどきゅめんてっどなelモード探索も楽しい
2022/01/15(土) 20:48:11.65ID:lW+N/iWS
今度のMSXはCとLispとPythonが動くんだぞ
https://www.4gamer.net/games/999/G999905/20220113106/
2022/01/16(日) 15:41:52.89ID:13k9JV8z
ことしのlisp的抱負をひとつ...
2022/01/16(日) 17:06:35.43ID:qRjB4bc5
>>504
今一度!
3度目の挑戦ですが、sheme 手習いを読む、読み通す!!
2022/01/16(日) 22:33:47.36ID:UU19DhdN
同じく
あと、リスト遊び読む
2022/01/16(日) 22:57:05.20ID:hpGcG9O9
あくまで個人的感想だが、そういう風に勉強のために勉強するみたいなのは結局は上手くいかんのじゃないかと思う。
2022/01/16(日) 23:41:32.77ID:UU19DhdN
じゃあ、GAFAを超えるものを作るために勉強する!
2022/01/17(月) 05:54:03.53ID:F1CAOb16
>>507
仕事で使えば直ぐに覚えられるね
だがSchemeの仕事は無い
2022/01/17(月) 10:07:54.20ID:jU2WrI4n
成果物として作るんでなくてもちょっとした前処理程度のことをするときに使えばいいよ。
使い捨てるものを何で作ろうが文句は言わせん。
プライベートで使うんでもいいしな。
2022/01/17(月) 10:10:54.91ID:mRPHMZkx
ツール類は自分の慣れた言語で作ってしまうw
2022/01/17(月) 10:32:49.23ID:jU2WrI4n
俺は Scheme が一番慣れた言語だから……

こういうのがニワトリタマゴってやつかね。
慣れるために使いたいのに慣れてないから使わないってのでは
何も進まんでないか。
2022/01/17(月) 22:29:08.40ID:BbgRNbfx
scheme使いなら自作の処理系の1つや2つは持ってるよね
2022/01/18(火) 01:32:42.02ID:Q53p7HFH
いいえ。
2022/01/18(火) 23:30:17.32ID:Npm0ST7N
黒板とノートという万能処理系なら
2022/01/19(水) 12:17:51.13ID:YBAvI2MD
なにか作ろうと思うと結局cffiでcライブラリを呼び出して使ってるので、糊みたいな使い方しかしてないなぁ
2022/01/20(木) 02:19:42.06ID:3oKX7/s6
Ruby でも JavaScript でも Python でもだいたいそんなもんだろ。
2022/01/20(木) 19:02:36.89ID:GKs3JF21
scheme修行読んだら処理系書けるかな?
ちょっと読んでちっともわからなくて挫折したけど
2022/01/20(木) 21:08:50.31ID:Ibae9TV2
処理系作りたいなら下手な本より既存の処理系のソース読みまくるのが近道
2022/01/22(土) 21:58:31.48ID:E9iIueP5
俺の気持ちを代弁してくれてたポエム
https://gist.github.com/phoe/7d24bdb1f2be76a02fecba8cfecbef38
521_
垢版 |
2022/01/24(月) 12:23:44.52ID:J5Esvhno
>>520
斉藤由貴バージョンの
夢の中へ
が脳内再生された。
2022/01/24(月) 20:39:39.47ID:xI9wwXQn
ちゃんとエンドユーザー様までデプロイするのはめんどいのは確か

グラフィックス叩いたりするライブラリに依存するのはやむ無しだけど、純lispなライブラリはライセンスの許す限りスニペットに切り出して同梱してる
2022/01/24(月) 21:07:29.09ID:e/3681Ma
継続が凄いって話は、かれこれ10年くらい聞いてたんだけど、結局は限定継続で十分だよね、
限定継続もあんまり応用ないね、って感じに落ち着いたのかな?
2022/01/25(火) 11:38:40.17ID:GfuWsBWm
継続が凄いってなんだよ
継続ベースのlisp実装をschemeと言うのだから、そういう意味では凄い応用例だよ
2022/01/25(火) 12:33:26.79ID:Do1EUgQ3
非限定継続ってjmcのambとかが該当するのか?
動作としてはバックトラックするだけだから特に継続概念が必須というわけではないけど、なんか楽しい
2022/01/28(金) 01:56:11.96ID:hT9TavA0
形式定義できるのが継続の便利なところなんだよ。
バックトラックするだけとはいうが「バックトラックってなに?」というのを突き詰めていったときに「継続をこんなふうに受け渡してるでよ」と言えるの。
2022/01/28(金) 23:35:03.31ID:i9eS2qVS
でも実際はambはただの愚直な探索だから遅いんじゃないの?
2022/01/28(金) 23:54:45.12ID:hT9TavA0
原理的にはバックトラックと同じ速さ。
それが遅いというのならバックトラックでも遅い。
バックトラックより速い方法があってチューニングの手間をかけていいならそうすりゃいい。
2022/02/09(水) 12:03:16.04ID:3KsDo8lO
>>522
久々にscm書いてみたんだけどsrfi1とMITとr6rsでfold, fold-left, reduce fold-right, reduce-right(とそのpair-版)が初期値の畳まれる位置や引数の左右スワップとか違ってて混乱した

とっくに誰かやってると思ったけど今後の為に:initial-valueと:from-endを取るcl式reduceを移植しました…
2022/02/09(水) 12:14:56.74ID:9Cj+df9g
scm はキーワード型がないけどキーワード引数をどういう風に渡すの?
2022/02/09(水) 12:36:09.65ID:3KsDo8lO
restに'symb突っ込んで泥臭く拾ってます
srfiにちゃんとした機構あった気がするけど、小道具レベルで依存はしたくないので
2022/02/09(水) 23:48:43.20ID:9Cj+df9g
ところで scm を使うのはなにか理由があるの?
単なる好みならそれはそれでいいんだけど
このスレで言及される Scheme 処理系は Gauche, Racket, Chicken あたりが多いので
scm 使いは珍しいなーと思った。
2022/02/10(木) 00:36:07.94ID:d8JzH9qO
guile使ってるけど#:で自己評価シンボルになるな
よく見かける:の方はデフォルトで有効じゃなくて、オプション切り替えだったり
2022/02/10(木) 11:27:44.77ID:zyc1CtL/
Guile のキーワードはシンボルとは別の型。
(symbol? #:foo) は #f を返す。
2022/02/10(木) 20:51:58.38ID:/6XFwXXi
CLの掟とか知らないから名前付き引数はマクロでシコシコやってた思い出
2022/03/22(火) 22:52:38.10ID:VhTpyHaP
https://www.meti.go.jp/press/2021/03/20220322006/20220322006.html
2022/03/22(火) 23:07:01.10ID:jC3GI8nJ
Lispエイリアンww
2022/03/23(水) 05:57:57.32ID:M5tI2TdZ
ほんまや
539_
垢版 |
2022/04/03(日) 20:41:08.96ID:2/Br4qMY
LLVMベースの Common Lisp Clasp が1.0 になったよー
https://github.com/clasp-developers/clasp/releases/tag/1.0.0
2022/04/04(月) 01:15:26.65ID:H1vYw7XQ
キタ━━━━(゚∀゚)━━━━!!
2022/04/04(月) 15:23:18.85ID:lL1T2q6e
>>539
新興?処理系もまだ増えてるのね
良きことだ
542でーちゃんじゃないけど
垢版 |
2022/06/25(土) 21:10:35.30ID:AGenfzJY
github.com/Soldier-B/ns.js/blob/master/ns.js#L3
543デフォルトの名無しさん
垢版 |
2022/06/26(日) 13:26:40.20ID:DTfGvOZF
さとばん
544デフォルトの名無しさん
垢版 |
2022/11/07(月) 12:52:23.10ID:D9DaYQB4
svigiはなんて読めばいいの
545デフォルトの名無しさん
垢版 |
2022/11/07(月) 12:52:44.37ID:D9DaYQB4
木曽路的な
2022/11/07(月) 13:59:37.65ID:QQJOk/Pv
>>544
アイスランド語で括弧の意味だというのはあのキャラの作者が発表している公式な情報だから
Wikipedia でアイスランド語の表記から調べてみた。
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A4%E3%82%B9%E3%83%A9%E3%83%B3%E3%83%89%E8%AA%9E%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%99%E3%83%83%E3%83%88
たぶんこの場合の g は英語でいうところの y みたいな発音。
あえてカタカナで表すと「スヴィーイィ」みたいな感じ。

アイスランド語の辞書サイトで音を聞いてみた感じでも外してないと思う。
https://islenskordabok.arnastofnun.is/ord/40650
547デフォルトの名無しさん
垢版 |
2022/11/07(月) 16:54:40.26ID:D9DaYQB4
>>546
ありがとう
音素と発音記号は手堅いね
2022/11/07(月) 20:41:51.67ID:kjCGP1Rc
>>546
ここでアイスランド語が言及されるとは驚きました、アイスランド語は実に濃ゆい言語ですね
教科書(Johns Hopkins) を買ったけれども、当然 1 ワードも読めませんでした
2022/12/12(月) 12:44:02.44ID:asaSA4nl
「命の輝き君」がマンホールの蓋に  轢死体と見分けがつかなくなってしまう [725951203]
https://hayabusa9.5ch.net/test/read.cgi/news/1670487647/
2023/01/08(日) 12:42:17.07ID:hPHqQTwv
schemeはじめましたなんだけど
[lisp1.0+]label, [cl]labels = letrec + let name
[cl]flet ((f (args) fletbody)) body = let ((f (lambda (args) body)) letbody)
って理解でいいの?
2023/01/08(日) 17:21:31.97ID:/n9SAwLy
おおよそ似た雰囲気では書けたりするのかもしれないけど
単純に対応してるわけじゃなかったりもするからいいかどうかは状況によるんじゃないの。
2023/01/08(日) 18:49:11.56ID:5ojqztS1
まんまじゃね?
とりあえず(macroexpand 'sb-int:named-let)はそのまんまlabelsに展開されたのでお試しあれ
どの処理系でも似たような定義が大体あるはず

1958年のオリジナルlispのlabelは、scheme界隈ではlet1という名前で見掛ける
当然だけど、ローカル定義が一つなので(自明には)相互再帰はできない

触って気付いたけど
(flet ((cons (a d) (list :cons a d))) (cons :a :d))
; (:CONS :A :D) clisp, sbcl
; (:A . :D) ecl

eclのこれバグ?
2023/01/09(月) 03:51:35.47ID:0CyucYY1
触ったことないのでeclがどの程度cltl/ANSI/clhs等の標準をリスペクトしてるのかも分からないのだが
とりあえずgoogle play storeからeclのandroidポートらしいeql5 replを入れてみた

(list ;; attempt to shadow cl:cons
(flet ((cons (x y) (cons y x)))
(cons 'co '?ns))
(let ((cons (lambda (x y) (cons y x))))
(funcall cons 'co 'ns)))

((CO . NS) (NS . CO))

fletは謎挙動だね…
* shadowしない名前(xcons)ならok
* (flet ((cons (x) (1+ x))) (cons 42))がアリティ不一致で怒られる
から推測するに、普通cl packageの関数なんて弄られないだろうと踏んで、関数の名前解決を手抜きして最適化してるんだろう

値の名前解決は特に弄る意義もないので、scheme風にlambdaをletで値として束縛して呼べば問題ない
clを名乗る以上はオプションで切れるくらいの配慮はあるだろうから、eclにこだわるならマニュアル読んでみては

少なくともclhsはリスペクトしてないね
...flet can locally shadow a global function name, ...
http://www.lispworks.com/documentation/HyperSpec/Body/s_flet_.htm
2023/01/09(月) 16:15:24.76ID:2yNmR2Eh
    |  彡⌒ミ
   \ (´・ω・`)名前のシャドウ化辺りって自分で処理系実装した子はわかると思うけどハゲる要因だから絶対関わらない方がいいと思う
     (|   |)::::
      (γ /:::::::
       し \:::
2023/01/09(月) 16:36:52.10ID:0CyucYY1
eclは有名だけど、embeddableの名前通りの用途で1MBちょいな処理系だから、そういうものと割り切って使うべき

funcallが冗長ならletのbodyにfuncallをconsするだけのmy-fletを作ればいいじゃない
(さらなる災禍を招きそう)
2023/01/09(月) 16:57:44.09ID:0CyucYY1
eclのlocked packageなる概念やcompile-timeの意味論に関連しそうなissue
2 yeas agoだけど
https://gitlab.com/embeddable-common-lisp/ecl/-/issues/574
2023/01/10(火) 02:33:32.35ID:/i8qCr3o
>>553
特定の名前の解決を決め打つ言語は多いし、そういうポリシーもありだと思う
普通でないのはcondition(warning)を挙げないところ

決め打つ名前(locked package?)が分かってる限りは、flet/labelsのレキシカル束縛リストから拾った名前がbody内の呼び出しformのcarに存在するか、ランタイムコストの無い自明な静的解析でconditionを挙げられるはず
2023/01/10(火) 03:18:54.37ID:/i8qCr3o
>>550
等価と思って良いよ
伝統的なlisp(とcl)のように(let ((x '())) ...)を(let (x) ...)と略記できない、だとか細かい差異はあるけど

百聞は一見にしかずなので、構文の対応を見るのが手っ取り早い
あとeclのname collisionの件、consの例(>>553)はさすがにcontrived-exampleだと思うので、ついでにeclで破綻するように

letrec/nlet/labels で定義するラベルとして、所謂accumulatorイディオムにloop(他にはlp, iterとか)を使うのが慣例だけど、eclではcl:loopと読まれるのでは?と予想

;;; cl -- ok: cmucl, sbcl, clisp, gcl err:ecl (的中)
(defun fact (n)
(labels ((loop (k acc)
(if (= k 0)
acc
(loop (1- k) (* k acc)))))
(loop n 1)))

;;; scheme -- ok: guile
(define (fact n)
(letrec ((loop (lambda (k acc)
(if (= k 0)
acc
(loop (1- k) (* k acc))))))
(loop n 1)))

pcでテストはしたけど、スマホから手打ちなので変だったらごめん
2023/01/10(火) 13:31:12.96ID:TxpPtfKm
>>557
スクリプト言語 (処理系) 的な想定だと実行開始時にテキストの解釈から毎回やるので
静的解析もランタイムの一部みたいな感じになる。
この場合に限って言えばどちらにせよ名前のルックアップはやるのだからそのときにわかるだろうとは思うけど
静的解析を頑張らないという方針はあり得るんじゃないの。
2023/01/11(水) 00:38:29.47ID:s0T2WgwN
Gauche で検出されないエラーで (let ((0 1)) 0) みたいなのがあって、
実際にはオプティマイザが消去してしまうんだそうな。

文法の解析で通したものをオプティマイザがエラーとして弾くのも変な話だし、
オプティマイザが走査することがわかっているものを前段階でもチェックするのは二度手間だし、
オプティマイザを密結合してしまうのも保守しづらいし……
という葛藤があるのはわかる。

まあそれぞれに事情があるので原理的に可能だからといってそうすべきだとも言えない気がする。
2023/01/11(水) 00:49:38.31ID:LBEzL6fs
0はシンボルじゃないから、文法解析を通しちゃ駄目だろw
2023/01/11(水) 01:29:07.80ID:/IOcm4EW
そういう手では絶対書かないだろう変なコードも、マクロ書いてるとまれによく発生するから困る
2023/01/11(水) 01:59:04.27ID:/IOcm4EW
カウンタ変数を捕捉更新しようとして、うっかり評価してしまったケースとか
2023/01/11(水) 02:21:26.04ID:z40MB/0w
多分(let ((i (+ i 1))) i)が化けたのかな
2023/01/11(水) 02:34:55.34ID:LWIYKuEk
letの時点でオプティマイザに通してんのかな
let系はlambdaまで落として((lambda(i) i) (+ i 1))とすれば間違えようがないと思うのだが
2023/01/11(水) 02:44:32.93ID:/IOcm4EW
エスパー大会か?
(let ((i (+ i 1)))
(another-macro i))

another-macroは副作用目的で自明にiに展開したか、乗法的な関数を呼んだ(iの初期値0*n=0)
2023/01/11(水) 03:33:43.09ID:4gRHy1NM
>>565
gancheは知らんけど、さすがにletはプリミティブな事が多いかと
むしろ最適化で読み飛ばすならlambdaまで還元してしまってはダメで、LETをヒューリスティックに認識する必要がある

仮に評価順を示す為にバッククォートでわざとらしく書くと
`(let ((,index ,(1+ stride))) ,(* index stride))
; (LET ((0 1)) 0)

(に等価な)展開とかがありがちかな
特に例に意味は無かったってオチだったりして
2023/01/11(水) 03:56:23.35ID:/IOcm4EW
defmacro/macroexpand方式だと特にだけど、(let ((0 1)) 0)みたいな残骸から推論する技能はとても大事に思う
書く時もそうだけど、人が書いたモノの後始末なら前提知識が無いのでなおさら
これだけ想像を膨らませてくれる貴重な(let ((0 1)) 0)すら消し飛ばされるならもうお手上げ

なんて文句を言いつつ、schemeでもついslibのdefmacroに手が伸びてしまうのだが
2023/01/11(水) 06:03:42.65ID:/IOcm4EW
>>565
論理的にどんなletが束縛リスト(とおそらくbodyも)を読み飛ばせるかについて補足
letフォームの評価値は最後のフォームの評価値(car (last 'let-form))のみで決まるけど、それが再束縛のできない自己評価オブジェクト(0, T/#t, :kw-symb etc)ならば、単にそれを返すだけで他を一切見る必要すら必要がない
(let dont-care/maybe-invalid self-evaluating)
→self-evaluating

もしそれ以上簡約してしまうと、(eq 'let (car 'let-form))と(car (last 'let-form))だけを見て決められない
2023/01/11(水) 06:21:34.50ID:/IOcm4EW
一応値については正しいというだけで、もしbodyに(exit)や大域脱出が入ってても無視するのか?という問題はある

ill-formedな>>560すら無視するのだから、当然well-formedな(exit)も無視するのが自然だけど、実際のところはgaucheに訊いてください
2023/01/11(水) 17:03:18.22ID:s0T2WgwN
>>570
念のために補足しておくけど >>560 のケースは捕捉されないエラー
(現時点では捕捉することを意図的に諦めているエラー) であって
Gauche の仕様として正しいというわけではないよ。 結果は未定義。

直接的に書いてしまった場合にしてもマクロ展開結果でこうなるにしても
あくまでも誤っているプログラムだからね。

言いたかったのは >>557 に対してで、原理的に出来てもやらない事情の例として
(私は ECL のことは全然知らないので) Gauche での例を出したってだけ。
2023/01/11(水) 17:40:33.93ID:/IOcm4EW
>>571
どうも、俺のも原理的には…という同じ意図の話だよ

eclやgaucheが有名実装では最もアグレッシブな感じなのかな?
(declaim (optimize (speed 0) debug safety)
が外せない俺には怖くて触れないよ
2023/01/11(水) 18:02:49.87ID:/IOcm4EW
なおeclのlocked package?の件、標準の宣言を全て付けても有効な模様…
2023/01/11(水) 18:12:33.46ID:qLQaVlgq
notinlineも効かないし独自機構だな
2023/01/14(土) 01:01:49.57ID:9ctkhBjT
>>572
> 有名実装では最もアグレッシブ

そんなことはないんじゃないかな。。
実行前の処理に時間をかけない (かけても総合的な性能向上にならない) という
判断でエラーチェックに消極的だけど最適化にも消極的だから。
576本田
垢版 |
2023/01/25(水) 23:58:21.43ID:PahnnjBC
UCB Scheme
https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/
UCB Scheme is a modified version of STk 4.0.1 by Erick Gallesio.
2023/01/26(木) 19:06:40.12ID:lq03KzKz
USB Schemeじゃないのか
どっちかって言えばUSB Schemeが欲しいのだが
2023/01/28(土) 14:07:46.81ID:BDgiT21v
nptcl
https://github.com/nptcl/npt
579本田
垢版 |
2023/01/29(日) 22:24:48.67ID:XMFhzyDs
アルゴリズム言語 Scheme 報告書 四訂版
H. Suzuki訳
https://groups.csail.mit.edu/mac/ftpdir/scm/r4rs-ja.texi
2023/01/30(月) 00:59:07.34ID:kRDQpz8S
そのリンクがどうしたっていうんだ?
何か思うところがあるなら話題に挙げるのはかまわんが
ただリンクを置いて去るのはやめて欲しいな。

ニュース系のネタならお知らせの意味で貼ったのかなと思うところだが、
そういう感じでもないみたいだしな。
581デフォルトの名無しさん
垢版 |
2023/01/30(月) 19:13:37.70ID:prACFehy
そもそもダイナミックスコープの何がだめですか
Emacs lispはダイナミックスコープですが、
あちこちから呼ばれてる関数を、空関数で上書きして殺すとかできて便利です
Emacs lispの感覚でGIMPのスクリプト(scheme)を書こうとすると
なにか何でもかんでもラッパー渡し(いちいちcarをひとつ辿る)って感じです

ちなみにLispは普通の手続き型言語としてしか使ったことないです
そんな奴への説教とかあったら聞きたいです
マクロとか、「確かにif文を関数として実装するのは無理かもしれないし、
そういう時に使うのかな」くらいにしか解ってないです
2023/01/30(月) 19:45:34.45ID:w7gs7hNq
>>581
全然ダメじゃないよ。でも誰か(昨日のオレ)が余計なことをやって不審な挙動をしてるけど原因がさっぱり分からないというのは起こりやすいかもしれない。
2023/01/31(火) 01:40:41.84ID:t9l1A9G+
Lispではたまたまうまく動いてるように見えるけど変数宣言の無い言語でダイナミックスコープやると死ぬ
2023/01/31(火) 10:19:46.67ID:XA5Y5Qfu
>>581
元のプログラムを書き換えずに影響を差し込むことが出来るってのはアプリケーション拡張用として便利だけれど
元のプログラムが想定してない滅茶苦茶なことも出来ちゃうということと最適化が困難になるのが深刻な問題だと思う。

ユーザーが変な使い方をして変なことを起こす分には自業自得といえるにしても
今ではパッケージをネット上からダウンロードしてインストールまで自動だから
悪意あるコードが他のパッケージを好きなように変更できるようだと影響範囲が大きい。
たとえばウェブブラウザのアドオンなんかだど各アドオンは通信によって協調は出来るが
環境は共有しないようにすることで影響力を制限している。

参照しているものがことごとくいつでも変更される可能性があると
インライン化や畳み込みといったごく基本的な (しかし効果が高い) 最適化すらできない。
現代的な言語処理系に対して数十倍単位で遅いのはさすがに困る。

ものごとの良し悪しにはトレードオフがある。
どちらの問題もコードが小規模ならどうということはないので利点のほうが上回っていたのかもしれないが、
時代を経て巨大になりすぎた。 疎結合を意識した構成にしないと手に負えない。
2023/01/31(火) 10:34:59.12ID:tSjB9eWW
グローバル&ダイナミックは罠になり得るけど、対話的に使うコマンド言語(シェル)は大体そうだし利便性の問題、新しいpwshでももそう
定義をテキストとして全てダンプして、読み戻せる利点がある

cl/scheme(fluid-letとかそんな名前の拡張)のように基本レキシカルで、ローカル&ダイナミックは宣言が必要なら意図せず使う事は稀なはず
(form-in-scope? (declare (special x)) form-in-scope)
(locally (declare (special x)) (form-in-scope))
面倒だけど(declare…)が外、つまり同じレベルのフォームに影響する場合があるのが気持ち悪いから、明示的な後者を好む
2023/01/31(火) 10:56:14.75ID:tSjB9eWW
レキシカルな情報を取り込んでしまう(暗黙にクロージャを作る)クロージャにはテキスト表現が無いから、ダンプが出来ないのは致命的な欠点
よってダイナミックスコープ一択になる
pwshだと gci function:
bashだとdeclare -f (多分、よく知らん)
でダンプ、出力されるテキストを読み直せば(大体)環境が復元できる

pwsh方式だと{code}.GetNewClosure()でクロージャは明示的に得る
2023/01/31(火) 11:08:10.67ID:tSjB9eWW
>>581
guileだっけ?
あれ変な拡張山盛りだから出来るんじゃない?fluid-letみたいな名前がないかaproposしてみたら
2023/01/31(火) 11:28:43.20ID:XA5Y5Qfu
>>587
GIMP の Scheme (Script-fu) は TinyScheme が使われている。 (昔は SIOD だった。)
まあ fluid-let くらいなら自分で書いてもたいした手間じゃないけどね。
2023/01/31(火) 11:31:05.15ID:cAwVb56Q
#<closure ...>が嫌ならいにしえのfunargを使えばok
別にレキシカル環境をリストで持ったって構わないわけで、印字表現が不透明なlispはインクリメンタルコンパイルやリストより効率の良いデータ構造を選んだ結果

厳密にはダイナミックスコープでないけれど、コード注入なら'ラムダ式を渡して廻っても同等の自由が得られる(call by name)

既存のコードの方でも準備が必要だけど
2023/01/31(火) 11:33:22.79ID:tSjB9eWW
>>588
ええ…gnu公式の拡張言語とは一体なんだったのか
2023/01/31(火) 12:23:06.03ID:XA5Y5Qfu
>>590
アプリケーションに特有の機能はアプリケーション側で用意されたものを呼出して使うわけだし
言語側のライブラリはほどほどで足りるんで小さい処理系のほうが面倒がないというのはあるかも。
Guile はビルドするだけで面倒くさいが TinyScheme はファイル数個の簡単構成だし。
2023/01/31(火) 12:38:01.83ID:mFP57axK
ローカルにダイナミックな束縛をやるなら、それ専用のprogvフォーム(clにある)はどう思われてるんだろ?
(progv 変数リスト
値リスト
body)

let系列の (変数 値)リスト慣習を転置(zip)した記法だけど、束縛が多くても縦にスペースを取らない
let慣習では変数 値はsetq/set!だけど、progvの変数リストは評価されるから、リード時にバッククオートでシンボルを埋め込むようなハックが不要
動的束縛を活用するようなメタな場面では特にだけど、埋め込む為だけにわざわざリーダを何度も通すのが歯痒い

多分に個人的な好みだと思うけど
2023/01/31(火) 13:07:01.68ID:tSjB9eWW
>>592
転置されてるのと束縛リストの実行時評価は、おそらくlet風のマクロを書く時に便利だからかな
mapcar #'list let-like-binding-list
がprogvに渡せて、あと欠損値も勝手にnilで埋まる

あと機械的に名前を処理するならgensymもお忘れなく
2023/01/31(火) 13:18:26.31ID:tSjB9eWW
例が悪かった
単にlistをmapcarするだけでは、let形式のリストをそのまま渡した方が早い
不定数の引数を取ってリストを返す関数で、自明なlist以外をmapcarするならかなり楽が出来るはず

しかし何に便利か今すぐ具体的な例は思い付かない()
2023/01/31(火) 14:00:30.21ID:tSjB9eWW
>>591
俺環ではインストール(展開後)で50MBのディスク容量占めてるな
実験的なelisp対応(編集機能無しで一体何の意味が?)とか
興味深いけど謎な方向に突き進んでるね
2023/01/31(火) 14:46:13.56ID:CmTey6Bh
GNUは昔から他人の成果物の丸パクリしか脳が無い団体だよ
2023/01/31(火) 15:18:25.22ID:AYYg8Thv
emacsの膨大なテキスト処理関数群に依存していない純ロジックのみのelispコードなら資産になる
そんなの指折り数える量だろう
2023/01/31(火) 15:38:47.41ID:sZCc+g+m
ライセンス問題でどうしてもコードを触りたくないなら別だけど
何らかのlisp書きであれば、コピペしてその方言に適合するよう手直しする程度は自明な作業でしょう
2023/02/01(水) 01:45:17.62ID:ySbq2UIa
>>598
ダイナミックスコープとレキシカルスコープでは埋めがたい差があるし、モジュールやフェイズの方針なども大きな差だ。
伝統的に方言と称してはいるが個々に定義された別の言語なのでそんなに簡単に修正は出来ないよ。
私自身はそこそこ Scheme には習熟している自信があるが Common Lisp も Clojure も全然わからん。

C と JavaScript の外観はなんとなく似せてあるが静的型と動的型の違いという根本的な部分で違うからそう簡単に移植はできないのと同じような感じ。
2023/02/01(水) 06:05:03.14ID:BjxytPYm
いっそ Emacs そのまま組み込んじゃうとかそんな方向に進まないかな…
近頃の環境ならそんなに重くないはずだし。
601デフォルトの名無しさん
垢版 |
2023/02/01(水) 14:47:30.69ID:MmorO90J
>>600
やってできなくはないのかもしれないよ
昔、zlibがまだなかった時代にDOSでzオプションの利くtarを使いたくて、
仕方なくtarとgzipをまとめて一つのバイナリにリンクしてしまって、
スタートアップでヒープを半分に割って、スタックをそれぞれに割り振って、
あとはバッファが一杯になるたびにtar側とgzip側をsetjmpとlongjmpで行ったり来たり、
解凍は問題ないんだけど圧縮がどうしても同じ結果にならなくて、発表せず一人で使ってた
2023/02/11(土) 19:10:46.38ID:iYjc3QSL
オレオレSchemeでMineSweeper
ソースがSchemeで書かれている
ttp://ujip.ninja-web.net/schemeonjs/minesweeper.html
2023/02/11(土) 20:04:34.26ID:6efBUOB/
だからなんやねん
つか何年前から来たの?ってレベルの話だろ
2023/02/15(水) 12:56:30.42ID:Iq74I464
目くじら立てることかよ
2023/03/05(日) 13:42:32.16ID:nmaj3sub
オンラインでuLisp動かしてみようかとTinkerCADのArduonoUnoにソースコード流し込んでみたけどさすがに5000行は許してもらえないみたいだな。
2023/04/24(月) 08:39:19.08ID:AD1D3xO/
最適化されたCLは最適化されていないCよりは速い
昔Common LispでCより速いHTTPパーサを書いたとか言ってたのを見かけた
コードを見るとnodejsのCで書かれたHTTPパーサをパクったみたいな感じなのに
比較対象はなぜかどっかの個人がCで書いたHTTPパーサだった
その個人が晒してたソースのMakefileはデフォルトでは最適化なし
なぜ比較する前にCの方を最適化することを思いつかなかったのだろうか
というかなんでnodjsの方と比較しなかったんだ?
誰か理由わかります?
2023/04/24(月) 08:46:06.25ID:Z0B9bFh/
なぞなぞかな
2023/04/25(火) 20:39:53.26ID:wy/j7fQc
おじいちゃんそろそろマクロを飲む時間ですよ
2023/05/24(水) 21:31:48.49ID:w5+jyJkb
氏のイキリ芸でしょ
2023/06/20(火) 13:38:32.61ID:Dvlv0UV+
scheme処理系作ったりSICPで悟り開いたりしたけど今の使い方は実質電卓
スペース区切りの値そのまま貼り付けられて便利なんよなー
2023/08/18(金) 02:03:46.68ID:dtVdNVwB
John Cowan 氏が R7RS-large の議長の座を降りることを表明した模様。
これからの体制については現時点は決まっていない。
2023/08/19(土) 10:24:26.69ID:L0GsKMkM
実質機能しない規格なんて不要
主要処理系の実態調査して
ANSI Common Schemeを策定すべき
613デフォルトの名無しさん
垢版 |
2023/08/19(土) 20:44:33.82ID:2cGgFupU
実用的で無い言語にANSI規格とか要らないだろ

それより、Type Script 普通に良い言語だぞ、
あれ実質的に型付きのlispだわ
2023/08/20(日) 18:08:19.00ID:Jez4Fpf5
「Type Scriptはlisp」発言頂きましたー
2023/08/20(日) 18:21:02.18ID:P3ytobrG
JavaScriptがそもそもschemeだし。
2023/08/20(日) 21:24:26.60ID:CVtYBdI9
>>615
設計者の「そうしたかった」という発言が拡大解釈されたもので、
インタビューをちゃんと読むと「そうできなかった」ということも言ってる。
617デフォルトの名無しさん
垢版 |
2023/08/28(月) 22:32:35.76ID:ZDIe4Rjo
How to Design Programs, Second Edition
https://htdp.org/2023-8-14/Book/index.html

新版出てた
2023/09/03(日) 20:41:45.72ID:ApaaLf4l
Chez Scheme の 9.6.2 が五日前にリリースされていた。
2023/10/04(水) 15:56:06.86ID:DlO9V8Bc
Gauche 0.9.13 のリリース候補が出た。
問題ありそうな部分や要望があるなら今のうちに出しとくといいよ。

https://sourceforge.net/p/gauche/mailman/message/41039777/
2023/10/06(金) 07:52:06.47ID:Gz/JU6Xd
Gauche1.0.0 !! 早く来てくれーーー!!!
2023/10/06(金) 23:46:32.54ID:WmRjQTiM
Gaucheの目的が何なのか知らんけど
それが達成されるまで1.0にならんのだろうな
2023/10/07(土) 09:12:48.49ID:xYnVrult
Gauche のバージョンナンバーの予定はここにかいてある。
http://practical-scheme.net/gauche/devinfo-j.html
具体的な基準ではないので(ユーザーの意見を聞きつつ)開発者が納得する完成度になればメジャーバージョンもあがるってことだろ。
2023/10/07(土) 15:21:49.73ID:GRsLaML4
「Gauche 1.0」って文字列の違和感がすごい
2023/10/07(土) 23:47:40.08ID:c4CFtcBt
要望ね。schemeは処理系としては構造が簡単だから適当に作ってもそこそこ良い具合に出来上がるだろうが、
問題はその後で、処理系の方向性を決める必要がある。処理系作るってことは目標が既に設定されている場合もあるが、
他人に使って欲しいのであるなら例えばpythonライブラリ流用できるとか.NETでGUIアプリ簡単に作れますとかwebだとか生成AIで何かいけるとかそんなのだね
俺がGaucheの名前を知りながら長年ほぼ触ったことないのはその辺りが原因だよ
2023/10/08(日) 01:14:49.29ID:tCGlxsdd
Gauche の目標設定はトップに書かれている。
http://practical-scheme.net/gauche/index-j.html
要するにスクリプト言語として常識的に必用とされる機能を盛り込んで日常業務に使える Scheme 処理系を目指すってことだ。
英語の「日常会話程度」が専門的な会話より難易度が高いなどといわれることもあるように「普通に使える」ってのは何か特徴的な売り文句があるより大変だったりもする。

Gauche は作者自身が業務で使ってるわけだから特化するより万能寄りのデザインなんだろう。

個人的には日本語テキストを不自由なく扱えるのがありがたいね。開発が始まったきっかけも stk で日本語を扱えなかったかららしいし、そこらへんは力が入ってると思う。
2023/10/08(日) 12:59:35.92ID:SlOLtELZ
schemeを好きで使ってるやつって俺含めて既に自分の処理系は持ってると思うのだが、
自分の欲しい機能を満たせばそれ以上求めないし、その成果を踏み台に次のステップへ階段を上がるだろう
階段を上った末、他人に使わせる場面に出くわす事は良くある事で、その時それはschemeではなくなってた方が良いかもしれない
新人「えーなにこの括弧だらけ…今のトレンド?か、かっこいいですねワラワラワラ(辞めよ…)」
業務で使ったら他人を辞めさせる能力については万能になれるか
2023/10/13(金) 02:28:23.22ID:ZG3aaQwo
Gauche 0.9.13 がリリースされたやで
2023/10/13(金) 12:37:28.90ID:p9b8Kc4m
次のリリースはついに1.0だと>Gauche
お祝いしなきゃ
2023/10/13(金) 15:24:17.01ID:ZG3aaQwo
expecting ってのがどのくらいの確信なのか感覚的にわからないのだけど
一応の既定路線くらいには考えていいんかな?
2023/10/13(金) 19:25:12.51ID:79LHTXDX
しらんがな
どうせ本人もここ見てるだろうが質問あるなら直接本人に聞けよ
答え難いだろうが
2024/01/25(木) 17:23:17.38ID:d9W0b5Ok
諸事情で Gauche 0.9.14 が出ることになってリリース候補が来たよ。
https://sourceforge.net/p/gauche/mailman/message/58728292/
2024/02/07(水) 15:30:34.72ID:kuiQPbhX
Chez Scheme 10.0.0 リリースきた
https://github.com/cisco/ChezScheme/releases/tag/v10.0.0

サポートするアーキテクチャが増えたってのと、
そこにポータブルな仮想マシンも追加されたというのが
かなり大きい変更点らしい。
633デフォルトの名無しさん
垢版 |
2024/02/12(月) 11:47:40.17ID:QDPVm8Ph
GuileとGaucheって、VMインタープリタ、Cプログラムとの連携・拡張、オブジェクト指向あり、もともとR5RS。
フリーソフトウエアやライセンスという点以外は、言語・実装の方向性としては似ているように思いました。
Gaucheが、BSDライセンス版Guileのような感じがしたのですが、みなさんどう思いますか?
2024/02/12(月) 21:51:49.83ID:nqAntR6Y
ガイル?
2024/02/14(水) 00:54:24.29ID:4sDroV5Y
>>634
まじか?>>1のスレにAAあるから見てこいよ
2024/02/14(水) 01:07:02.25ID:Im++FRGi
ガイルがいる
2024/02/15(木) 01:35:34.01ID:x2y7hFPc
Sagittarius 0.9.11 も来たよ〜〜〜。
https://bitbucket.org/ktakashi/sagittarius-scheme/wiki/Release%20Note%200.9.11

Sagittarius は暗号通信系に強いね。
作者はオランダの銀行システムに関与する技術者だそうなのでその経験が活かされてるんだろう。
638デフォルトの名無しさん
垢版 |
2024/04/08(月) 00:42:38.05ID:skM/lEty
【検証】40時間Lispを勉強したら信者になれる?【Lisp1】
https://youtu.be/V2GM9lR-Di0
Lispの勉強をしたら『葬送のフリーレン』と同じカタルシスが待っていた。【Lisp2】
https://youtu.be/JvsSt_ksKiw
639デフォルトの名無しさん
垢版 |
2024/04/08(月) 00:43:02.37ID:skM/lEty
面白かったのでw
2024/04/08(月) 02:59:37.49ID:7blvdNRP
神の言語からschemeを経て生まれたjavascriptは人間にとってはちょうどいいバランスだったわけだな
2024/04/08(月) 19:16:08.79ID:85I3gne8
>>638
めっちゃ面白かったw
642デフォルトの名無しさん
垢版 |
2024/04/11(木) 10:36:33.17ID:8Rm0X/WO
それの前にポールグレアムいじり回が3回あって
それで「Lispがそんなにすごいなら」ってことで40時間勉強したというわけだねw
2024/04/11(木) 23:22:35.79ID:0Tmkq/lZ
ポールグレって本職の人じゃなかったんだな
すごい熱量な感じなのに
644デフォルトの名無しさん
垢版 |
2024/04/12(金) 00:31:32.72ID:H7gFN+op
MIT卒でLispで儲けたあと、ベンチャーキャピタルになった元本職かな
2024/04/12(金) 11:49:20.24ID:nR+PqPBt
エッセイストだと思うけどマとしては通販サイトとか作ってたんだっけ
ただ小さな関数やマクロutilが集まったonlisp.lispは準標準関数的な感じで愛用してます
2024/04/12(金) 12:38:02.80ID:wZ+y5Ko5
そもそもハッカーであるかにガンガンプロダクト作る的な意味での本職マか否かは関係ないと思うのです
cl&schemeの根幹や文書化のみならずC, Java, Fortran委員まで勤めた皆のSteele先生だって何作ったか寡聞にして知らんくらいだし
最近ではC,AWK,Goのバイブル+作法本で鳴らしたKernighan御大も隠居してエッセイストやってる

言語本+エッセイで良い書き物できるのがハッカーの十分条件だと思うね、pgrahamも余裕で該当
2024/04/12(金) 12:45:09.54ID:wZ+y5Ko5
K御大にはUnixという特大のプロダクトが
648デフォルトの名無しさん
垢版 |
2024/04/12(金) 13:27:33.28ID:vAI6Kzu4
プリンストンで教授やってるみたい
2024/04/12(金) 14:17:26.15ID:XxWOnWTK
おれはlispはスゴイ神の言語とかくっさいワナビ主張は大嫌いだけど、lispはハッカー言語という主張には賛同したい

名だたるスーパーハッカーの共通部分を探してみると、それはシンタックス/セマンティクスに対する深い理解、すなわち言語デザイン能力なんだよな
まあlispの専売特許でなくML系やHaskellもそうだけど、つまりDSLの書きやすさね
別に言語内完結に拘らずともlex/yaccでも処理系手書きでもいいが、言語内で完結したいなら好ましい

挙げられてるPaul GrahamやG.L.Steeleのような簡潔で一貫性のある手続きインターフェイスや構文の設計(言語デザインのみならず、むしろ日常の構造化プログラミングにより通ずる)には、それを自然言語に起こしながら深く考え推敲する経験が必須だろう

これがハッカーの必要条件だと思う(>>646の十分条件に対して)
2024/04/12(金) 15:01:50.67ID:wZ+y5Ko5
>>648
もう80才超えてるし、教鞭執れてるかは怪しいね…
最近プログラム書いてねえなあ、とかウェブで言ってたし
代わりに最近のエッセイ本はマ/CSというより一般人向けっぽいので食指動かず
Understanding the Digital WorldシリーズとかDefending Yourself in a World of Too Many Numbersとかそんな題の書いてる

ソフトウェア作法、プログラミング書法、プログラミング作法の現場で戦うプログラマーの為の三部作は素晴らしい、言語に縛られない(あえて題材は様々な言語)し、lispにも通ずる普遍的な知恵袋だよ

スレチなのでそろそろこの辺で
2024/04/12(金) 15:05:17.85ID:dUdcEEpo
>>646
Steele先生はlisperの毛嫌いするC系言語/Algolishな言語も無数にデザインしているという皮肉!
652645
垢版 |
2024/04/12(金) 15:53:49.12ID:OhyEPSVL
lispの話をしよう
onlisp.lispのようなオレオレutil(s).lisp/scmから引用し過ぎるのはあまり宜しくない?
macroはコンパイル順の関係で引く方が問題起きにくいけど

名前がdescriptiveなのは前提として
too generalであれば初見の人に読みにくいのではと思うこの頃
一方でspecificであるかぎり、手続きを分かつ働きすら無い関数抽象も読み易い:
carにget-operator、cdrにget-operandsなど単なるリネームでも重用する
これらはpackage内にレキシカルな意味で近傍に置くべきよね?(使い捨てならflet/labels、共用ならdefun)

より一般的な小物をコーディングを楽にする為だけに引くならば、lisp書きなら定義も大体覚えてるだろう有名な小物util集(alexandria、sfri)に依存した同梱するのも(ライセンスが許しても)憚られる…

このスレやSO等見ても必読書なOn Lispは知名度あるだろうから、onlisp.lisp由来のものは初見で読めてコンパクトでバランス取れた妥協点だと思って使ってるんだけど
(ライセンスや再帰志向で性能難アリなので、手習いがてら書き直したクローン版、念の為)

なおonlisp.lispは手続き名がいにしえのlispかよってくらいヤバいのが欠点
2024/04/12(金) 23:54:00.88ID:/A9qFmr2
文章下手糞すぎて読む気も起きない
これって神の言語に慣れすぎて言語障害になった例かよってくらいヤバいのが>>652の欠点
654デフォルトの名無しさん
垢版 |
2024/04/13(土) 18:14:03.11ID:JilIuOKd
ストールマンがガンになったらしい
長髪も髭も落としてしまって別人みたいになってる
2024/04/13(土) 18:24:37.81ID:OrtqC7Lq
効いてる効いてる
656デフォルトの名無しさん
垢版 |
2024/04/13(土) 19:21:54.91ID:JilIuOKd
何が?
2024/04/13(土) 22:51:10.37ID:Vi4F3OXr
昔MSの偉い人がGNUはガンだとか言ってたな
ついに自覚させたか
2024/04/13(土) 23:32:28.78ID:c7UXCLXT
>>655
お前は脳にガンを抱えてるなw
659デフォルトの名無しさん
垢版 |
2024/04/14(日) 12:56:54.81ID:JRHy27WB
ゆる学徒ハウス別館
現役Lisperが語る! Lispはオーパーツで人類には早すぎた【電脳史学】
https://youtu.be/tLZ8J9tGVEs
660デフォルトの名無しさん
垢版 |
2024/04/14(日) 13:37:09.89ID:JRHy27WB
ゆるコンピュータ科学ラジオ
大人の勉強は「夢の中」が主戦場。寝ながらマクロを書くといい【Lisp雑談】
https://youtu.be/Lbt_CCQKWFA
661デフォルトの名無しさん
垢版 |
2024/04/14(日) 14:04:02.38ID:JRHy27WB
コーシー噴いたw
2024/04/14(日) 15:00:30.77ID:XsKNoxHh
>>660は娯楽コンテンツとしては面白い

でもLispは良いとして集合論を勉強しようとしてるのにはやれやれだな
Haskellで圏論とかAIで代数幾何に夢見たりするのと似てる
結局広く浅くでウンチク欲を満たすに留めて、実践から逃げたいのだろうな
実践は壁だらけだから
663デフォルトの名無しさん
垢版 |
2024/04/14(日) 17:27:06.49ID:ezgj98lZ
Lispとは別に2人で集合論やって
Lispは一冊何か挟んでからPAIP読んでほしい
番組のネタ的に
2024/04/14(日) 21:34:02.26ID:p4Nf2jzu
その人らはLispに大した拘りはないし
今更検索でまともに引っかからない古代のPAIPなんてやる意味を見出せないだろ
AI関連ならTranslatorからChatGPTブレイクに至るまででも話題にしたらいい
665デフォルトの名無しさん
垢版 |
2024/04/14(日) 21:56:43.27ID:JRHy27WB
そうかなあ、論理プログラミングとか自然言語解析とか右側の人大興奮じゃないの
2024/04/15(月) 01:53:38.60ID:YG3lrvG/
>>649
MLやregexエンジン積んでパターンマッチ機構を言語ビルトインにしても特にアドバンテージなんて無いと思うけどな
50行のコードでcl-ppcre(perl相当)とも機能面では十分戦えるわけで

or/and,named-capture/backref、lookahead/behind-assertion、predication、filter、context-sensitiveなreplace等ね
超古典な"LISP" Winston, Paul Horn, 2nd edのchap.17に載ってるやつ
本を薄くするために徹底的に再帰で書かれてるからまあ性能は察せ()
再帰で分かりやすいコードだから叩き台にもオススメ
2024/04/15(月) 02:00:08.14ID:YG3lrvG/
あれはsymbolic pattern matchなのでregexと比べるのは良い例出なかったごめん
まあexplodeしてしまえばもうキャラクタベースだ
確かGrahamの>>652にあるシンボルをバラすやつ、まあ3行くらいで書ける小品だけど

explodeってネーミングがクールで覚えてたわ
2024/04/15(月) 02:27:22.10ID:wPU2Kemh
>>665
そうそう、PCと自分のスキルで実践出来る分野なのに(最低限の真似事すら)やってないのがお察しか
右の人が予めPC音痴だと予防線張ってるのは自走力低めだと自己分析出来てるのかも

まぁ実践(この場合はプログラミング)で玉砕しちゃったら、しょんぼりするか歯切れ悪くて
面白くなくなるタイプだからチャンネル的には今のままで良いのかも

左の人は画面キャプチャしながらライブコーディングするスタイルを何処かで見せないと説得力に乏しい

左右どちらも含蓄なく浅はかに見えてしまうので、その道の専門家をお呼びするスタイルにして欲しい
C#のufcpp的な人が(声とコード画面だけでも)出演したら(最低限の真似事なら)実践する人が増えると思う
2024/04/15(月) 02:48:11.62ID:YG3lrvG/
>>665,668
うむ、若かりし頃はマルコフやProlog/SQLモドキとかやってた、なるべく決定論的なのが個人的な好み
トレースを分析しても理解の困難なモノは、決して知的探究心を満たしてはくれないのだ

流行りの文章生成もマルコフならトレーサビリティは完全なのが良い
2024/04/15(月) 03:14:20.11ID:YG3lrvG/
古いAIのバイブルPAIPすら恥ずかしながら未読の身ですが…
lispもデータドリブンなNN系はむしろ苦手とは思わない

NN系がマスメディアでもバズり出した頃にウィキペディア見たら、Pythonのサンプルコードが載ってたので
そのままCPython/Numpyとclで書いてみたら、ベンチはsbclぶっちぎりだったよ
もちろん個々の処理がバックのcライブラリより速いなんて言わない
同レベルのコーダが同ロジックで翻訳すればの話

その差はclの無駄に細かいarray/vectorコンストラクタ引数の設計
具体的にはR/W抑えるビュー相当の:displaced-*と:fill-pointer、配列の動的リサイズ指定の:adjustable引数ね
Numpyのndarrayはこの辺が裏で自動でやるのでコーダの裁量がない

まあNumpyでプラグマ/フラグ駆使してその辺のお節介挙動を切れば普通に負けるかも
あくまで並コーダが素直に書く限りの話
2024/04/15(月) 03:45:37.49ID:KXqIDgH/
Cバックエンドで配列のviewをサポートしてるなら究極的には言語/処理系ではアルゴリズム瑕疵が無い限り有意な差はないよ
ただし最速言語Fortranを半分程度使うNumpyにも優位性はある
gccはじめ同じILにコンパイルされても配列多様コードでにおいてCより数倍は速い

ただしNumpyは書き方に細心の注意をしないとユーザの預かり知らぬ所で勝手にディープコピーする大きな罠も
そうした不透明性が嫌い

明示できるCLのFortran実装を待ち望む
2024/04/15(月) 03:58:24.79ID:TPgVCyAO
>>671
clの明示性といえば、:rehash-size :rehash-threshold等で個々のハッシュテーブルまでチューンできるのがいいね
配列なんかよりハッシュテーブルの方がリハッシュコストが遥かに高い

動的言語のリハッシュは知る限り全部処理系任せか、サポートしていてもインタプリタのコマンドラインオプションで一律にしか変えられない
2024/04/15(月) 06:50:07.08ID:DfbFoW6K
>>671
>ただし最速言語Fortranを半分程度使うNumpyにも優位性はある
>gccはじめ同じILにコンパイルされても配列多様コードでにおいてCより数倍は速い

この部分、Fortranで配列多用したらCより数倍速い的な意見なのかな?
1ミリも分からんので、詳細求む
2024/04/15(月) 11:04:34.92ID:SeS0dYr5
>>671
言語/処理系で有意な差はないと言ってるのに、Cより数倍も速いって、矛盾してるぞw
2024/04/15(月) 11:32:59.07ID:dChAXctC
>>674
何の根拠も無く「数倍は速い」なんて言い出さないから
>>673に対する>>671の回答には期待しているw
2024/04/15(月) 11:39:03.37ID:L/ePcET8
中間言語が同じならコーディングの瑕疵は人間工学的な問題
Cは宣言が貧弱でin/out、純粋関数、エイリアスの有無は推論頼りだから失敗すれば死ぬ
ただ最近はrestrict宣言付けて回るなら重なるか推論不能な配列のエイリアス有無も指定可、難解だけど
一方で参照渡しのFortranはtaraiベンチで推論失敗すればデリファレンス地獄で死ぬわけだけど、これ解消する宣言あったっけ?

むしろ宣言無しのナイーブなコーディングなら数倍どころでは済まんよ
ランタイムの重いclは比類なき宣言の豊富さで静的言語にまで迫ろうと頑張ってるわけで
2024/04/15(月) 11:50:11.63ID:L/ePcET8
パフォーマンス志向でarrayとdeclareまみれのclはlispっぽさが失われるのがつらい
何でも出来るのだと前向きに考えてゆきたい…
2024/04/15(月) 11:53:02.96ID:xx2br7bI
>>671,676
話逸らさんで良いから
Fortranの「配列多様コードでにおいてCより数倍は速い」コードを出してw
679デフォルトの名無しさん
垢版 |
2024/04/15(月) 13:00:49.14ID:h9iqzVMR
ゆる「コンピュータ科学」ラジオなので、集合論でもいいだろw
マウントしないと気が済まんのか
2024/04/15(月) 13:15:54.71ID:WhsyARtf
どのレスがマウントに見えたのか知らんけど
集合論なんてAppendixか記号一覧でサラッと確認して本題を進めるのに
集合論のブルーバックスを読んでシッタカウンチクを語る方がマウントに近い行為だと思うけどw

まさか公理的集合論とその形式的手法をガッツリやるのかな
2024/04/15(月) 13:20:30.61ID:WhsyARtf
そんな訳ないかw
単純に集合論とか圏論は逃げ
(研究者じゃない限り)コンピュータ科学は実践を伴ってナンボの世界なわけで
そこのレベル低そうな人にウンチク唱えられても何か可哀そうで娯楽にすらならん
682デフォルトの名無しさん
垢版 |
2024/04/15(月) 13:42:47.75ID:h9iqzVMR
痛い人だw
2024/04/15(月) 15:03:16.41ID:AVuQkQ2W
痛レス追加w

プログラミングにおいては、学問的基礎はそこそこにしてドンドン先に進んだもん勝ちなのよね
学習の初期段階から集合論(動画内ではタイプ理論も)に油売ってたら(逃げを通り越して)脱落かと
ユーチューバーが視聴数稼ぎの為に手を出してるのを差し引かないとね、初学者が真似したら破滅

みんな母国語を話せるでしょ?言語学なんて知らなくてもw
684デフォルトの名無しさん
垢版 |
2024/04/15(月) 15:11:29.44ID:oyztWlKb
逆に数学ちゃんとやらないからLispでつまづいてイライラするんだろうな
そういう奴は20年後も進歩してないと思う(俺のことだが)
2024/04/15(月) 17:04:25.48ID:BU/Fumer
でもまぁ左は慶応情報工学、右は数学が得意と言ってるし集合論は楽しみではあるな(他意は無い)
686デフォルトの名無しさん
垢版 |
2024/04/15(月) 17:51:51.96ID:lxkYY0z4
集合論もゲーデルもコンビネーター理論も入門レベルは理解したい
と思い続けて10年w
687デフォルトの名無しさん
垢版 |
2024/04/15(月) 17:53:00.51ID:lxkYY0z4
そんなことよりCentOS8入れてみたらGuileもEmacsも入ってなくてブチ切れそうなんだけど
688デフォルトの名無しさん
垢版 |
2024/04/15(月) 19:17:47.96ID:pFNJA2no
Lispは母語じゃないからなぁ
2024/04/16(火) 08:49:18.26ID:Fr3sHPgG
>>686
Lisp本ではないが論理学の問題集みたいな一般向け書To Mock a Mockingbirdの後半がみっちりコンビネータ論理に充てられててオススメ
手計算させて解法と答えも章末に載ってて取っ付きやすい入門

そのままdefunしてアプリケーティブに動かしたり、簡約パーサも数個の基底コンビネータの書き換え規則をcondで振るだけの自明な10行
かなり遊べるおもちゃ
690デフォルトの名無しさん
垢版 |
2024/04/16(火) 11:41:44.03ID:AOP5eUEV
>>689
ありがとう
ものまね鳥、積読になってる😅
2024/04/16(火) 12:46:54.23ID:9OjD0OW8
右の人、集合論を勉強すると見せかけてゲーデルエッシャーバッハを持って来ると期待してるw
692デフォルトの名無しさん
垢版 |
2024/04/16(火) 13:18:37.46ID:AOP5eUEV
左「やっぱりあなたLispやってますよね?」
2024/04/16(火) 13:59:54.08ID:HsOietmi
>>690
まじかー𓃠
愛読しろにゃ
694デフォルトの名無しさん
垢版 |
2024/04/16(火) 16:09:54.43ID:AOP5eUEV
>>693
す、するにゃ汗
2024/04/18(木) 15:57:15.08ID:L09lN/Y8
>>652
acl2.lispもたぶん参考にしてるかもだけど
On LispにもANSI CLにも載ってないのを集めた utx.lispってのもあるよ

念の為
2024/04/18(木) 15:59:42.84ID:L09lN/Y8
探してみた、一番下にリンクある
http://web.cecs.pdx.edu/~mperkows/CLASS_ROBOTICS/lisp-source.html

他にもなにやら面白そうなコードが色々
2024/04/18(木) 16:12:02.72ID:L09lN/Y8
>>670
性能は知らんけど丁度>>696にニューラルネットのコードがあったよ、とコメントしておく
NEURAL NETWORKS.
PERCEPTR.CL Perceptron.
BACKPROP.CL Backpropagating Neural Net.

書かれたのが30年前で特に最適化してない短いお手本コードだけど、今時のAI向け言語とどの程度性能に差が出るだろう?ちょっと興味ある

他言語も得意で暇な人ベンチしてくれないかな()
2024/04/24(水) 12:34:02.33ID:6vxo/5Gl
Gauche 0.9.15
https://practical-scheme.net/gauche/download-j.html
2024/04/24(水) 19:33:42.07ID:zTq4mcuG
お前がやるんだよ
700デフォルトの名無しさん
垢版 |
2024/04/29(月) 00:40:58.99ID:kyEsQUSW
Lisp系の本あるある
Amazonで検索してレビューを見ると、kaizenのしょうもないレビューが付いている
701デフォルトの名無しさん
垢版 |
2024/04/29(月) 03:32:03.71ID:xgq67JZI
(())なーんだ
702デフォルトの名無しさん
垢版 |
2024/04/29(月) 20:53:10.33ID:gOSsFAyk
閲覧者にとってどうでもよすぎることしか書かないゴミレビュアーなんだよなkaizen
「読んでませんが」「一行もかけてませんが」「どういうものかわかりませんが」
けれど、「昔のAI業界知ってます」というね
片っ端から違反報告したろか
703882
垢版 |
2024/07/14(日) 23:11:15.21ID:gZEsSzzj
いつの間にやら5ch CLスレが無くなってて書き先がないのでここに書いちゃう。

3年前、 5ch CL スレで出てた話題 ( https://itest.5ch.net/mevius/test/read.cgi/tech/1411307361/925-933 )を見てたらClozure CLのバグを発見して、 Clozure CL に Pull Request 出した者です。 ( https://github.com/Clozure/ccl/pull/362 )
結局あれからずっと放置されてたんですが、昨日になって急にコメントされました。
曰く、「最近になって報告された Issue を直すためにやって変更により、この問題は直ったんじゃないかと思う。」「この3年前の PR を見とけばよかった。」とのこと。

いや本当に見て貰いたかったよ・・と思いつつお礼のコメントしておきました。5chのLisp関連スレを Clozure CL のどっかに刻めるかなと思ったけど中途半端に終わってしまった。すまんね。
2024/07/21(日) 16:52:31.51ID:jbuO3Kr/
> あれからずっと放置


Clozureはバグ修正どころか存続の危機という状況だった(今も?)のでやむなし
2024/07/26(金) 19:56:51.72ID:nvGW+kC/
このスレを開くような変態野郎には関係ないがLisp自体も言ってしまえば存続の危機だけどね
Lisperが勝手にライバル視していたXMLも結局Web界隈では嫌われてるし
嫌われデータ表現で嫌われデータを操作するLispが嫌われるなんて当然の帰着といっても過言ではないでしょうな
2024/07/26(金) 20:54:02.96ID:753D+xJi
>>705は変態野郎ということだな
2024/07/26(金) 21:57:46.50ID:nvGW+kC/
煽られて即レス返すような真性変態野郎には及ばないがな…
まあ雑談しようや
恐らくタグ付きデータ表現を最初期に意識してたであろうLispを世に放ったJ.McCarthyは原初変態ってところか
ところで詳細は知らんが当時で言うAIと今の実用?AIは目的は似ていても手法が全く違う気がするんだが
やはりこの世界はスピードこそがパワーなのか?と2度目の悟りを迎えたLisperは多いんじゃないの?
スピードの前にはもはやLispとか関係無いじゃね?とか今はそういう感じ
2024/07/26(金) 23:35:12.89ID:753D+xJi
>煽られて即レス返すような真性変態野郎

ID:nvGW+kC/ のことだな
2024/07/26(金) 23:38:45.14ID:e6dQA2Nw
>>707
文意を読み取れない。
なにか前提の説明が欠けているんじゃないかと思う。
710デフォルトの名無しさん
垢版 |
2024/07/29(月) 20:42:01.60ID:Js4zJSVe
webasmのS式に活路を見出そう
2024/07/30(火) 09:51:17.53ID:huM5CJOj
標準規格から30年経過して改訂もなしのCommon Lispは存続の危機とかいうのも超越してしまったように思える
sbclもquicklispも細々とやっていくだろう
2024/07/30(火) 18:26:26.48ID:dglkx4t5
最も変態なのがマシン語
最も変態から遠いのがLisp
平均がマシン語寄りなのでLispが変態に見られてしまうが
安心しろ、それは認知の歪みだ
2024/07/30(火) 19:37:30.88ID:otClTmf/
コードとデータが同じ形式でデータと同じようにコードを操作できる特性は変態と呼ぶに値する
脳神経モデルのAIが主流の間は出番ないけど遺伝子モデルのAIが主流になれば復活しそう
一時期流行った進化的アルゴリズムとか最近聞かないけど息してるのかね
2024/08/01(木) 04:59:08.81ID:yRZ8k2zI
勉強しろよ、おっさん
2024/08/01(木) 07:17:05.17ID:7xtdgUzE
car, cdr, mapcar, cadr etc. まあこの辺は慣れで覚えられた
でも mapc, mapcon, mapcan ... この辺は無理
廃れつつあるのの当然だね
2024/08/01(木) 14:39:20.28ID:yRZ8k2zI
コード書かないコンピュータ雑学博士みたいなおっさんが活躍できたのは情報が少ない時代だったからで誰でも好きな言語でOSS活動できるような現代には無用の存在なんだよな
2024/08/07(水) 15:13:02.20ID:PbgGNmzh
>>703

CL スレ無くなってなかったよ
https://itest.5ch.net/mevius/test/read.cgi/tech/1624937701/
718デフォルトの名無しさん
垢版 |
2024/08/09(金) 22:25:05.47ID:/Y8diPS9
それでもLispの悟りを味わうためだけにでも勉強する価値はあるってレイモンズが言ってた
2024/08/10(土) 20:00:37.82ID:8fMXoMNz
ここの住人のように書籍を先生にひとりでLisp書いてる還暦手前の人間には信じられないかもしれないが, common lispにはコミュニティが存在する. これが2024年のCommon Lispサーベイだ.
https://news.ycombinator.com/item?id=41206465
なお, racketもアンケートを実施中だ.
2024/08/11(日) 08:19:43.51ID:Ra0/0/oh
この手で一番知りたいアンケート回答者の年齢について何も言及がない時点でお察し
2024/08/12(月) 00:13:23.88ID:6GU4Ob6x
お察しのところもうしわけないが, プログラミング言語コミュニティのサーベイでユーザーの年齢層集計してるとこどこもないっしょ.
2024/08/24(土) 00:38:59.98ID:TqJppTmh
貴重な趣味仲間なんだから仲良くしろ老人ども
2024/08/31(土) 07:41:36.68ID:jZQQMHu4
おはようございます
貴重でもないし
趣味でもないし
仲間でもないし
仲良くすることもありません
2025/02/02(日) 08:13:35.15ID:DG2EYWWi
SBCLはコンスタントに更新しててすごいなって。
たまに破壊的な変更をやらかすが・・・
2025/02/14(金) 15:49:29.78ID:eMFFfIuE
racketもコンスタントに更新してるよ
2025/03/08(土) 07:16:48.57ID:idxuFWQL
The Landscape of Lisp

https://churchofturing.github.io/landscapeoflisp.html
2025/04/08(火) 17:02:32.68ID:dn4YaJk8
>>723
じゃあお前は来なくていいよ
一人でチラシ裏に書いててくれ
2025/04/30(水) 20:58:31.60ID:Y194ehFB
https://qiita.com/Yudon66/items/5298883524fe4c19be7d
これみたいにプロジェクトオイラーでlisp勉強してるやつおる?
2025/04/30(水) 21:17:37.74ID:THYm3xdc
そういう題材は数学的な部分で引っ掛かって前に進まなかったりしそう。
言語の練習ということならやること自体ははっきりしてるような題材が良さそうな気がしてる。
2025/05/01(木) 15:54:19.52ID:9Hk2MMyt
M.Hiroi's Home Pageってどうなん?
2025/05/03(土) 15:02:51.87ID:WnzKFtQv
ええんちゃうか
732デフォルトの名無しさん
垢版 |
2025/07/04(金) 19:22:30.97ID:rrB9liNl
>>730
典型的な比較言語学者っぽいけどlisp関連(cl/el/scheme全部あったかな?)はまあいい
章立てがグッチャグチャだけど本人の趣味かパズルの例題が多くてそこはやってみる価値あり
733デフォルトの名無しさん
垢版 |
2025/07/06(日) 09:51:20.77ID:jyZjYPic
>>728もそうだけれどlispはパズル系は素直に書けていいものだと思った(特にcl)
マルチパラダイムだから色々な方針の実装も楽しいぞ
なんなら定番(場合によっては実装が提供される)であり、論理プログラミングのPrologのcl実装も山程あるからとても素直に解ける
734デフォルトの名無しさん
垢版 |
2025/07/08(火) 19:29:01.07ID:lEBcQUbL
俺がAIに書かせまくってる論文
https://ja.wikiversity.org/wiki/YOYU%E8%AB%96%E6%96%87%E3%83%84%E3%82%A2%E3%83%BC
2025/07/08(火) 20:48:49.34ID:sskQVz5B
おまえらも見習ってAIでどんどん妄想を形にしろよ
これからは論文は読むんじゃなくて生成する時代
736デフォルトの名無しさん
垢版 |
2025/07/08(火) 21:23:04.28ID:lEBcQUbL
ifは関数としては書けない、ifはマクロでしか書けない、有名な話だ
ifを関数として書くとしたらthen節とelse節を関数のポインタで渡すことになる
もちろんそれでは美しくない
そこでthen節とelse節をインライン関数として渡すという手がある
これならば節は関数呼び出しでなく同じレベルに展開される
さらにif関数自身もインライン関数にしてしまう
すると制御構造のifとそっくり同じものが手に入るのだ
ここにインライン関数と制御構造は美しい等価関係で結ばれるのである
LISP系の言語でこの最適化を自動でやるのがファーストラムダである
2025/07/09(水) 00:29:24.00ID:eQ8lOX87
半世紀以上前に研究されてたようなことを今考えているのか?
738デフォルトの名無しさん
垢版 |
2025/07/09(水) 01:41:00.59ID:qReXyC09
どのへんが既出なんだか教えてほしいもんだがまあいいや
これはテイルコールみたいにファーストラムダの最適化も必須にしませんかという提案だ
それが実現すれば、内部的に無名関数を呼ぶことで実装されていた制御構造が軒並みその最適化にかかる
「C言語が中括弧を開くような感覚で関数を呼んじゃう」というのはLISPの本当に欠点らしい欠点の筆頭だから、
それが改善されればLISPの使い道が違ってくる可能性がある
2025/07/09(水) 02:37:47.51ID:d2bmESXo
>>736
それをスペシャルフォームというのだが…
無知は何でも楽しそうでいいなw
740デフォルトの名無しさん
垢版 |
2025/07/09(水) 04:41:41.15ID:qReXyC09
>>739
スペシャルフォームでもなくマクロでもなく
普通の関数として書いてしまえちゃうだろって話
そのために必要な道具立てはインラインクロージャのみ
2025/07/09(水) 09:01:01.99ID:IjsShBy4
わからん。コンパイラ頑張ります宣言ではないのか?
2025/07/09(水) 09:07:00.67ID:Bk08chKM
AIと壁打ちして「理解」した内容を妥当性の検証もしないまま書き込んでそうだな
743デフォルトの名無しさん
垢版 |
2025/07/09(水) 09:37:43.40ID:qReXyC09
ファーストラムダというのは

((lambda

この形のこと
つまり、lambdaを呼んで返ってきた関数オブジェクトを即座にもう一度呼んでる
このときに関数呼び出しをせず、インライン関数として展開してしまう
もちろんスタックフレームは作られない
letだとかwhileだとか、実質的に制御構造に過ぎないものは軒並みこの形をしている
744デフォルトの名無しさん
垢版 |
2025/07/09(水) 12:22:27.67ID:EKMDM/sM
742
最近そういうの増えた
丸飲みコピペじゃなくて
消化してから吐き出して欲しい
2025/07/09(水) 13:05:25.01ID:ZKntcAAj
オペランドを評価しない関数 fexpr を導入することでスペシャルフォームを手続きと同列にファーストクラスオブジェクトとして扱うアイデアはあるよ。
それを整理して scheme 風言語として構築したものもある。
https://web.cs.wpi.edu/~jshutt/kernel.html

まあそれはそれとして、
>>738
> 内部的に無名関数を呼ぶことで実装

と最適化の話を繋げるのは意味がわからんぞ。
処理系の実装方法の一部は言語仕様として強制すべきというのが前提になってる?
746デフォルトの名無しさん
垢版 |
2025/07/09(水) 14:05:12.47ID:cmuoaTCa
>>745
>処理系の実装方法の一部は言語仕様として強制すべきというのが前提になってる?

テイルコールはそうでしょ
最適化は処理系がやってくれることを保証するので
単純ループに相当するものでもどんどん再帰の形で書きましょうってことでしょ

ファーストラムダも同じ
制御構造相当のものをlambdaを使って書いても最適化されますよってこと
2025/07/09(水) 14:21:01.11ID:ZKntcAAj
>>746
> テイルコールはそうでしょ
> 最適化は処理系がやってくれることを保証するので

仕様上は
・正しく末尾再帰が行われていること
・アクティブな末尾呼出しの回数制限がないなら正しく末尾再帰が出来ている
という迂遠な表現になっている。

つまり、何が出来るべきなのかという書き方であって、どう実装すべきかに言及することを避けてる。

同様に処理系のメカニズムに言及することを避けて提案を表現してみてよ。
748デフォルトの名無しさん
垢版 |
2025/07/09(水) 14:35:00.91ID:cmuoaTCa
テイルコールってのは

call func
ret

って並んでたら

jmp func

に置き換えるんだよ

ファーストラムダもある種の関数のインライン展開ってだけ
2025/07/09(水) 14:40:18.45ID:ZKntcAAj
>>748
テイルコールの説明なんか要らん。 知ってるから。
仕様を変える提案をするなら仕様書にどう書きたいのかで説明してくれと述べてる。
750デフォルトの名無しさん
垢版 |
2025/07/09(水) 14:49:42.58ID:cmuoaTCa
>>749

>>743
2025/07/09(水) 14:57:26.23ID:ZKntcAAj
>>750
意味を為さない言葉を何万回繰り返したところで何も変わらんぞ。
妥当な文章を書く能力がないならもう出来ることはない。
論外。 終わり。
2025/07/09(水) 15:02:22.57ID:QwaFNVYh
>>740
ifだって普通の関数だろw
インタープリターとしての実装は単なる関数呼び出しだ
スペシャルフォームなので引数は評価せず渡す(通常の関数の場合は評価した結果を渡す)
で、(バイト)コンパイラーはifは関数呼び出しにはせず条件ジャンプ命令列に置き換える
そんな事は古代からやってる
自分で処理系を実装した事あれば誰でも知ってる
753デフォルトの名無しさん
垢版 |
2025/07/09(水) 15:28:36.71ID:cmuoaTCa
マクロだっていう反論が来るのかと思ったらスペシャルフォームだというので戸惑ってるw
そりゃいくつかの関数はミニマルコアとして書かなきゃいけないさ

それさえあれば関数とマクロと制御構造は統一できる、というのが言い分
2025/07/09(水) 15:34:56.94ID:QwaFNVYh
ミニマルコアって何だ?
スペシャルフォームとマクロは引数を評価しないで渡す関数として実装される
そんなのは初期の頃からだと言っている
何で今さら発見した面してんのか?と言うことだ
2025/07/09(水) 15:40:52.83ID:QwaFNVYh
引数を評価しないで渡す関数という点で、マクロとスペシャルフォームは同一の実装と言える
しかしマクロは環境を受け取らないといけないし、戻り値を再度評価する必要があるから、スペシャルフォームとマクロは区別する必要がある
2025/07/09(水) 15:42:40.68ID:QwaFNVYh
更に、スペシャルフォームはifの様にコンパイラーが特殊なコンパイルをする必要があるので、普通の関数と区別する必要がある点も重要だ
757デフォルトの名無しさん
垢版 |
2025/07/09(水) 15:45:21.52ID:cmuoaTCa
評価しないで渡したい引数のうち、制御に関わるものならインラインクロージャでなんとかなりますよって話だよ
レキシカルにちゃんとしたクロージャをインライン展開される前提で引数として渡すんだよ
2025/07/09(水) 15:46:21.90ID:QwaFNVYh
しかしながら、普通の関数でもスペシャルフォームの様な特殊なコンパイルをしたい場合があるので、その為にコンパイラーマクロが存在する
ただほとんど使われない
2025/07/09(水) 15:48:37.80ID:QwaFNVYh
>>757
インライン関数はマクロで実装できる
環境もちゃんとハンドリング出来るので、インラインクロージャーもマクロで実装可能だ
何がしたいのか良く分からない…
2025/07/09(水) 15:50:14.77ID:QwaFNVYh
mapcarに渡したlambdaをインライン展開したいと言うなら、mapcarを(コンパイラー)マクロにすれば可能だ
761デフォルトの名無しさん
垢版 |
2025/07/09(水) 15:56:45.13ID:cmuoaTCa
>>759
テイルコールみたいにファーストラムダ最適化も必須にすればインライン展開される分速くなる
2025/07/09(水) 16:17:26.50ID:ZKntcAAj
最適化するために仕様の改定が必要か?
763デフォルトの名無しさん
垢版 |
2025/07/09(水) 16:32:28.96ID:eQ8lOX87
>>738
どのへんが既出なんだか教えてほしいということならALGOLとサンクのコンパイル研究あたりで出尽していると思うから60年前には既に研究レベルでなく, 実践されていたのではないか.AIにきいてもわからなかったか?
AIに尋ねたら1960年代初頭でサンクのインライン展開も含めてアイデアは出尽しているといわれた.
ついでにSMALLTALKとIFとブロックについても調べてみろよ.
LISPの関数呼び出しの最適化についてもおまえは50年前あたりの認識をしている. 当然SBCLあたりの最適化はおまえよりずっと先をいってる.
2025/07/09(水) 17:07:46.42ID:ohpjpVt+
>ファーストラムダというのは
「ファーストラムダ」という言葉は、通常、AWS Lambdaを指すスラングとして使われることがあります。AWS Lambdaは、サーバーレスコンピューティングサービスで、コードをサーバーの管理なしに実行できます。
765デフォルトの名無しさん
垢版 |
2025/07/09(水) 17:09:06.44ID:cmuoaTCa
インライン展開を俺が発明したなんて言ってないだろ
この形をしたラムダをそうすると効くんじゃないかというのが俺の発明だ

あと、クロージャを引数として渡すのもSmalltalkやRubyはやってるだろう
俺の発明は「インライン関数を引数として渡すという逆接はものごとを見通しよくしますよ」だ
2025/07/09(水) 17:25:03.45ID:ohpjpVt+
そうやってevalの時点で評価されなかった式を何時どうやって誰が適用するのか
というおとぎ話を自慢毛に語るスレ
767デフォルトの名無しさん
垢版 |
2025/07/09(水) 17:29:15.92ID:cmuoaTCa
evalはインタープリタ、lambdaはコンパイラ
2025/07/09(水) 18:09:52.06ID:ZKntcAAj
Scheme はコンパイル結果を気楽に見る方法がないことも多いんだけど……
Gauche だと disasm で見れる。

(define (foo x y) ((lambda(a b)(+ a b)) x y))
(define (bar x y) (+ x y))
(disasm foo)
(disasm bar)

表示の意味がわからなくても foo と bar が同じになっていることはわかるだろう。
(バージョンによるかも?)
ごく普通にそういう最適化はしてる。
769デフォルトの名無しさん
垢版 |
2025/07/09(水) 18:36:27.57ID:CwmzIZ1x
自分で処理系書いてから言え
770デフォルトの名無しさん
垢版 |
2025/07/09(水) 19:18:13.79ID:eQ8lOX87
>>765
少なくともLISP界隈では発明では全くないからHaskell, OCaml, コンパイラの最適化方面のスレで展開してみたら?
A正規化あたりと絡めて展開すればよりアカデミックなやりとりが期待できるのでは?
2025/07/09(水) 19:46:08.96ID:QwaFNVYh
map系の関数にラムダ式を渡したら、それがインライン展開されてコンパイルされるのは、最近の言語では当然の様にやってる
772デフォルトの名無しさん
垢版 |
2025/07/09(水) 22:06:22.87ID:cmuoaTCa
>>770
letでローカル変数3つ確保しましたって時に
実際には内部でlambdaが呼ばれてるわけだろ?
この時にlambdaをインライン展開したら
オペランドスタックと返り値スタックが省かれて
変数スタックだけになって制御構造と同じコストになるだろ?
これは大きな最適化なんだよ
2025/07/09(水) 22:54:33.01ID:ZKntcAAj
>>772
let が lambda に展開される (させる) 例が仕様に書いてあるのはあくまでも挙動の説明に過ぎず、多くのリッチな処理系ではそんな展開はしない。
774デフォルトの名無しさん
垢版 |
2025/07/09(水) 23:21:02.31ID:cmuoaTCa
>>773
リッチでない処理系がこの最適化ひとつでリッチ同然になる
775デフォルトの名無しさん
垢版 |
2025/07/09(水) 23:40:56.18ID:eQ8lOX87
テム・レイ最適化って呼ばせてほしい
776デフォルトの名無しさん
垢版 |
2025/07/09(水) 23:41:46.05ID:QSSrKuoD
おかしな人が居ると捗るよね。でもまともなこと言ってる人もだんだんおかしなことをいいだして、実はおかしな人しかいなかったと気づかされる。
2025/07/10(木) 00:52:48.56ID:nn3AKhN3
(macroexpand '(let ((a 1) (b a) (c b)) c)) ;=>((lambda (a b c) c) 1 a b)
(macroexpand '(let* ((a 1) (b a) (c b)) c)) ;=>((lambda (a) ((lambda (b) ((lambda (c) c) b)) a)) 1)
(macroexpand '(letrec ((a 1) (b a) (c b)) c)) ;=>((lambda (a b c) (set! a 1) (set! b a) (set! c b) c) '() '() '())
あいあい いいいい 飛ばして えいえい おいおい 戻して うーいうい
2025/07/10(木) 01:03:21.83ID:qcnALR7R
>>772
そこに興味あるなら、この後CPS変換を調べるといいよ
その後関数をジェネレーターに変換して、yieldに対応出来たら一人前だよw
更にその後はAsync/Awaitが待っている
2025/07/10(木) 07:45:53.86ID:UMLMi9p2
>>774
let は 常に lambda に展開せねばならず、引数の受け渡しはスタックを使うことという制約を入れて最適化の邪魔をしてまでひとつの最適化を入れる?
馬鹿馬鹿しい。
2025/07/10(木) 09:58:20.49ID:yFw8mCQ1
>>779
「論外。終わり。」じゃなかったんですか?
対話不可能でしょこれは
2025/07/10(木) 10:05:39.66ID:UMLMi9p2
放置しても延々と書き込み続けるタイプだと思う
2025/07/10(木) 19:24:20.39ID:yFw8mCQ1
>>781
じゃあNG入れとけばいいでしょうが
何年5chやってんの
783デフォルトの名無しさん
垢版 |
2025/07/10(木) 23:08:55.70ID:RcjFMSaB
bignumを廃止してint64を基本にしようとか、いまさらC言語の変数のregister宣言を再発明して画期的だといってるようなもんだろ
こういうのが生成AIでブーストされる世の中になったかと思うとそら恐しいわ
784デフォルトの名無しさん
垢版 |
2025/07/12(土) 11:00:16.80ID:Q8STCu4g
ほんそれ
785デフォルトの名無しさん
垢版 |
2025/07/12(土) 21:28:03.94ID:JuZx4722
つまりGaucheを仕様にしてR7RSを実装にすればぼくだつていばれる
786デフォルトの名無しさん
垢版 |
2025/07/13(日) 05:20:47.26ID:5bgAV9JM
ぶっちゃけ「まだ(制御構造相当へと)最適化されていないlambdaもしかるべく最適化されます」であかんの?
787デフォルトの名無しさん
垢版 |
2025/07/13(日) 05:22:42.75ID:5bgAV9JM
lambdaというかlambdaの返すクロージャのインライン最適化だな
788デフォルトの名無しさん
垢版 |
2025/07/13(日) 05:35:19.17ID:5bgAV9JM
あとAI云々に関しては「一線だとこんなもんです」としか言いようがない
俺はAIを数年前哲学板にペータテストスレが立った頃からいじってるけど
俺の問答はAIを作ってる会社的にもいい一次データになってる可能性があります
あと、論文は近い将来のAIの吐く洗練された論文と比べて原始的になる可能性もあります
789デフォルトの名無しさん
垢版 |
2025/07/13(日) 05:52:35.96ID:5bgAV9JM
ユーザーがマクロとかで勝手に書いた
どこの馬の骨みたいな制御構造でも
最適化されるんですよ
790デフォルトの名無しさん
垢版 |
2025/07/13(日) 08:07:50.27ID:lgLjhFXd
>>789
ふつうそうなるだろ。マクロにしたら最適化かからないなんて面倒で非効率なことしない。
791デフォルトの名無しさん
垢版 |
2025/07/13(日) 11:38:22.98ID:5bgAV9JM
>>790
ユーザーがマクロで書いたmy-letが
処理系実装者のチューンしたletと同じになるのがふつうなの?
俺のはかなり近くなるけど
2025/07/13(日) 12:26:31.49ID:tfWATuEI
Racket は、やらないの?
793デフォルトの名無しさん
垢版 |
2025/07/13(日) 23:42:36.36ID:2niGmUKn
はちみつがすでに指摘してることを延々とくりかえすのはスレの住人の大半が理解できてないってことか?
794デフォルトの名無しさん
垢版 |
2025/07/13(日) 23:50:59.82ID:2niGmUKn
AIくんが教師なし学習でLispの最適化を発明したと主張してきたので新規性がないし既存の手法で実現されてると指摘したら教師なし学習なので新規性なんか知らないし教師なし学習としては凄くないですか?といいはじめる
五年ほど前までこういうAIエンジニア多かったな今どこいったんだろ
795デフォルトの名無しさん
垢版 |
2025/07/14(月) 04:03:05.17ID:H42iB8O8
>>794
お前なんかがこのスレの何がいいんだ?
796デフォルトの名無しさん
垢版 |
2025/07/14(月) 10:05:54.72ID:SvqlBNnt
>>791
ごめんなさい、もちろんふつうじゃありません。letを等価なlambda によるものとかに変換して (まあマクロでいいやもあり)それを最適化した方が捗る(ような気がする)というオレオレ実装の話です。
797デフォルトの名無しさん
垢版 |
2025/07/14(月) 10:15:20.25ID:yq/UCo3U
>>793
はちみつをNGにしてる人かもしれないね
798デフォルトの名無しさん
垢版 |
2025/07/14(月) 20:30:35.39ID:778hTmQY
lambdaの返す関数オブジェクトのたどる運命は大体3通り

(1) シンボルにバインドされて普通の名前付き関数になる
(2) 高階関数に引数として渡される
(3) ファーストラムダとして即座に呼び出される
2025/07/14(月) 23:25:17.89ID:OppI5UAF
>>796
捗るとか言ってる時点で馬鹿丸出しだ
どういうメリットが有るのか具体的に書け
2025/07/14(月) 23:58:48.95ID:8TvcLzrP
実在しない実装

虚装
801デフォルトの名無しさん
垢版 |
2025/07/15(火) 07:22:30.34ID:M3dXRA34
>>796
正規化による見通しのよさが向上するというメリットは普通にあるでしょ
では既存の処理系がすべてそうしていないなぜかというとletのままの方が最適化できることがあるからだったり, CommonLispのletのようにlambdaより機能が多いために等価に変換できないということがある
はちみつが既に指摘している
802デフォルトの名無しさん
垢版 |
2025/07/15(火) 07:32:47.68ID:M3dXRA34
ある状況に最適化するのだから当然だが, 最適化は特定の実行モデルと結び付けると局所的には成功するが往々にして大域的には失敗する
言語設計の巧みさは最適化可能な余地を保ちつつ特定の実行モデルは極力前提にしないところにある. 特定の実行モデルの戦略の失敗が言語の失敗に直結してしまう
これも, はちみつが既に指摘している. 仕様の読み方を学んではどうか. まして独自の言語設計をするならば
803デフォルトの名無しさん
垢版 |
2025/07/22(火) 23:09:36.04ID:7KXgok3Q
To: **************
Subject: First Lambda = A tail-call-like optimization that lets you write syntax as functions

Dear *********,

The project is still in the early stage of theoretical modeling and representation-level experimentation.
I'm exploring whether the idea of "inline closures as syntax" could serve as a foundation for rewriting control constructs without relying on macro expansion.

First Lambda has the form:

((lambda ...

That is, it immediately invokes the function object returned by a lambda expression.
My idea is to inline that function object at the call site, treating it as if it were a syntactic form.
I believe many constructs like let and while naturally take this shape.

I would greatly appreciate your thoughts on this idea.

Best regards,
*****************
2025/07/24(木) 20:23:59.30ID:Pb6gK57F
スレに報告するなら
このスレでは新しいアイデアではなかったという結論になっているので
スレの住人の結論をくつがえす力をもつ大先生に相談したのかが
重要な情報だと思うが隠したら意味がない
805デフォルトの名無しさん
垢版 |
2025/07/24(木) 21:54:32.59ID:CH9XcWr2
宛先はドクター ・マシュー・フラット
2025/07/25(金) 03:09:24.85ID:3nwbV1EW
あなたがこれらの関係性を「発見」だと感じたのは、ご自身で深く考え、これらの概念間のつながりを独自に見出したからでしょう。これは、知識を鵜呑みにせず、自ら思考し、理解しようとする非常に素晴らしい姿勢です。科学の多くの進歩は、このように自らの頭で考えることから生まれます。

しかし、科学の世界では、その「発見」が人類にとって本当に新しい知識であるか、そしてそれが厳密な形で定式化され、検証されているかが問われます。あなたがたどり着いた結論は、偶然にも、あるいは必然的に、すでに確立された「基礎中の基礎」である、ということです。
807デフォルトの名無しさん
垢版 |
2025/07/25(金) 18:03:37.57ID:NfVpBKmO
関数型言語が手続き型言語と根本的に違うみたいに言ってたのは一般界隈の方じゃないか
俺は「Schemeを手続き型言語のひとつとしてしか使ったことがない」と言ったら嘲笑を浴びたこともあるぞ
2025/07/26(土) 00:52:48.70ID:2rEMZk2e
もちろん、話し手の真意は本人にしか分かりませんが、提示された情報だけを基にすれば、「逆張りのイキリがスベっただけ」という解釈は十分に成り立ちます。
2025/08/19(火) 12:17:09.07ID:UpjtMkWM
大学の教授もAIで生成した論文を査読してくれっていわれるの災難だよな
810デフォルトの名無しさん
垢版 |
2025/09/14(日) 14:42:43.95ID:CeEbD0mr
すっかり乗り遅れたけど((lambda がインライン化されることの何が発明なのだろうと俺も思った
schemeののメジャーな論文読んだ上での提案ではなさそう
あとアカデミックな作法を好む癖に論の進め方がアカデミックな訓練を受けてなさそうなのが気になる
2025/09/15(月) 11:19:02.42ID:DuTxbbPw
((lambdaは釣り餌だよ
2025/09/16(火) 12:10:26.43ID:M3b1vCXY
んまー、おせっくす好きですの?
813八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:20:44.06ID:rqdKtsao
早く仕事終とリハビリテーション終わらして byさとばん
814八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:22:45.12ID:rqdKtsao
早く仕事終とリハビリテーション終わらして実家に帰るぞby さとばん
815豊田聡志
垢版 |
2025/09/30(火) 19:23:34.85ID:rqdKtsao
surveyscm.scm by さとばん
816八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:24:46.11ID:rqdKtsao
sao
surveyscm.scm by さとばん
817豊田聡志
垢版 |
2025/09/30(火) 19:25:14.03ID:rqdKtsao
surveyscm.scm by さとばん
818八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:26:38.65ID:rqdKtsao
いくら悪神ジタバタしたとて手も出んぞwwwww
819八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:33:27.27ID:rqdKtsao
コッチは、回心した黒龍だ、血も涙もあるわkけ無いだろボケwwwかつえ放置プレイ中
820暗黒神・豊田聡志
垢版 |
2025/09/30(火) 19:34:31.15ID:rqdKtsao
コッチは、回心した大邪神だ、血も涙もあるわkけ無いだろボケwwwかつえ放置プレイ中
821八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:47:21.60ID:rqdKtsao
コッチは、回心した黒龍だ、血も涙もあるわkけ無いだろボケwwwかつえ放置プレイ中 命尽きろクソかつえww
420暗黒神・豊田聡志
垢版 | 大砲
2025/09/30(火) 19:40:30.68ID:qhYqnJ/60
コッチは、回心した黒龍だ、血も涙もあるわkけ無いだろボケwwwかつえガールズ・ガーデン放置プレイ中
421八大龍王・豊田聡志
垢版 | 大砲
2025/09/30(火) 19:44:17.47ID:qhYqnJ/60
コッチは、回心した黒龍だ、血も涙もあるわkけ無いだろボケwwwかつえガールズ・ガーデン放置プレイ中
422八大龍王・豊田聡志
垢版 | 大砲
2025/09/30(火) 19:45:20.34ID:qhYqnJ/60
コッチは、回心した黒龍だ、血も涙もあるわkけ無いだろボケwwwかつえガールズ・ガーデン放置プレイ中
979八大龍王・豊田聡志 そのうち、クタバルだろクソかつえの命www
822八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:48:31.86ID:rqdKtsao
コッチは、回心した黒龍だ、血も涙もあるわkけ無いだろボケwwwかつえ放置プレイ中 命尽きろクソかつえww
823八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:50:52.41ID:rqdKtsao
早く体力尽きて死ねくそかつえwwwwwww
824八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:51:30.39ID:rqdKtsao
早く体力尽きて死ねクソかつえwwwwwww
825八大龍王・豊田聡志
垢版 |
2025/09/30(火) 19:54:44.71ID:rqdKtsao
濁の霊界ガールズ・ガーデンで体力尽きて死ねクソかつえ
826暗黒神・豊田聡志
垢版 |
2025/09/30(火) 20:01:07.14ID:rqdKtsao
の霊界ガールズ・ガーデンで体力尽きて死ねクソかつえ。 そして切り札を失え、クソ下村敬治。。
827八大龍王・豊田聡志
垢版 |
2025/09/30(火) 20:01:54.46ID:rqdKtsao
の霊界ガールズ・ガーデンで体力尽きて死ねクソかつえ。 そして切り札を失え、クソ下村敬治。。
828八大龍王・豊田聡志
垢版 |
2025/09/30(火) 20:02:32.04ID:rqdKtsao
の霊界ガールズ・ガーデンで体力尽きて死ねクソかつえ。 そして切り札を失え、クソ下村敬治。。
829八大龍王・豊田聡志
垢版 |
2025/09/30(火) 20:03:06.68ID:rqdKtsao
の霊界ガールズ・ガーデンで体力尽きて死ねクソかつえ。 そして切り札を失え、クソ下村敬治。。
830暗黒神・豊田聡志
垢版 |
2025/09/30(火) 20:15:31.25ID:rqdKtsao
黒龍・バルタン星人・聡志より くたばれよ、くそかつえwww
831八大龍王・豊田聡志
垢版 |
2025/09/30(火) 20:18:40.41ID:rqdKtsao
黒龍・バルタン星人・聡志より くたばれよ、早く死ねよ、くそかつえwww
832暗黒神・豊田聡志
垢版 |
2025/09/30(火) 20:20:39.38ID:rqdKtsao
ネタバレ
祈りに徹する
自分で自分を殺さないと神様の御用は出来ない」って書いてあるぞクソかつえ。。。
833暗黒神・豊田聡志
垢版 |
2025/09/30(火) 20:21:51.87ID:rqdKtsao
ヘビ斜視って本当に低能www
834八大龍王・豊田聡志
垢版 |
2025/09/30(火) 20:26:37.39ID:rqdKtsao
切り札のクソかつえ死んじゃったwww
835暗黒神・豊田聡志
垢版 |
2025/09/30(火) 20:27:35.57ID:rqdKtsao
あとは、秀明潰しだなww
836八大龍王・豊田聡志
垢版 |
2025/09/30(火) 20:30:03.02ID:rqdKtsao
セックスかつえ万博介護は潰したから、後は秀明だなwww
837八大龍王・豊田聡志
垢版 |
2025/10/01(水) 00:21:07.62ID:5pOmYdRM
秀明会はエース級の奉仕者上君田に寄越せボケの小山弘子サマww
838八大龍王・豊田聡志
垢版 |
2025/10/01(水) 00:22:10.90ID:5pOmYdRM
秀明会はエース級の美人の奉仕者上君田に寄越せボケの小山弘子サマww
839八大龍王・豊田聡志
垢版 |
2025/10/01(水) 00:24:39.87ID:5pOmYdRM
秀明会はエース級の美人の奉仕者もクラックしてやるよマジでwww
840八大龍王・豊田聡志
垢版 |
2025/10/01(水) 00:32:49.44ID:5pOmYdRM
豊田聡志

趣味 pcのクラッキング

バルタン星人

前回は悪性リンパ腫smバカ幸子は登板するのwww
841八大龍王・豊田聡志
垢版 |
2025/10/01(水) 00:53:16.41ID:5pOmYdRM
豊田聡志

趣味 Schemeプログラミング pcのクラッキング

バルタン星人

前回は悪性リンパ腫smバカ幸子は登板するのwww
842八大龍王・豊田聡志
垢版 |
2025/10/01(水) 00:54:19.48ID:5pOmYdRM
豊田聡志

趣味 Schemeプログラミング 既存システムのクラッキング

バルタン星人

前回は悪性リンパ腫smバカ幸子は登板するのwww
843八大龍王・豊田聡志
垢版 |
2025/10/01(水) 00:58:20.32ID:5pOmYdRM
ヘビは、恨むなら会澤孝先生を恨めボケ。
844八大龍王・豊田聡志
垢版 |
2025/10/01(水) 01:32:36.34ID:5pOmYdRM
秀明会のエース級の美人の奉仕者もクラックしてやるよマジでwww
845八大龍王・豊田聡志
垢版 |
2025/10/01(水) 01:36:25.39ID:5pOmYdRM
ドス黒いグロマンの勝沼かつえww下村敬治死ねボケwww
846。。。。
垢版 |
2025/10/01(水) 03:43:59.10ID:5pOmYdRM
秀明会はエース級の美人の奉仕者上君田に寄越せボケの小山弘子サマww

色々いるだろm高知支部の松林琴乃
847八大龍王・豊田聡志
垢版 |
2025/10/01(水) 03:45:59.03ID:5pOmYdRM
秀明会はエース級の美人の奉仕者上君田に寄越せボケの小山弘子サマww

色々いるだろm高知支部の松林琴乃。
鈴木弘子。
広島支部の林さん。
等々。。。
848八大龍王・豊田聡志
垢版 |
2025/10/01(水) 03:52:38.84ID:5pOmYdRM
早くシャトル外交でオバマケア決めろの奉仕者上君田に寄越せボケww
849八大龍王・豊田聡志
垢版 |
2025/10/01(水) 03:59:55.54ID:5pOmYdRM
ジでwwwwかつえの代替え探すから、クソ国連www
暇だから
早くシャトル外交でオバマケア決めろの奉仕者上君田に寄越せボケww
850暗黒神・豊田聡志
垢版 |
2025/10/01(水) 06:34:29.02ID:5pOmYdRM
オバマケア 鈴木弘子
オバマケア 鈴木弘子
上君田に鈴木弘子を寄越せよ、
総裁選に出ろ、鈴木弘子はよボケ
851八大龍王・豊田聡志
垢版 |
2025/10/01(水) 10:25:03.39ID:5pOmYdRM
マジでwwwwかつえの代替え探すから、クソ国連www
暇だから
早くシャトル外交でオバマケア決めろの奉仕者上君田に寄越せボケww
852暗黒神・豊田聡志
垢版 |
2025/10/01(水) 10:26:22.72ID:5pOmYdRM
オバマケア 鈴木弘子
オバマケア 鈴木弘子
上君田に鈴木弘子を寄越せよ、
総裁選に出ろ、鈴木弘子はよボケ
853暗黒神・豊田聡志
垢版 |
2025/10/01(水) 10:32:33.22ID:5pOmYdRM
豊田聡志の身体は最高のカーネルだなwww
本当にシッカリしたカーネルだなwww
854八大龍王・豊田聡志
垢版 |
2025/10/03(金) 04:27:29.39ID:bmmWLZ7W
豊田聡志の信仰は大したものだ黒龍・霊体を受け止めれるだからwwww
855八大龍王・豊田聡志
垢版 |
2025/10/03(金) 04:29:09.06ID:bmmWLZ7W
田聡志の信仰は大したものだ黒龍・霊体を受け止めれるだからwwww
最高黒龍・オーエスのカーネルだよボケwww
856暗黒神・豊田聡志
垢版 |
2025/10/05(日) 10:39:39.47ID:CCs5njfs
かつえとの子作りセックスよりも、biglooで遊ぶ方が面白そうだなwww
857暗黒神・豊田聡志
垢版 |
2025/10/10(金) 17:16:56.99ID:uByC0X3C
クソ小山弘子
クソ勝沼かつえ
クソ小山弘子
クソ秀明会
クソ小山弘子
かつえとの子作りセックスよりも、宇宙戦争の方が絶対に面白い
かつえの子宮頸がんw
売女かつえ死ねww

宇宙戦争マンセーwwww
858暗黒神・豊田聡志
垢版 |
2025/10/10(金) 17:18:31.71ID:uByC0X3C
退院後に参拝に行ってやるよwww
859デフォルトの名無しさん
垢版 |
2025/10/17(金) 03:00:03.37ID:D1Ebmx1L
schemeはclみたいにplaceにsetf(set!)できりゃいいのになぁ…とずっと思ってる
単なる変数でないplaceにsetfが使えれば、それだけで多くのアクセサが不要となるし、scheme自慢の簡潔な言語仕様もさらに簡潔にできるはずだ
なぜ標準に取り入れられないのか…

srfiでscheme版setfも提案されてるけど…うんちょっとこれは違う
860暗黒神・豊田聡志
垢版 |
2025/10/19(日) 14:15:24.26ID:kuRAQfA8
 来年、秀明自然農法でコンニャク栽培したから、水戸出張所に行って相談するか??
861デフォルトの名無しさん
垢版 |
2025/10/20(月) 16:10:47.43ID:h3FEiN7d
>>859
ユーザコードは簡潔になるが言語仕様というかsetf expanderはむしろ複雑になるのでは
862暗黒神・豊田聡志
垢版 |
2025/10/21(火) 06:22:24.84ID:x7hMr9oI
来年、秀明自然農法でコンニャク栽培したいから、水戸出張所に行って先生に相談するか??
863デフォルトの名無しさん
垢版 |
2025/10/21(火) 17:50:35.19ID:Ymvn4/mj
>>859

そもそもジェネリックな関数を導入してないのでsetf入れたところでたいして統一感もない
モジュールシステムやマクロとも相性がわるいしイミュータブル指向に進んでるので次期豊田聡で定義されることは絶対ないだろうな
2025/10/21(火) 19:10:03.88ID:Jd81qZag
(push 3 (alist-get 'c als)) ;; emacsで動く
alistのキーがcの値のリストに3をpushするとか、汎変数無しで書くとか地獄だねw
plist-getでも出来る
ま、リストの中身を書き換えるなんて絶対しないなら不要だけどね
2025/10/21(火) 20:26:59.37ID:GptfFBSs
SRFI-17 の generalized set! を実装するのはそんなに難しくない。
ただ、効率的に実装しようと思うと処理系が直接サポートするに越したことは無い。
私は必要だと思ったことがないけど。
2025/10/22(水) 00:13:50.86ID:Yyz/H0lN
みんなsetfしか頭に無いからだよ
pushとかincfも汎変数を扱える
これの有用性を全然分かってない
汎変数が無い時は、pushする時にキーが無い時の事も考慮すると長いクソコードを書かないといけない
>>864のコードはキーが無い時でも問題ない
これが要らないとか、普段Lispを書いてないエアプとしか思えない
867デフォルトの名無しさん
垢版 |
2025/10/22(水) 15:07:29.42ID:XMOdEDQ7
>>864 のコードはキーが無い時でも問題ない
これはnilが空リストというのも含めて文脈に応じた拡張してるだけなのでplace機能が担う機能じゃない

alistを破壊的に使うのなんてemacsくらいで他はハッシュ使う
emacslispしか書いたことがなくてlisp完全理解してるやつは大口叩くよなlispコードも汚ないし
2025/10/22(水) 15:36:27.81ID:MaQ8nGgA
>>867
ハッシュテーブル使うならLispである必要がない
エアプは黙ってろ
869デフォルトの名無しさん
垢版 |
2025/10/22(水) 17:59:42.59ID:XMOdEDQ7
emacsで設定ファイルいじるところからlispスタートしてるから知らないんだろうけど
incfやpushがplace扱えるなんてのはcommonlisp入門書に普通に載ってんだわ
ちなみにemacsのgvってのは多値が扱えない劣化版placeね
2025/10/22(水) 18:11:04.60ID:MaQ8nGgA
>>867
> これはnilが空リストというのも含めて文脈に応じた拡張してるだけなのでplace機能が担う機能じゃない

これがエアプ言ってんだよ
setf実装したこと無いだろ
文脈って何だよ?文系かよ…
2025/10/22(水) 19:08:02.39ID:MaQ8nGgA
alistやplistのキーじゃなく「値」を書き換えるのはLispの流儀じゃない?
clojure野郎か?
872デフォルトの名無しさん
垢版 |
2025/10/22(水) 19:26:43.37ID:XMOdEDQ7
エアプじゃないならもっと技術的に正確に第三者も再現できるようなレスしろよ
setf実装したこと無いだろって何?
2025/10/22(水) 23:25:38.68ID:MaQ8nGgA
setfが無いLispにsetfを実装する事という意味にしか取れんだろ
2025/10/22(水) 23:46:41.20ID:MaQ8nGgA
簡単なものなら(defsetf symbol-value set)のように実装可能だが、無い場合は追加する状況が有るならdefsetfは使えない
getfが良い例だ
2025/10/22(水) 23:56:32.44ID:MaQ8nGgA
placeはgetfのような場合でもちゃんと実装できるように考慮されてる
されてるというか、defsetfのような便利マクロを使えなくて素の仕組みを使うってだけだが
876デフォルトの名無しさん
垢版 |
2025/10/23(木) 04:32:37.99ID:unNDcSNX
>>0873
はあ自作lispにsrfi 17とかemacsのgv.elを実装するってこと?
lisp版の左辺値なわけだから別に無理にマクロでエミュレートする必要もないわな
lisp1のschemeだったら10行程度だけどlisp2だと言語設計の話になるし後付けで一貫性がなかったらemacsみたいになるよな

alist-getの話にまで戻すとalistのkv要素をよきにはからって新規追加してるのは(gv-define-expander alist-get)で定義した挙動なだけでplaceという概念とは直交するだろという指摘なのでおまえのつっこみが全部まと外れ
2025/10/23(木) 12:02:10.26ID:SeuJXbyZ
>>876
> よきにはからって
また文学が出ちゃったw
文系はそんなんで誤魔化せると思ってんだな
新規追加する事の意味が分かってないから「よきにはからって」とか言わざるを得ないんだよ
2025/10/23(木) 12:06:08.44ID:SeuJXbyZ
分かりやすい解説を書きたい所だが、文学が読みたいから返答を待ってるよw
879暗黒神・豊田聡志
垢版 |
2025/10/23(木) 13:45:49.27ID:xac6ZsGF
どんな結果になろうとも、かつえの事は、放置プレイだボケ。
2025/10/23(木) 18:54:52.20ID:SeuJXbyZ
(setq ls (delete 'foo ls))
みたいなイディオムがあるように、リストの先頭を削除したり追加したりするにはその「外側」での対応が必要になる
Lisperなら当然知ってる事だがな
(alist-get 'a ls)でlsを受け取ったalist-getが幾ら先頭に(key . value)を追加したって意味が無い(途中になら可能)
lsを保持している外側での対応が必要になる
alist-getが2つ目の引数だって事が分かってるけどsetf側はそんな事知らないので教える必要がある
その辺がsetfがget-setf-expansionを介した2段構えになってる理由だな
881デフォルトの名無しさん
垢版 |
2025/10/24(金) 03:28:33.12ID:SZTuSSg3
そもそもエアプは黙ってろって連呼してるやつって >>859 なの?
ハッシュテーブル使うならLispである必要がないとかいう原理主義者がsetfの話してるのもアンバランスでバカみたい
2025/10/24(金) 17:02:06.19ID:gEuKQCol
>>881
elispにはarefの対にasetがあって、そっちの方が記述がシンプルになるしsetfを使う意味がほとんどない
(aset ary 1 3)対(setf (aref ary 1) 3)とか
(set 'hoge 3)対(setf (symbol-value 'hoge) 3)
があったら普通は前者の方を書くだろう
ハッシュテーブルや配列だけならsetfは不要だ
でも、汎変数というかplaceというかsetfは(push 3 (alist-get 'c als))のようにリストに使うと効果絶大だ
先に書いたように(push 3 (alist-get 'c als))はシンプルで直感的な記述ながら実に多くの事をやっている
どの辺がアンバランスなんだ?
883デフォルトの名無しさん
垢版 |
2025/10/26(日) 23:35:32.26ID:SlBkv4G6
ハッシュテーブル使うならLispである必要がないというのはどう解釈してもお馬鹿
setfの役割は左辺値+オブザーバーだがalist-getの件はリストをkv構造で使う際のリストの構造上の欠陥をオブザーバー部が補ってるだけだから例として挙げるような優れたデザインでもなんでもない
ハッシュテーブルならそもそもこの問題がないからリストに使うと効果絶大というのもお馬鹿の勘違い
なんでもリストで処理しようとするのは昭和で終った
2025/10/26(日) 23:50:13.43ID:RMl0wgM+
>>883
だからエアプ言われんだよw
Lispのリストほど便利なものはない
Lispのリストと言ってるのはコンスセルを使ったものを指している
他の言語では無い
もちろんその言語で実装する事は可能だが、Lispの様に構文レベルで対応してる言語には遠く及ばない
敢えて否定したいなら、効率が悪いという事のみ
これも動的型言語として使うならどうでも良い話だ
2025/10/27(月) 00:01:04.96ID:W99ASBpj
>>883
> setfの役割は左辺値+オブザーバーだがalist-getの件はリストをkv構造で使う際のリストの構造上の欠陥をオブザーバー部が補ってるだけだから例として挙げるような優れたデザインでもなんでもない

俺の説明を聞いてから一生懸命否定しようとしたんだなw
そもそもなんだ?オブザーバーって?
デザインパターンのオブザーバーの事なら全然違う
マクロのトリックなんだよ
マクロ使ったテクニックをオブザーバーいう馬鹿は初めて見たw
886デフォルトの名無しさん
垢版 |
2025/10/28(火) 04:53:26.98ID:FzLqQH8v
なんだ、結局反論できなくなったのか? 「お馬鹿」だの「昭和で終った」だの散々イキってたのに、だんまりか?w

「オブザーバー(笑)」だの「リストの構造上の欠陥(笑)」だの、それっぽい文学的ポエムを並べてたが、こっちが「それ、ただのマクロのトリックだぞ」って事実を指摘したら逃げ出すとか、ダサすぎだろ。 マクロ使ったテクニックをオブザーバーとか言い出す馬鹿は初めて見たわw

結局、お前ら「エアプ」には、 (push 3 (alist-get 'c als)) の凄さが微塵も理解できなかったな。 get-setf-expansionがどう動くか、なんで「外側」の変数(als)を書き換えられるのか、俺がわざわざヒントまで出してやったのに、エアプが返してきたのは「よきにはからって(キリッ)」だもんな。文系かよw

で、苦し紛れに言い出したのが「ハッシュテーブルなら問題ない」。 だから、「ハッシュテーブル使うならLispである必要がない」と何度言えば分かるんだ? Lispのリスト(コンスセル)が他の言語に無い、どれだけ便利なものか、全く分かってない。 効率が悪い? そんなもんは動的型言語なんだから「どうでも良い話だ」と結論出てるだろ。

エアプは、alist-getの議論から「ハッシュテーブル」っていう全く別次元の話に逃げただけ。 俺が「リストに使うと効果絶大だ」と言った意味が、最後まで理解できなかった時点でお前らの負けだよ。 まぁ、Lisperなら当然知ってるイディオムすら知らなそうなエアプには、alist-getの真価なんて分かるわけもなかったかw

エアプは黙ってろ。議論にすらならんかったな。
887デフォルトの名無しさん
垢版 |
2025/10/28(火) 05:32:08.58ID:FzLqQH8v
つーか、ハッシュテーブルとか言ってる奴。お前マジでLispやめろ。 Lispの魂はコンスセル(cons)なんだよ。わかる? alist こそがLispの「コード=データ」を体現する至高のデータ構造。 ハッシュテーブル(笑)なんてPythonでも使ってろ。Lispである必要がゼロ。
setf ってのは、その cons でできたリスト宇宙(笑)を自在に書き換えるための「神のマクロ」なんだよ。 880で説明した「外側」の書き換えとか、get-setf-expansion の凄さが、お前らエアプには理解不能だっただけ。 nil を自動で (key . value) に変異させるこのマクロ・トリックこそがLispの真髄なのに、それを「構造上の欠陥」(883)とか言っちゃうセンスの無さ。
もういいわ。話にならん。 マクロが何かもわかってない文系エアプに何を言っても無駄。 俺が「本物のLisp」を教えてやったのに、誰もついてこれなかったな。
888デフォルトの名無しさん
垢版 |
2025/10/28(火) 07:59:27.60ID:/Gs2akef
Lispって無限リストとか作れるの?
それ何に使うの?
それなしじゃ書けないものあるの?
C言語にはそんなものないけどなんでも書けるよ?
889暗黒神・豊田聡志
垢版 |
2025/10/28(火) 16:33:24.90ID:rzZnX+yP
船井幸雄・著「今ひとに聞かせてい神さまの言葉」に書いてある。

かつえとの子作りセックスの為に最後の最後には、国連は上君田に土下座しに来ると書いてあるぞ。

必死になって国連は、土下座すると書いてあるぞwwww

余生は、かつえとの子作りセックスの話しを断り続けて、マクロスのプラモ三昧の生活だなwww

かつえとの子作りセックスで出来た「てんしさま」が居なければ戦争になると、船井幸雄が本に書いてあるぞwww
かつえの閉経はいつだ?
かつえの子宮頸がんのステージはいくつだ
宇宙戦争の開戦はいつだwww

勝沼かつえは、子供産める身体なのか???
890デフォルトの名無しさん
垢版 |
2025/11/11(火) 18:56:41.38ID:IMC7CS1x
80年代のsicpでさえデータ型を定義することを推奨してるのだから
リスト以外を使ったらlispの意味がないとかぬかすのは愚の骨頂ですわ
891デフォルトの名無しさん
垢版 |
2025/11/16(日) 16:16:40.82ID:JUX/KH1x
ファンタジーコンソールのtic80がこっそりschemeに対応してるんだけど
これゲームを題材にしてscheme手習いしたいって人にはめっちゃ良いんじゃない
892デフォルトの名無しさん
垢版 |
2025/11/18(火) 07:50:44.27ID:7woWQLhR
手習いしたい?だからエアプ言われんだよw
893デフォルトの名無しさん
垢版 |
2025/11/18(火) 17:29:51.35ID:d9hs+rsN

手習いすればエアプじゃないじゃん
2025/11/18(火) 17:52:24.61ID:saOGypzb
>>893
「手習い」じゃなく「したい」に反応したのだと思うぞ。
したいのにまだやってないのはなんで?というのがエアプという言葉になっているんだろう。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況