21/02/17 04:32:37.72 KZUgEKHz.net
後は語り尽くされたlisp1/2の分化の話になるのでその辺はググって
319:デフォルトの名無しさん
21/02/17 04:57:15.21 KZUgEKHz.net
補足
elの挙動は完全にバグいので忘れた方がいい、一方で関数実体はリストのサブタイプではないとヒューリスティックに判定されるのでそもそもill-defined
320:デフォルトの名無しさん
21/02/17 18:52:29.11 zk5Pyjxw.net
アラン・ケイもそれを自分でやってみようとすることが重要だと言ってる
原始関数が変われば何もかもが変わるわけだから
変わった世界が良いのか悪いのか、は自己言及がどれだけよく出来てるかどうか
ということだと思うんだけど
つまり、僕らが使いやすいと感じるかどうかではなく
未来にそれに慣れた人たちがより効率の良い開発が出来るかどうか
で、グレアムは自分なりにBelは良く出来てると思ってるんだろう
オレにはよくわからんがw
321:デフォルトの名無しさん
21/02/17 21:58:31.92 yF2gYpL6/
「コンサル・IT業界」を俺が全解説する やりたい事ない就活生は全員集合!
URLリンク(www.youtube.com)
努力不足でSESに転職
URLリンク(www.youtube.com)
【転職】日系大手企業から外資系企業への転職は困難な道だ
URLリンク(www.youtube.com)
【就活】非体育会系はどう戦うべきなのか?
URLリンク(www.youtube.com)
「圧倒的努力」と言いたがる奴www
URLリンク(www.youtube.com)
322:はちみつ餃子
21/02/18 00:14:56.95 k6/K1ymI.net
グレアムが現役プログラマだった時代なら実務に全振りしただろうが、今は投資する側の立場だからね。
投資に技術的な知見を活かしてはいるんだろうけど、道楽が出来るんだろう。
323:デフォルトの名無しさん
21/02/18 01:58:35.80 lD1LwcuS.net
レディットで実装した人いるね
確かに使われてみなければ分からん事もたくさんあるので使ってみたい、まあ、そのうちね…
原典からlit=appqを引用(復古)するのなら、read&eval結果を示すのでなく、各々の挙動についてイメージできるように書いてほしい
とりわけlitは、302のレスにあるdefunをdefmacroに置き換えた定義(その場合(lit a b c)と記述できる)であっても、
より強力なreader macroによる、定義(e.g.quote)でも実装できるのだから、なおさら
324:デフォルトの名無しさん
21/02/18 02:07:31.14 lD1LwcuS.net
でもグラハムは尊敬してるよ、著書もエッセイ以外紙版で全部持ってるし、啓蒙家としての実績を差し引いてもトップクラスのハッカーであるのは間違いない
325:デフォルトの名無しさん
21/02/18 03:15:27.49 sRdwF113.net
>>323
言葉足らずでした
clは基本的にapplyへマクロを渡せないから、or/andに対応したsome/everyが提供されてるわけだけど、展開効率を無視すればread時に関数へすり替えるワークアラウンドで実現できる
そこが売りなんだからもうちょっと仔細を、と
326:デフォルトの名無しさん
21/02/18 06:11:12.33 FG25zgsT.net
ゲイツ、ジョブズと同い年なんだよな
327:デフォルトの名無しさん
21/02/19 11:35:19.85 VprFkjBX.net
・知能は高い
・こまかい技術用語をちりばめてくるので詳しそうと思わせる
・言語仕様と歴史的経緯と個人研究の区別をつける意識がない
・検証するとトータルとしては話が嘘
こまったもんだ
328:デフォルトの名無しさん
21/02/23 02:25:08.36 VIkkm8/q.net
関数がリストで表せるからatomじゃないってのは気持ち悪いな
別にどんな言語であろうと関数定義はトークンの並び≒リストで書けるわで
論理学では関数や述語はそのシンボルと引数のリストとして書かれるにも関わらずatomと定義される、あんまり明るくないんでなんでそうするのかは知らんが
329:デフォルトの名無しさん
21/02/23 03:38:31.96 aA0AvmX/.net
ELisp だと、一部の関数は本当にリストとして保持されてたりするんだよね。
ラムダ式そのままの形で。
だから car や setcar とかで中身にアクセスできちゃったり。
330:デフォルトの名無しさん
21/02/23 04:39:24.64 VIkkm8/q.net
elのfunctionはid関数っていうね…知りたくなかった
関数定義をいじくりたいならformとして持ち回って、invokeする時にfunction噛ますのがベストプラクティスと思うよ、わりとよく見る
331:デフォルトの名無しさん
21/02/23 04:45:23.10 VIkkm8/q.net
あ、後半はちゃんと関数を理論と整合するatomとして扱うlisp(clとか)への言及です
332:デフォルトの名無しさん
21/03/14 21:42:37.21 ykHNi/i1.net
linuxでdr.schemeがちゃんと表示してくれなくて追加パッケージも入れられない
(表示が崩れてまともにサブウインドウが開いてくれない)
どころか終了すらまともに出来ないので、、、
探したらgeiser(Emacs拡張?)というのがあって
それ入れたらEmacsからracket使えるようになった(≧∇≦)/
追加バックはコマンドラインから入れられた
これで充実した春休みが送れそうだぞ
333:デフォルトの名無しさん
21/03/15 17:40:08.88 mTFo5Bvn.net
Happy Hacking!
maclispのpitman/moonual読んでるけどシンボル操作系ユティリティが充実してて楽しい、ちまちまclへ移植
そんなのもうたくさん誰かやってるだろって?絶対にググらないぞ
334:デフォルトの名無しさん
21/03/15 17:56:03.28 iXam+Zcq.net
誰かがここに検索結果を貼る可能性を考えなかったのが敗因でした
335:デフォルトの名無しさん
21/03/17 18:41:37.66 e+VOZDZq.net
gosh> '()
()
racket> '()
'()
(。・_・。)…?
336:はちみつ餃子
21/03/17 19:32:10.48 sFqg8ROj.net
>>335
Racket でも (write '()) としたら quote は付かない。
repl が quote を付けてる。
空リストの外部表現は () が正しい。
337:デフォルトの名無しさん
21/03/17 21:49:16.02 e+VOZDZq.net
racket> '()
'()racket> '()
になる……
338:デフォルトの名無しさん
21/03/17 21:49:52.85 e+VOZDZq.net
訂正
racket> '()
()racket>
になる……
339:デフォルトの名無しさん
21/03/17 22:26:44.32 e+VOZDZq.net
すんません、再度訂正
racket>(write '())
()racket>
になります
340:デフォルトの名無しさん
21/03/18 00:10:13.29 3weRgygV.net
replに代わってrpeplを提唱したい
意外とreadは仕事をしている
clだけどread-from-stringにはいつもお世話になる
341:はちみつ餃子
21/03/18 01:34:59.90 4J+m36hV.net
>>337-339
モンキーパンツかよ。
342:デフォルトの名無しさん
21/03/18 21:03:14.59 jgE2sGe4.net
連投してスレ汚しすんませんでした
こんなのあるんだね
URLリンク(en.scratch-wiki.info)(programming_language)#First_Class_Continuations
Snap!: Scheme Disguised as Scratch
URLリンク(youtu.be)
343:デフォルトの名無しさん
21/03/19 14:16:23.58 6iPIiOby.net
Lispへの憧憬
URLリンク(xtech.nikkei.com)
Lispに対する偏見、エリートコンプレックスを赤裸々に吐露していて参考になった
すこし弄れるからといってエリート意識持っていたりするのも同じ事なんだよね
そこに本質的な差は無いし、能力的な差も殆どない
344:デフォルトの名無しさん
21/03/19 19:07:28.92 VzIhkYvX.net
>>343
なんかカッコいい感じは分かるけど、なんでそうなのかは分からん
Fortranはすげー科学者がみんな使ってて技術的にも常に(今も、Fortran2020を見よ)最先端だけど、別にFortranはカッコよくないと思うし
どういう心理なんだろ
345:デフォルトの名無しさん
21/03/19 19:12:24.45 VzIhkYvX.net
思うに、使ってる層のエリート度で考えるとFortranと変わらん
思うに、単純にコードの見た目がalien technologyっぽいかだろ
by an alien
346:デフォルトの名無しさん
21/03/19 19:13:41.78 VzIhkYvX.net
大事なことなので2回思ってしまった…
見た目は大事ってことじゃね
347:デフォルトの名無しさん
21/03/19 19:21:49.87 VzIhkYvX.net
ところで記事に挙がってるJava、cl/scm、(モダン)Fortranの全てにガッツリ関わってるSteele先生すげーな
348:デフォルトの名無しさん
21/03/19 20:26:43.21 6zFezuIX.net
十年前の記事だけど状況はだいぶん変化したのでLispへの憧憬などというものがもう成り立ってない・・
十年前に書き込んでくれ・・
349:デフォルトの名無しさん
21/03/19 21:04:26.12 RMQx/osX.net
なあにlispの本質は60年前から変わってないさ
lispに直接関わる事じゃないんだけど、ちょっとよろしいかしら
ISLISPなるものの規格を読むのにjisc.go.jpに登録しなくちゃならないんだけど、pcからもスマホからも"障害が発生しました"と怒られて進めないんだけど、俺だけ?
ちなみに一月前にも試して同じだった
フリーな規格なのでhtml版読めるとこもあるけど、一応pdfもと
350:デフォルトの名無しさん
21/03/19 21:11:14.03 RMQx/osX.net
一部の日本人が布教に熱心で検索にかかりまくるから胡散臭くて敬遠してたんだが、少なくとも初期はcl委員が関わってるし由緒はあるんだよな
無難なlispだが、大体スーパーセットなclにアクティブですごい処理系沢山ある限り絶対流行らんが
あんまり布教頑張るとネガキャンに見えるぞ…
351:デフォルトの名無しさん
21/03/20 01:03:24.86 iR2BedGg.net
>>342
vimだと階層に合わせて背景塗り分けるプラグインとかあるね
Peirce(パースの法則の人)も初めはlogical graphと言う円で囲む二次元言語を考えてたんだが、今言及されるときはテキスト表現で()になってる(そして読みやすい)
歴史はめぐるってか
ちなみにlispと見た目が似てるからってパーサを書いたが、やはり親和性が高い
面白いのでオススメ
352:デフォルトの名無しさん
21/03/20 01:11:33.86 iR2BedGg.net
コードエディタじゃなくて残念なんだけど、愛用してるOneNoteのテキストのドラッグが()ごとドラッグしてくれるのに気づいた
まあいつものMSのお節介なんですけどね
本来の用途である物書きでは選択範囲を自由に決めさせてくれないイライラ要素
353:デフォルトの名無しさん
21/03/20 01:12:20.50 iR2BedGg.net
(特に日本語!)
354:はちみつ餃子
21/03/20 01:20:25.61 O2z0YRFR.net
規格っつーのは多少の粗があっても皆で統一したほうが便利だというもんなんで、
ユーザー規模がないものは規格化が活きてこない。
ISLISPでコードが書いてあってもオレオレLISPで書いてあるのと大差ないんだよ。
共通の知識になってないから。
ISLISP の仕様自体が悪いわけではないし劣っているわけでもないと思うんだけど、
最初に広められなかったらこれから広まるってことはもう無いんだろうな。
それはそれでいいんじゃね。 細々とやっていくのが好きな人もいるんだろ。
355:デフォルトの名無しさん
21/03/20 01:39:51.02 SzdWYV/s.net
30年事足りるほど十分カバーしてるclってすごいよな(実働は1980年初頭だからもっと?)
まあマルチスレッドあたりの仕様がバラバラなので、そこをしっかり決めてくれるMACLISP風規格があれば、俺はポッと出でも支持するんだが
356:はちみつ餃子
21/03/20 02:00:29.14 O2z0YRFR.net
>>355
Scheme で言う SRFI に相当するものとして Common Lisp にも CDR (Common Lisp Document Repository) があるんだが、
Common Lisp は Scheme よりも実務主義というか話し合いするよりも動くライブラリを置いときゃいいだろみたいな文化があって
共通仕様の策定に熱心ではないような気がするな。
357:デフォルトの名無しさん
21/03/20 02:13:36.08 SzdWYV/s.net
>>356
今誰が主導してるかと訊かれて、答えに詰まるのは特異な状況だとは思う
商用(持ってないけど)ですら保守的にみえる
ぬるま湯に浸かるのを良しとしないISLISPの人を讃えたい
フリーでまともな処理系待ってるから出来たら起こしてくれよな!(讃えるだけ)
358:デフォルトの名無しさん
21/03/20 02:19:30.20 SzdWYV/s.net
こんな感じの人現れないかな
URLリンク(i.imgur.com)
359:デフォルトの名無しさん
21/03/20 03:36:41.06 y8ipzAe/.net
でもミンスキーは言ってたよ
表情や仕草が人間ぽいものはたくさん作られたが、
福島の震災で作業できるロボットは創り出せなかった
もう何十年も止まったままだ
って
360:デフォルトの名無しさん
21/03/20 03:47:36.11 J9z4ezp0.net
SRFI出るや否や写経と称してシュババとクオリティ実装するclerが結構居るし、必要とあらば足りるしな
quicklispにも結構載ってるよね、clに混ぜるのは違和感あるからあくまでお手本としてアイデアを拝借するだけだが()
scheme処理系も多くのSRFIを標準で揃えてるわけじゃないから(ポートは容易だろうが)、やっぱまとめ役が居ないことに尽きる
qlがやる気出さないかな
361:はちみつ餃子
21/03/20 15:18:16.80 O2z0YRFR.net
>>357
Common Lisp や ISLISP のワーキンググループは解散してるはず。
規格としての主導者は現時点で存在しないよ。
制度の詳細は知らんから再開できるのかもしれんけど。
362:はちみつ餃子
21/03/20 15:25:35.53 O2z0YRFR.net
SRFI や CDR は (英語がわかるなら!) 誰でも提出できるし、
議論が尽くされたと思ったときに決定稿に (あるいは撤回を) していい。
ユーザーコミュニティの中に文書の置き場と相談の場所があるだけなので、
誰かが可否を決定してるわけではない。
主導者がいないっつってもコミュニティで議論してたらだいたい「いつもの面子」みたいにはなるだろうけどな。
つまり SRFI や CDR で決定稿になっても権威が与えられるわけではないので、
そんなプロセスを経ずとも適当にライブラリを作って皆が使ったり使わなかったりして
デファクトスタンダードが決まっていけばそれでいいんちゃうの?
という考え方もあって、 Common Lisp は割とそういう空気っぽい。
Common Lisp のことはそれほど知らない (Scheme についてもあまり知らないけど)
ので間違ってたら指摘してね。
363:はちみつ餃子
21/03/21 02:50:10.72 GD6fpf+y.net
ところで IEEE の Scheme は期限を過ぎても更新せずにそのまま廃版になってたみたいね。
URLリンク(standards.ieee.org)
知らんかった。
元から参照しているやつはあんまりいなかっただろうし
ステータスが Withdrawn になったからといって何か変わるわけでもないけどさ。
364:デフォルトの名無しさん
21/03/24 15:11:25.30 HKW94SjI.net
>>342
URLリンク(i.imgur.com)
365:デフォルトの名無しさん
21/04/04 11:13:09.40 dz+wreGq.net
lisp machine触ってみたいなと思ってたらとても素敵な物が手軽にあった!
URLリンク(archives.loomcom.com)
366:デフォルトの名無しさん
21/04/04 22:30:38.28 9kDPlOMr.net
素敵!
367:デフォルトの名無しさん
21/04/05 19:12:20.11 DVkxDxiZ.net
わだばさんのところに紹介があった
URLリンク(g000001.cddddr.org)
368:デフォルトの名無しさん
21/04/05 21:56:17.84 i9PX2oQn.net
generaはwikipedia読んだ程度だけど随分先進的そうだ
mac/lml/clまぜこぜだそうな
>>364みたいな感じでマウスで弄ったりカーソル置くと引数やdocがポップアップしたり
オンラインヘルプ大好き人間としては興味あり
まあ今時のソフト無くてもテキスト書くくらいなら十分使えそう
試したらレポる(たぶん
369:デフォルトの名無しさん
21/04/05 22:16:42.87 i9PX2oQn.net
98年まで開発(メンテ?)されてたのに驚き
370:デフォルトの名無しさん
21/04/05 23:14:43.49 Z3TcF1gw.net
>>365
詳細にドキュメント化されていて迷うことは無さそうだけど、これで手軽ってどんだけ良く訓練されてんだよw
371:デフォルトの名無しさん
21/04/05 23:16:47.02 wm1TeUKF.net
lisp machine/generaではcやFortranもlisp実装なんだよね
性能はさておきとても興味深い
372:デフォルトの名無しさん
21/04/05 23:42:14.84 i9PX2oQn.net
権利的に大丈夫なのかが気掛かりだ
Symbolics(のようなもの、symbolics-dks.com)はまだホームページ持っててソフト売ってるわけで
実働してるかは怪しいが
lisp machineのVMもいつまで動くやら、動作報告のあるブロブのビルド方法は不明、linuxのバージョン上がればバイナリ互換性が失われるかもしれない
近いうちにロストテクノロジーになるなこれ
373:デフォルトの名無しさん
21/04/06 00:03:42.02 4WR5kIDO.net
linuxも一応abiの規定あるけど同じアーキテクチャでも違うディストロでそのまま動くとは限らんしな
とりあえずクローンした気がする(気がするだけ)
winならx86系でさえあれば安泰なんだが、generaのXインターフェイス使ってるぽいし無理そうだよなあ
うちでは代々バイナリをコピペし継いだoffice95がwin10でバリバリ元気に働いてるよ
374:デフォルトの名無しさん
21/04/06 19:03:06.66 9PToVtUo.net
Movitz
URLリンク(common-lisp.net)
今は開発してないらしいが
375:デフォルトの名無しさん
21/04/06 19:36:16.54 R6aCJEvU.net
Alto→NextStep→OSXがコンシューマ向けになって成功してるのに
Interlisp-D、Symbolicsは(パンピー的には)伝説のマシンのままなのはどうしてなんだぜ
376:デフォルトの名無しさん
21/04/06 19:41:57.45 R6aCJEvU.net
Next, OpenStepを元にしたGNU/Stepというのもあるけど
GNU/HURDが完成したら、Lispマシンぽいことやるんでしょうかね…
Objective-Cならぬ、Lispective-C(仮称)で
377:デフォルトの名無しさん
21/04/07 02:31:56.66 nO5/cs4F.net
>>376
そういう考え方リスペクトする
378:デフォルトの名無しさん
21/04/07 22:28:51.32 0y6O4yId.net
GNUは、というかストールマンが目指してるのはフリーな(自由な)CとLispの環境だと思うんだよね
379:デフォルトの名無しさん
21/04/07 22:50:57.97 BC88Bm4+.net
guileをゴリ推してるけどなにそれ状態だよなー
特段良いとは思わないけどlisp押ししてくれる貴重な権力者
正直C協調性だとか拡張向きだとか今時普通なんで売れないと思います
380:デフォルトの名無しさん
21/04/07 22:52:05.81 BC88Bm4+.net
応援のつもりで一応入れてる
ちゃんとダウンロード数カウントしてるか知らんが
381:はちみつ餃子
21/04/08 01:27:32.57 d0EnvaGP.net
Guile も良い処理系だよ。
Windows ではいまいち使い勝手が良くないからワイはあまり使わんけど。
GNUプロジェクトとして開発しているだけあって、
ライセンス的にもビルドプロセス的にもGNUのソフトウェアとは連携しやすいから
個別のソフトウェアとしてどうこうというだけでなく
GNUプロジェクトであることに意味があるんだと思う。
ただアプリケーションの拡張用に Guile はリッチすぎる気がする。
ライブラリはホスト環境 (アプリケーション) 側で用意するから
言語処理系の側は単純なほうがありがたいことが多い。
GIMP が TinyScheme をベースにしてることからもわかるように、
拡張用言語はこんくらいの規模でいんだよな。
382:デフォルトの名無しさん
21/04/08 18:16:52.22 IR9u3KhO.net
GNUといえばEmacs
最も普及しているLisp環境
383:本田
21/04/09 05:55:12.32 U7WaDuwU.net
>>365
GitHub - lisper/cpus-caddr: FPGA based MIT CADR lisp machine - rewritten in modern verilog - boots and runs
URLリンク(github.com)
384:デフォルトの名無しさん
21/04/10 00:08:20.59 pgV1eSpW.net
guileはdicoと使うと便利ぞ
dicoはdictと喧嘩しやがるアレなやつだからだが
385:デフォルトの名無しさん
21/04/10 00:11:58.64 pgV1eSpW.net
>>383
既にハードも気軽にお手製できる時代だったな…
やったことないんでどこまで気軽か知らんが
386:本田
21/04/11 07:05:56.11 vMH2MoUG.net
>>385
Unlambda.com | Main / Cadr
URLリンク(www.unlambda.com)
Retrocomputing - MIT CADR Lisp Machines
CADR Emulation
387:デフォルトの名無しさん
21/04/22 03:52:07.40 vjCFYs66g
転職×副業で年収5500万円を稼ぐ32歳の仕事論
URLリンク(news.livedoor.com)
年収5000万円超。『転職と副業のかけ算』で大ブレイク、motoさんの「稼いだお金の使い道」
URLリンク(zuuonline.com)
「共感力」と「自我」がない人は営業に向かない。ビジネスで相手を満足させるための3つの力
URLリンク(headlines.yahoo.co.jp)
「転職は“できること”、副業では“やりたいこと”をする」
motoさん×転職エージェント「Geekly」が考えるこれからの働き方
URLリンク(www.geekly.co.jp)
成長する人だけが知っている「金脈」の見つけ方、転職の達人・motoさんに聞く
URLリンク(diamond.jp)
motoさんが垣間見た、年収5000万円超でも届かない「超富裕層の世界」
URLリンク(zuuonline.com)
【moto】「10年で年収を50倍」にしたサラリーマンが語る、無理なく市場価値を上げる方法
URLリンク(job.newspicks.com)
388:デフォルトの名無しさん
21/05/04 13:30:15.28 fppjg2ZR.net
LispとCの融合ということだと、KCLはLispective-Cなのでは
389:本田
21/05/06 21:07:40.28 0MCggaNl.net
>>381
Guile-based Emacs
URLリンク(www.mit.edu)
390:デフォルトの名無しさん
21/05/08 16:12:40.38 HQQ9X3gD.net
Racket Programming the Fun Way: From Strings to Turing Machines
URLリンク(nostarch.com)
391:デフォルトの名無しさん
21/05/25 18:47:13.72 JJYQeYh+.net
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)))))
392:デフォルトの名無しさん
21/05/25 18:50:37.18 JJYQeYh+.net
あ、分かりました。
393:デフォルトの名無しさん
21/05/25 19:30:00.29 xQ/lxTUk.net
そうか
394:デフォルトの名無しさん
21/06/28 10:43:13.88 TRKsA7C/.net
Schemeで
(newline)
(display 1.0)
のように複数の文?をつなげて実行することができます。
x が正のときに (newline) と (display 1.0) を続けて実行するようにするにはどのように記述すればいいのでしょうか?
395:デフォルトの名無しさん
21/06/28 10:44:02.91 TRKsA7C/.net
>>394
(if (< 0 x) …
と if を使いたいです。
396:デフォルトの名無しさん
21/06/28 11:02:31.15 PxTgcihw.net
(if (< 0 x) (begin (newline) (display 1.0)))
397:デフォルトの名無しさん
21/06/28 11:03:43.42 7XtL7Dy7.net
(if (< 0 x)
((lambda ()
(newline)
(display 1.0))))
398:デフォルトの名無しさん
21/06/28 14:39:39.18 TRKsA7C/.net
>>396-397
ありがとうございました。
399:デフォルトの名無しさん
21/06/28 20:21:41.41 3DnBzo4y.net
condでいい
(cond ((< 0 x) (newline) (display 1.0)))
400:デフォルトの名無しさん
21/06/28 21:54:24.27 PxTgcihw.net
今度でいい?
401:デフォルトの名無しさん
21/06/29 12:31:46.50 aO3q0Gho.net
implicit progn(begin)が欲しいならwhenとunlessを積極的に使おう
402:デフォルトの名無しさん
21/06/29 12:46:42.78 aO3q0Gho.net
色んな書き方が出来るからこそ、most specificなものを使おう
403:デフォルトの名無しさん
21/06/29 13:29:59.66 0N5v+m2R.net
二年前から、どうでもいい駄文が多すぎだな。
404:デフォルトの名無しさん
21/06/29 17:27:58.16 cKUJRDcK.net
へーじゃあ君は2年間何してたの
405:デフォルトの名無しさん
21/06/29 18:52:26.88 yETyFiIt.net
lispの質問が減って自己紹介みたいな駄文が多いんだよ
406:デフォルトの名無しさん
21/06/30 02:43:05.48 HrMy06Ib.net
結局 most specific なものは何だろう
407:デフォルトの名無しさん
21/06/30 03:40:26.71 hbO/nBwY.net
when でいいんじゃね
408:デフォルトの名無しさん
21/07/07 05:18:16.92 Jk8/Aq6G.net
stalin って今も最速?
409:デフォルトの名無しさん
21/07/07 20:28:05.30 Kq6g4muF.net
スターリンは残酷に最適化するからな
410:デフォルトの名無しさん
21/07/07 23:24:28.15 690XxCxv.net
プログラムがr4rsで記述できていてシングルスレッドしばりの競争ならいまでも速い可能性はあるだろうな
だれか追試してくれよ
411:デフォルトの名無しさん
21/07/11 18:50:40.89 aa3AN28M.net
(eq? '(a b c) (list 'a 'b 'c))
を実行すると
#f
となるのはなぜでしょうか?
412:デフォルトの名無しさん
21/07/11 19:31:30.75 19O1KSs3.net
eq?はメモリ上の実体が同一かどうかを返すので、値を比較したかったらequal?を使えばいいよ
413:デフォルトの名無しさん
21/07/11 20:25:33.03 aa3AN28M.net
>>412
ありがとうございました。
414:デフォルトの名無しさん
21/07/12 20:42:52.24 O01P9WLY.net
named let使おうと思ったらCommon lispには無かった
415:デフォルトの名無しさん
21/07/12 22:45:17.08 u5zIJQm8.net
(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で書けなくもないと思うけど
416:デフォルトの名無しさん
21/07/12 23:10:07.08 eka9NNGK.net
現代のlispハッカーはみんなloopマクロ使ってるよ
417:デフォルトの名無しさん
21/07/13 08:34:35.37 egse1qJT.net
named-lambdaならalexandriaにある
418:デフォルトの名無しさん
21/07/13 10:27:19.42 A078Hhon.net
Schemeで、
(+ '3 3)
を評価すると
6
が返ります。
'3 は「3」というシンボルを表わすのではないんですか?
419:はちみつ餃子
21/07/13 11:05:03.90 jDPJbhfl.net
>>418
クウォートは評価を抑制するという仕組み。
データ (S式) の世界がプログラムの世界にマッピングされるときにデータの世界のままで留め置く感じ。
識別子はデータの世界ではシンボルなので、(変数として) 評価しなければシンボル自体となる。
3 はデータの世界でも数値の 3 であり、数値はプログラムの世界で評価すると
それ自体になるという自己評価 (self-evaluating) という規則の対象なので
3 はクウォートを付けても付けなくても評価結果は数値の 3 。
ちなみにベクタリテラルが自己評価の対象になるかどうかは変更があったので注意が必要。
R5RS/R6RS では自己評価の対象ではないのでクウォートが必要だが R7RS では自己評価になる。
まあほとんどの処理系は適当に許容したりもするんだけど。
420:デフォルトの名無しさん
21/07/13 16:32:31.52 NGIJbx4Y.net
number?で#tなだけで数値をシンボルで実装した処理系もあるかもしれん
421:はちみつ餃子
21/07/13 17:10:19.73 QSkHhbzy.net
小さい数値はヒープアロケーションせずにワードに詰め込む (ことで GC 削減して高速化を図る)
ような実装が一般的だったり、同じ内容の文字列リテラルを統合したりすることがある。
eq? が数値や文字列について処理系依存になっているのは
おそらくそういった最適化を許すための配慮なんだけど、
処理が遅くなってでも一貫した扱いをするというデザインを選んだなら
内部的に数値とシンボルと統合することも選択肢としてはあるかもね。
そうしてもユーザー視点ではたいして得なことはないんだけど、
アプリケーションに組み込んで拡張用言語として使うとか
だったらアプリケーション側の事情と馴染みやすいかどうかみたいな視点もあるし。
422:デフォルトの名無しさん
21/07/13 19:58:17.06 tejz1RXC.net
数字はreadした時点でnumberになる
それをquoteしてもnumberのまま
quoteするとはevalされないということだ
もちろんnumberをevalしてもnumberのままだ
423:デフォルトの名無しさん
21/07/14 06:57:41.65 O4vE2Kew.net
あっそうか
末尾再帰が仕様にないからloopを使うようになってるのかな?
424:デフォルトの名無しさん
21/07/15 04:52:42.37 eqEigNI9.net
逆やね末尾再帰でloopを代替できるからイキって仕様からloopを消したったのがschemeやからユーザーもイキるやで
425:デフォルトの名無しさん
21/07/15 06:43:25.74 S7wkmjz6.net
末尾呼び出しの最適化が至高の技術のように思っていた時期が僕にもありました
426:はちみつ餃子
21/07/15 11:32:01.61 d93moyXm.net
末尾呼出し最適化はあくまでもセマンティクスの話であって、
ループ構文を避ける強い流れがあるわけじゃないよ。
do や named let くらいしか繰り返し構文が用意されてないのは
皆が合意できる仕様をまとめられていないという非常に単純な理由だよ。
R7RS-Large に入れるループ構文の候補としては
・ SRFI-42 (URLリンク(srfi.schemers.org))
・ foof-loop (URLリンク(wiki.call-cc.org))
・ chibi loop (URLリンク(synthcode.com))
が挙がっている。
まあまだちゃんと議論されてないので他の候補が出るかもしれないし、
結局何も入れないということもあるかもね。
427:デフォルトの名無しさん
21/07/15 16:04:48.23 MIyHkZEB.net
アキュムレータ加えて末尾再帰で書くよりはdoを好むわ
ロジックとしては全く等価だし、見やすい方がいい
428:デフォルトの名無しさん
21/07/15 16:12:57.83 MIyHkZEB.net
loopキーワードは:を付けてlisp keywordにすればビジュアル的に随分見やすくなるね
ところでloopの独特の言い回しはAlgol由来だと最近知った、downtoとか
esacやfiまで取り入れてたら投げ捨てるけど
429:デフォルトの名無しさん
21/07/15 16:15:28.68 MIyHkZEB.net
>>417
sbclが内部でnlet使ってるね
::で参照したりコピペしたりしてるわ
やっぱclに入れた方が良かったな
430:デフォルトの名無しさん
21/07/15 16:34:32.82 zKeMNTWP.net
loopしなくてもdestructuring bindやwithの為にloop使うのは我ながら良くないと思う
値を集める節がハマると簡潔に書けるのでつい
431:はちみつ餃子
21/07/15 17:45:11.96 d93moyXm.net
慣れた Scheme ユーザーなら末尾呼出し (末尾再帰) になっているかどうかは空気のように判断できるけど、
do で書けるものなら do で書いたほうがそういう判断をする必要さえないわけで、
なるべく抽象度の高い構文 (または手続き) を使うに越したことはない。
大事なのは抽象化で、繰り返しをしているところなら繰り返しに見えるように書くのが筋だろ。
(繰り返しに do という名前を当てるのがどうなんだ……とも思うけど Fortran 由来らしい。)
そういう意味では >>430 が loop をループ以外の用途に使うのは確かに良くは無いんだが、
場合によってはそういうのもイディオムとして定着していることがあるから
意味に忠実にするために冗長になるくらいならイディオムに頼るほうが「わかりやすい」場合もある。
どちらがいいというわけでもなくて全体の匙加減だから難しいよね。
432:デフォルトの名無しさん
21/07/15 19:48:28.17 eqEigNI9.net
末尾呼出し最適化をいかした書き方というのは確かにあるのだけれど named let はシンプルな loop に特化していて中途半端なのだよなあ
433:デフォルトの名無しさん
21/07/15 21:29:35.37 hFBqwrB0.net
named let 嫌いだわ、構文として紛らわしいだけ
あれはgotoとでも名乗るべき
434:デフォルトの名無しさん
21/07/16 08:09:46.64 IT8DyczJ.net
>>433
おいらはすき。letなんてどうせシンタックスシュガー。
435:デフォルトの名無しさん
21/07/18 09:56:21.45 2Hl3gQcn.net
書き捨てなら抽象度は低い方がよいのが原則じゃないか?
高いほうがいいのは使い回すケース、例えば数列計算関数に項を計算する関数を渡して特殊化したい場合
carがdoなら、何がしたいのか一目で分かるよね
あとclでも普通ループへの展開はしてくれると思うけど、保証はされてないから神経質な人は、より確実に等価なコードに展開されるだろうdoの方がいいかも
いやさすがに気にし過ぎか
436:はちみつ餃子
21/07/18 10:09:27.74 +Ch+KzUq.net
>>435
> 書き捨てなら抽象度は低い方がよいのが原則じゃないか?
手間とのトレードオフで抽象化層をわざわざ作るのを避けるという意味ならそうだけど、
多様な語彙 (標準ライブラリ、またはそれに近いもの) がすでに揃っている中
から選べるなら状況をより適切に表しているものをピックアップしたほうが
わかりやすいし手間も少ないでしょ。
437:デフォルトの名無しさん
21/07/18 10:13:20.17 2Hl3gQcn.net
ポエムだけど、状態機械ともロジックは等価だよね
二項漸化式を例に
仮引数-呼び出し
末尾再帰
a b accum - b (next b) accum'
do
a b result - b (next b) result'
状態機械
a b state - b (next b) state'
状態機械は普通遷移テーブルを与えて考えるけど、制御構造で動的に割り振れば前の二者になる
状態を引数で受け渡すことで、ステートフルな計算を実現する
438:デフォルトの名無しさん
21/07/18 10:18:13.98 2Hl3gQcn.net
>>436
その文章には賛同するけど、その線引は深入りすると宗教戦争になりそうなやつだな…
忘れてくれ
439:デフォルトの名無しさん
21/07/18 10:31:34.34 2Hl3gQcn.net
'formをテーブルに書き込んでしまえば…
440:デフォルトの名無しさん
21/07/18 10:43:00.23 iK76XXqo.net
状態機械の定義にそぐうかは詳しくないので分からないけど、表で管理するのは見やすそう
でもデータ構造中に保持する限り反復に翻訳される可能性は皆無だろうな
441:デフォルトの名無しさん
21/07/18 22:30:22.92 wZnHH9/v.net
do構文は何がどこかすぐ忘れる
named letはうる覚えでもなんとかなる
ただのletの亜種だから断然読みやすい
442:デフォルトの名無しさん
21/07/18 22:33:40.35 3JZJIWfz.net
×うる覚え
○うろ覚え
443:デフォルトの名無しさん
21/07/20 02:01:05.64 DJlNseKm.net
すみませんscheme初心者なのですが累乗を求めるプログラムが動きません
URLリンク(www.nct9.ne.jp)
を参考に、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))
)
)
)
444:デフォルトの名無しさん
21/07/20 02:30:15.19 yRdGIeGP.net
infinite recursion
445:デフォルトの名無しさん
21/07/20 03:11:09.60 DJlNseKm.net
(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 を一緒に使うとスッキリ書けそうなのですが…
446:デフォルトの名無しさん
21/07/20 09:22:43.66 0xL9gg55.net
(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))))))
447:デフォルトの名無しさん
21/07/20 10:43:12.24 aBN0Hnxa.net
計算量悪化してない?
448:デフォルトの名無しさん
21/07/20 11:23:57.77 0xL9gg55.net
(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)))))
449:デフォルトの名無しさん
21/07/20 12:21:34.41 27sTwTCb.net
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)))))
450:デフォルトの名無しさん
21/07/20 12:42:50.05 DJlNseKm.net
>>448
なるほどアリティ0の無名関数として束縛してやれば定義時に評価されずに済むんですね
評価したいときはリストにすれば評価されると
めちゃくちゃ為になりました
ありがとうございます
451:デフォルトの名無しさん
21/07/20 13:00:13.21 DJlNseKm.net
>>449
やはり自然なのはifとlet使った書き方なんですかね
そもそも明示的に遅延評価を表すシンタックス形式(delay)があるんですね勉強になります
ありがとうございました
452:はちみつ餃子
21/07/20 16:19:35.74 BjsPOMc7.net
計算量のことを言うなら繰り返し二乗法を使うのがスマートやろ。
453:デフォルトの名無しさん
21/07/20 17:16:38.64 FEwdsMz6.net
force 使うの大袈裟すぎない?
440で全く問題ないと思ったけど
454:はちみつ餃子
21/07/20 17:33:51.23 BjsPOMc7.net
元になる数式をなるべく形式を変えずに書きたいみたいな要求はあるんじゃないの?
プログラマ的視点で見れば >>445 の形に不自然さは感じない (むしろ比較的自然だと思う) けど、
理論家がコードに書き起こすときにはコードを変形させるよりは
遅延を明示したほうがすっきりと感じることだってあるだろう。
そこらへんは何が正しいとは言えないけど、
現時点で Scheme を学習中の人みたいなので色々な方法に触れておけば
どれかは役にたつこともあるかもね。
455:デフォルトの名無しさん
21/07/20 17:41:31.79 yRdGIeGP.net
こんなんでもいいんじゃない
(define (pow2 x y)
(if (= y 0) 1
(let ((z (pow2 x (quotient y 2))))
(* (if (= (modulo y 2) 0) 1 x) z z))))
456:はちみつ餃子
21/07/21 23:35:17.25 tIqEOSex.net
Racket 8.2 がリリースされておった。
URLリンク(blog.racket-lang.org)
457:デフォルトの名無しさん
21/07/29 12:26:00.90 AB6awnRN.net
トイプログラムをチューニング合戦やめーや
458:はちみつ餃子
21/07/29 14:35:36.73 lV+mYu1n.net
簡単な場合をよく考えられないなら応用的状況ではもっと出来ないよ。
応用ができるようになってからなら枝葉は後回しにすべきだけど。
(いわゆる「早すぎる最適化は諸悪の根源」ってやつ。)
あと、単にこのスレってあまり話題ないから。
459:デフォルトの名無しさん
21/08/29 19:48:00.40 ExQfKpCF.net
Parenscriptとclojurescriptのメリットとデメリットどこかにまとまってないかな
主力をcLかclosureのどっちにするかで悩んでる
460:デフォルトの名無しさん
21/09/01 11:05:24.22 3cqZfQ8E.net
racket から pythonのtensorflowとか使いたいのに
まともなpython ffiが見つからない
racket死んでる?
461:デフォルトの名無しさん
21/09/03 17:00:38.92 w5919iNp.net
フリーランスに立ちはだかる「常駐」の壁。慣例を打ち壊し、
“テレワーク”案件3割→8割へと成長を遂げた「クラウドテック」の軌跡
URLリンク(prtimes.jp)
テレワークの一般化により、11月にはテレワーク可能案件83.7%へと増加。
2021年、フリーランスのトレンドは「移住&テレワーク」と予測
URLリンク(prtimes.jp)
リモートワーク求人専門サイト「プロリモート」がリニューアルオープン、業務委託契約の求職者と企業をマッチング
URLリンク(www.value-press.com)
1/3以上が採用につながる高マッチング率、リモートワーク×エンジニア・デザイナー専門の
人材紹介サービス「ReworkerAgent」正式リリース場所からも時間からも自由な働き方を実現!
URLリンク(www.nishinippon.co.jp)
新潟県、移住してきたテレワーカー/フリーランスに最大50万円を支給
URLリンク(internet.watch.impress.co.jp)
茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
URLリンク(internet.watch.impress.co.jp)
長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
URLリンク(internet.watch.impress.co.jp)
フリーランスが活用できる「最大1,000~3,000万円・補助率50%~75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
URLリンク(freenance.net)
『ReWorks(リワークス)』リモートワーク特化型転職サイトとして 3月5日 リニューアル
URLリンク(prtimes.jp)
462:デフォルトの名無しさん
21/09/04 12:17:58.77 7RPQ9cbD.net
hy一時期話題になったけど今は誰も使ってない
463:デフォルトの名無しさん
21/09/04 13:00:17.62 P/r0boNY.net
春頃にLispマシンの話題になっているが、
TAOのコードは結局Public Domainに出来ないのかな
URLリンク(www.nue.org)
464:デフォルトの名無しさん
21/09/04 17:09:55.40 jSSzYM7r.net
だいぶん昔にjaistでtaoのイベントがあったが同様の質問が出たが権利問題が解決できないらしく関係者にさえ配布できない状況らしい
lispの勉強会で遭遇した人の話なので風の噂レベルでスマンがガッカリしたのを思い出した.エミュレーションもデモしたらしい
465:デフォルトの名無しさん
21/09/05 06:20:35.31 pE5Z7TQ6.net
quickdocs復活してるな
466:デフォルトの名無しさん
21/09/07 20:50:21.97 8Gi3qZOZ.net
Scheme版のcl-ppcreは何処いったんだ?
467:はちみつ餃子
21/09/07 21:18:49.39 yn0D/zff.net
>>466
srfi-115
468:デフォルトの名無しさん
21/09/10 16:25:34.83 vbZ+sZ5t.net
政治闘争で頻繁に互換性ないアップデートを繰り返して死んだ
hy
次はclojureで同じ政治闘争が始まりそうという噂が
469:はちみつ餃子
21/09/10 17:54:13.80 53pAHbe3.net
hy くらいの新興処理系でどんどん変更が入るのは普通のことだと思うが。
つってももう登場から 8 年なのか。
470:デフォルトの名無しさん
21/09/11 14:53:00.01 WRGMhX/P.net
>>467
いやそこにある実装は知ってるけど必要なのは>>466
もしかして自分で変換して使ってたのかな?
471:デフォルトの名無しさん
21/09/11 20:38:39.26 Suq8GRsb.net
スレに書き込む前に妄想と現実の区別がついていることをよく確認しましょう
472:デフォルトの名無しさん
21/09/11 21:45:04.20 E5TnD1wu.net
自分で変換した不確かな正規表現ライブラリなんて使いたくねーな
473:デフォルトの名無しさん
21/09/11 23:37:54.18 Suq8GRsb.net
いやそれは移植元にテストケースがあるからテストが完走すればだいじょぶっしょ
しかしそもそもschemeにもpcreライブラリは沢山あるだろうけど
474:デフォルトの名無しさん
21/09/15 04:41:28.63 mYoOhxQF.net
妄想も噂も似たような言い換えみたいなものなのに
何でそんな強い口調で言い換えを強要してくるんだ
475:デフォルトの名無しさん
21/09/15 04:43:02.67 mYoOhxQF.net
何でそんな強い口調で言い換えを強要してくるんだ
476:デフォルトの名無しさん
21/09/16 00:32:04.26 4L00LZ3y.net
()に包めば言い換えないでも柔らかさを演出できる
()はすごいのだ
477:デフォルトの名無しさん
21/09/16 02:34:55.53 PaKnZlMf.net
465から別の話題になってて468まででひとつの会話の流れ.
つまりお前が勝手に被弾してるわけよ‥
478:デフォルトの名無しさん
21/09/16 07:32:28.90 d2OD6VRD.net
クオートしてエバらなければよろしい
479:デフォルトの名無しさん
21/10/09 23:58:58.03 6Ftx/1cj.net
sbcl2.1.9 windows版(amd64)入れてみたけど今まで起動直後に表示されてたWARNING(win版はスレッドまわりが壊れやすいけどそんなの対応してらんない!みたいなやつ)が表示されなくなって地味にうれしい
480:デフォルトの名無しさん
21/10/10 10:54:30.08 Td68Zwht.net
スレッド周りはpthreadのエミュレーションを自前で実装してたのを、直接Win32のAPIを呼ぶようになった
コードが一気にシンプルになったし、その時にバグの修正も行ったのだろう
481:デフォルトの名無しさん
21/10/28 23:14:45.49 61MCerNv.net
hhk限定モデル注文した
これでlisp書きまくるぞ
482:デフォルトの名無しさん
21/10/29 10:04:04.19 Wx77+vYW.net
[ )* ]
このキートップを作って売ったら儲かる!
483:デフォルトの名無しさん
21/11/04 15:30:13.66 Pg5ZjBDA.net
()と[]は入れ替えてる
スペースカデットの模造品とかないんだろうか
484:デフォルトの名無しさん
21/11/19 06:28:29.94 xMhA1wC0.net
roswell環境で.roswell/local-projects/が認識されないんだけど原因分かる人いない?
485:デフォルトの名無しさん
21/11/28 23:37:15.25 RhGEQvG/.net
roswell emacs
486:デフォルトの名無しさん
21/11/29 20:25:25.48 egtLBMKE.net
roswellは複雑すぎて分からん
487:デフォルトの名無しさん
21/11/30 11:59:55.55 mt2EOzfV.net
LISPマシン
URLリンク(youtu.be)
488:デフォルトの名無しさん
21/12/01 00:08:54.18 S5WVP6ck.net
quicklispとかroswellとか、全部一体化されたら使うわ
489:デフォルトの名無しさん
21/12/08 02:22:37.34 7SPCPFJp.net
スレリンク(tech板:688番)
490:デフォルトの名無しさん
21/12/15 14:51:19.13 gD/y5IR+.net
Lispworks 8でた!
491:はちみつ餃子
21/12/15 16:19:54.21 liRiJS5F.net
Chicken Scheme 5.3.0 が先月リリースされてたのに気づいてなかったわ。
492:デフォルトの名無しさん
21/12/18 20:20:58.46 wxlLyg04.net
Lispworksのpro版購入してる人いますか?
493:_
21/12/27 16:17:35.40 kKbRMARZ.net
Release of LispWorks 8.0
URLリンク(www.lispworks.com)
LispworksってSBCL みたいなSIMDサポートありますか?
494:デフォルトの名無しさん
21/12/27 23:09:52.29 W+QyKxlb.net
週2日出社、週2日在宅の週4日勤務が最高の働き方だと提唱したい
週休3日制になったら給料を減らされる??そんな考えだからいつまで経っても貧乏なんだよ...
サラリーマンが副業でプライベートカンパニーを設立するメリット
Webマーケターに転職して、セミリタイアを実現させる方法
【朗報】「在宅勤務OK」の求人、コロナ前と比べて7 7倍に上昇!
【悲報】「会社員に戻りたい!」というフリーランス、全体の3%しかいないw
【悲報】副業が解禁されても、副業を見つけられずに困窮する会社員が続出...
日頃から副業をやっておくことの重要性を再認識しよう
【驚愕】5人に1人は本業よりも副業収入の方が多いことが判明w 本業よりも稼げる副業とはなんなのか??
495:デフォルトの名無しさん
21/12/27 23:20:39.96 rFnrNjhz.net
家でゲームやってる方が100倍楽しい
496:デフォルトの名無しさん
21/12/28 14:24:25.81 ikdMcku9.net
Gauche 0.9.11 リリース
497:デフォルトの名無しさん
21/12/29 00:16:33.25 CixWfOUS.net
>>496
でも来年も1.0は出ないんでしょう?
498:_
22/01/04 06:23:02.11 rzEME/gD.net
>>496
Gauche 0.9.11-p1 リリース
Windows での問題修正のみみたい。
>>497
1.0に向けての作業入られているようだけど
今年中に出るかは判らんなぁ
499:デフォルトの名無しさん
22/01/04 09:25:24.58 0EKZRL01.net
>>497
スレリンク(tech板:471番)
500:デフォルトの名無しさん
22/01/04 18:09:56.39 M2x34zFQ.net
>>499
それでも1.0はやっぱり大きな節目じゃないかな
それでなくてもマイナー言語を採用する
障壁は大きいのに、まだ安定版じゃ無い、
とか難易度が高い
501:デフォルトの名無しさん
22/01/05 01:55:05.36 M/mCn8xE.net
1.0 で Stabilize と書いてはいるが、別に現状の動作が不安定で落ちたりするという意味じゃなくて
API の試行錯誤とかをやってたのを 1.0 では「とりあえずの」決定版にしようねという話であって、
後にもたまには大きな変更だってあるだろうし、そのへんの感覚は番号だけ見てもわからんのだよな。
むしろメジャーバージョンが変わった直後は不安定という通説もあるし。
メジャーバージョンがクソデカでも信用ならんものなんて腐るほど見てきただろう?
心理的な障壁というのはわかるんだけど、逆に言えば気分の問題でしかない。
検証した上でやっぱりアカンとなったならしょうがないんだけど、
バージョンナンバー「だけで」判断してるのならよい態度ではないよね。
502:デフォルトの名無しさん
22/01/05 09:05:38.61 i4+082M6.net
1.0をだしたら、これまでできなかったあんあことやこんなことをやってみて、がんがん不安定化させるということだよね。もう飽きたからメンテナンスフェーズにはいるじゃないよね。
503:デフォルトの名無しさん
22/01/08 17:42:20.32 p9TLuwuj.net
Gauche は作者自身が仕事で使うための道具でもあるから
万人向けではない方向にデザインされるということはあるかもしれんが、
(まあそもそも Scheme が万人向けではないが……)
常に作者によって使われているので大きく壊れることはたぶんあんまりない。
504:デフォルトの名無しさん
22/01/09 03:10:06.49 Yh7kYLt+.net
forkすりゃいいじゃん
505:デフォルトの名無しさん
22/01/09 09:17:46.18 /FcxVx4/.net
無理
506:デフォルトの名無しさん
22/01/09 19:19:41.13 KdA6aSLx.net
gaucheはr7rs対応したときに2.0になっていてもよかったのではとおもう
507:デフォルトの名無しさん
22/01/10 19:38:26.99 2hS04FMw.net
俺はscmは遊ぶ用だけどguileがいい感じ、イントロスペクションがつよいので掘って遊べる
まだまだあんどきゅめんてっどなelモード探索も楽しい
508:デフォルトの名無しさん
22/01/15 20:48:11.65 lW+N/iWS.net
今度のMSXはCとLispとPythonが動くんだぞ
URLリンク(www.4gamer.net)
509:デフォルトの名無しさん
22/01/16 15:41:52.89 13k9JV8z.net
ことしのlisp的抱負をひとつ...
510:デフォルトの名無しさん
22/01/16 17:06:35.43 qRjB4bc5.net
>>509
今一度!
3度目の挑戦ですが、sheme 手習いを読む、読み通す!!
511:デフォルトの名無しさん
22/01/16 22:33:47.36 UU19DhdN.net
同じく
あと、リスト遊び読む
512:デフォルトの名無しさん
22/01/16 22:57:05.20 hpGcG9O9.net
あくまで個人的感想だが、そういう風に勉強のために勉強するみたいなのは結局は上手くいかんのじゃないかと思う。
513:デフォルトの名無しさん
22/01/16 23:41:32.77 UU19DhdN.net
じゃあ、GAFAを超えるものを作るために勉強する!
514:デフォルトの名無しさん
22/01/17 05:54:03.53 F1CAOb16.net
>>512
仕事で使えば直ぐに覚えられるね
だがSchemeの仕事は無い
515:デフォルトの名無しさん
22/01/17 10:07:54.20 jU2WrI4n.net
成果物として作るんでなくてもちょっとした前処理程度のことをするときに使えばいいよ。
使い捨てるものを何で作ろうが文句は言わせん。
プライベートで使うんでもいいしな。
516:デフォルトの名無しさん
22/01/17 10:10:54.91 mRPHMZkx.net
ツール類は自分の慣れた言語で作ってしまうw
517:デフォルトの名無しさん
22/01/17 10:32:49.23 jU2WrI4n.net
俺は Scheme が一番慣れた言語だから……
こういうのがニワトリタマゴってやつかね。
慣れるために使いたいのに慣れてないから使わないってのでは
何も進まんでないか。
518:デフォルトの名無しさん
22/01/17 22:29:08.40 BbgRNbfx.net
scheme使いなら自作の処理系の1つや2つは持ってるよね
519:デフォルトの名無しさん
22/01/18 01:32:42.02 Q53p7HFH.net
いいえ。
520:デフォルトの名無しさん
22/01/18 23:30:17.32 Npm0ST7N.net
黒板とノートという万能処理系なら
521:デフォルトの名無しさん
22/01/19 12:17:51.13 YBAvI2MD.net
なにか作ろうと思うと結局cffiでcライブラリを呼び出して使ってるので、糊みたいな使い方しかしてないなぁ
522:デフォルトの名無しさん
22/01/20 02:19:42.06 3oKX7/s6.net
Ruby でも JavaScript でも Python でもだいたいそんなもんだろ。
523:デフォルトの名無しさん
22/01/20 19:02:36.89 GKs3JF21.net
scheme修行読んだら処理系書けるかな?
ちょっと読んでちっともわからなくて挫折したけど
524:デフォルトの名無しさん
22/01/20 21:08:50.31 Ibae9TV2.net
処理系作りたいなら下手な本より既存の処理系のソース読みまくるのが近道
525:デフォルトの名無しさん
22/01/22 21:58:31.48 E9iIueP5.net
俺の気持ちを代弁してくれてたポエム
URLリンク(gist.github.com)
526:_
22/01/24 12:23:44.52 J5Esvhno.net
>>525
斉藤由貴バージョンの
夢の中へ
が脳内再生された。
527:デフォルトの名無しさん
22/01/24 20:39:39.47 xI9wwXQn.net
ちゃんとエンドユーザー様までデプロイするのはめんどいのは確か
グラフィックス叩いたりするライブラリに依存するのはやむ無しだけど、純lispなライブラリはライセンスの許す限りスニペットに切り出して同梱してる
528:デフォルトの名無しさん
22/01/24 21:07:29.09 e/3681Ma.net
継続が凄いって話は、かれこれ10年くらい聞いてたんだけど、結局は限定継続で十分だよね、
限定継続もあんまり応用ないね、って感じに落ち着いたのかな?
529:デフォルトの名無しさん
22/01/25 11:38:40.17 GfuWsBWm.net
継続が凄いってなんだよ
継続ベースのlisp実装をschemeと言うのだから、そういう意味では凄い応用例だよ
530:デフォルトの名無しさん
22/01/25 12:33:26.79 Do1EUgQ3.net
非限定継続ってjmcのambとかが該当するのか?
動作としてはバックトラックするだけだから特に継続概念が必須というわけではないけど、なんか楽しい
531:デフォルトの名無しさん
22/01/28 01:56:11.96 hT9TavA0.net
形式定義できるのが継続の便利なところなんだよ。
バックトラックするだけとはいうが「バックトラックってなに?」というのを突き詰めていったときに「継続をこんなふうに受け渡してるでよ」と言えるの。
532:デフォルトの名無しさん
22/01/28 23:35:03.31 i9eS2qVS.net
でも実際はambはただの愚直な探索だから遅いんじゃないの?
533:デフォルトの名無しさん
22/01/28 23:54:45.12 hT9TavA0.net
原理的にはバックトラックと同じ速さ。
それが遅いというのならバックトラックでも遅い。
バックトラックより速い方法があってチューニングの手間をかけていいならそうすりゃいい。
534:デフォルトの名無しさん
22/02/09 12:03:16.04 3KsDo8lO.net
>>527
久々にscm書いてみたんだけどsrfi1とMITとr6rsでfold, fold-left, reduce fold-right, reduce-right(とそのpair-版)が初期値の畳まれる位置や引数の左右スワップとか違ってて混乱した
とっくに誰かやってると思ったけど今後の為に:initial-valueと:from-endを取るcl式reduceを移植しました…
535:はちみつ餃子
22/02/09 12:14:56.74 9Cj+df9g.net
scm はキーワード型がないけどキーワード引数をどういう風に渡すの?
536:デフォルトの名無しさん
22/02/09 12:36:09.65 3KsDo8lO.net
restに'symb突っ込んで泥臭く拾ってます
srfiにちゃんとした機構あった気がするけど、小道具レベルで依存はしたくないので
537:はちみつ餃子
22/02/09 23:48:43.20 9Cj+df9g.net
ところで scm を使うのはなにか理由があるの?
単なる好みならそれはそれでいいんだけど
このスレで言及される Scheme 処理系は Gauche, Racket, Chicken あたりが多いので
scm 使いは珍しいなーと思った。
538:デフォルトの名無しさん
22/02/10 00:36:07.94 d8JzH9qO.net
guile使ってるけど#:で自己評価シンボルになるな
よく見かける:の方はデフォルトで有効じゃなくて、オプション切り替えだったり
539:はちみつ餃子
22/02/10 11:27:44.77 zyc1CtL/.net
Guile のキーワードはシンボルとは別の型。
(symbol? #:foo) は #f を返す。
540:デフォルトの名無しさん
22/02/10 20:51:58.38 /6XFwXXi.net
CLの掟とか知らないから名前付き引数はマクロでシコシコやってた思い出
541:デフォルトの名無しさん
22/03/22 22:52:38.10 VhTpyHaP.net
URLリンク(www.meti.go.jp)
542:デフォルトの名無しさん
22/03/22 23:07:01.10 jC3GI8nJ.net
Lispエイリアンww
543:デフォルトの名無しさん
22/03/23 05:57:57.32 M5tI2TdZ.net
ほんまや
544:_
22/04/03 20:41:08.96 2/Br4qMY.net
LLVMベースの Common Lisp Clasp が1.0 になったよー
URLリンク(github.com)
545:デフォルトの名無しさん
22/04/04 01:15:26.65 H1vYw7XQ.net
キタ━━(゚∀゚)━━!!
546:デフォルトの名無しさん
22/04/04 15:23:18.85 lL1T2q6e.net
>>544
新興?処理系もまだ増えてるのね
良きことだ
547:でーちゃんじゃないけど
22/06/25 21:10:35 AGenfzJY.net
github.com/Soldier-B/ns.js/blob/master/ns.js#L3
548:デフォルトの名無しさん
22/06/26 13:26:40.20 DTfGvOZF.net
さとばん
549:デフォルトの名無しさん
22/11/07 12:52:23.10 D9DaYQB4.net
svigiはなんて読めばいいの
550:デフォルトの名無しさん
22/11/07 12:52:44.37 D9DaYQB4.net
木曽路的な
551:はちみつ餃子
22/11/07 13:59:37.65 QQJOk/Pv.net
>>549
アイスランド語で括弧の意味だというのはあのキャラの作者が発表している公式な情報だから
Wikipedia でアイスランド語の表記から調べてみた。
URLリンク(ja.wikipedia.org)
たぶんこの場合の g は英語でいうところの y みたいな発音。
あえてカタカナで表すと「スヴィーイィ」みたいな感じ。
アイスランド語の辞書サイトで音を聞いてみた感じでも外してないと思う。
URLリンク(islenskordabok.arnastofnun.is)
552:デフォルトの名無しさん
22/11/07 16:54:40.26 D9DaYQB4.net
>>551
ありがとう
音素と発音記号は手堅いね
553:デフォルトの名無しさん
22/11/07 20:41:51.67 kjCGP1Rc.net
>>551
ここでアイスランド語が言及されるとは驚きました、アイスランド語は実に濃ゆい言語ですね
教科書(Johns Hopkins) を買ったけれども、当然 1 ワードも読めませんでした
554:デフォルトの名無しさん
22/12/12 12:44:02.44 asaSA4nl.net
「命の輝き君」がマンホールの蓋に 轢死体と見分けがつかなくなってしまう [725951203]
スレリンク(news板)
555:デフォルトの名無しさん
23/01/08 12:42:17.07 hPHqQTwv.net
schemeはじめましたなんだけど
[lisp1.0+]label, [cl]labels = letrec + let name
[cl]flet ((f (args) fletbody)) body = let ((f (lambda (args) body)) letbody)
って理解でいいの?
556:はちみつ餃子
23/01/08 17:21:31.97 /n9SAwLy.net
おおよそ似た雰囲気では書けたりするのかもしれないけど
単純に対応してるわけじゃなかったりもするからいいかどうかは状況によるんじゃないの。
557:デフォルトの名無しさん
23/01/08 18:49:11.56 5ojqztS1.net
まんまじゃね?
とりあえず(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のこれバグ?
558:デフォルトの名無しさん
23/01/09 03:51:35.47 0CyucYY1.net
触ったことないので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, ...
URLリンク(www.lispworks.com)
559:デフォルトの名無しさん
23/01/09 16:15:24.76 2yNmR2Eh.net
| 彡⌒ミ
\ (´・ω・`)名前のシャドウ化辺りって自分で処理系実装した子はわかると思うけどハゲる要因だから絶対関わらない方がいいと思う
(| |)::::
(γ /:::::::
し \:::
560:デフォルトの名無しさん
23/01/09 16:36:52.10 0CyucYY1.net
eclは有名だけど、embeddableの名前通りの用途で1MBちょいな処理系だから、そういうものと割り切って使うべき
funcallが冗長ならletのbodyにfuncallをconsするだけのmy-fletを作ればいいじゃない
(さらなる災禍を招きそう)
561:デフォルトの名無しさん
23/01/09 16:57:44.09 0CyucYY1.net
eclのlocked packageなる概念やcompile-timeの意味論に関連しそうなissue
2 yeas agoだけど
URLリンク(gitlab.com)
562:デフォルトの名無しさん
23/01/10 02:33:32.35 /i8qCr3o.net
>>558
特定の名前の解決を決め打つ言語は多いし、そういうポリシーもありだと思う
普通でないのはcondition(warning)を挙げないところ
決め打つ名前(locked package?)が分かってる限りは、flet/labelsのレキシカル束縛リストから拾った名前がbody内の呼び出しformのcarに存在するか、ランタイムコストの無い自明な静的解析でconditionを挙げられるはず
563:デフォルトの名無しさん
23/01/10 03:18:54.37 /i8qCr3o.net
>>555
等価と思って良いよ
伝統的なlisp(とcl)のように(let ((x '())) ...)を(let (x) ...)と略記できない、だとか細かい差異はあるけど
百聞は一見にしかずなので、構文の対応を見るのが手っ取り早い
あとeclのname collisionの件、consの例(>>558)はさすがに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でテストはしたけど、スマホから手打ちなので変だったらごめん
564:はちみつ餃子
23/01/10 13:31:12.96 TxpPtfKm.net
>>562
スクリプト言語 (処理系) 的な想定だと実行開始時にテキストの解釈から毎回やるので
静的解析もランタイムの一部みたいな感じになる。
この場合に限って言えばどちらにせよ名前のルックアップはやるのだからそのときにわかるだろうとは思うけど
静的解析を頑張らないという方針はあり得るんじゃないの。
565:はちみつ餃子
23/01/11 00:38:29.47 s0T2WgwN.net
Gauche で検出されないエラーで (let ((0 1)) 0) みたいなのがあって、
実際にはオプティマイザが消去してしまうんだそうな。
文法の解析で通したものをオプティマイザがエラーとして弾くのも変な話だし、
オプティマイザが走査することがわかっているものを前段階でもチェックするのは二度手間だし、
オプティマイザを密結合してしまうのも保守しづらいし……
という葛藤があるのはわかる。
まあそれぞれに事情があるので原理的に可能だからといってそうすべきだとも言えない気がする。
566:デフォルトの名無しさん
23/01/11 00:49:38.31 LBEzL6fs.net
0はシンボルじゃないから、文法解析を通しちゃ駄目だろw
567:デフォルトの名無しさん
23/01/11 01:29:07.80 /IOcm4EW.net
そういう手では絶対書かないだろう変なコードも、マクロ書いてるとまれによく発生するから困る
568:デフォルトの名無しさん
23/01/11 01:59:04.27 /IOcm4EW.net
カウンタ変数を捕捉更新しようとして、うっかり評価してしまったケースとか
569:デフォルトの名無しさん
23/01/11 02:21:26.04 z40MB/0w.net
多分(let ((i (+ i 1))) i)が化けたのかな
570:デフォルトの名無しさん
23/01/11 02:34:55.34 LWIYKuEk.net
letの時点でオプティマイザに通してんのかな
let系はlambdaまで落として((lambda(i) i) (+ i 1))とすれば間違えようがないと思うのだが
571:デフォルトの名無しさん
23/01/11 02:44:32.93 /IOcm4EW.net
エスパー大会か?
(let ((i (+ i 1)))
(another-macro i))
another-macroは副作用目的で自明にiに展開したか、乗法的な関数を呼んだ(iの初期値0*n=0)
572:デフォルトの名無しさん
23/01/11 03:33:43.09 4gRHy1NM.net
>>570
gancheは知らんけど、さすがにletはプリミティブな事が多いかと
むしろ最適化で読み飛ばすならlambdaまで還元してしまってはダメで、LETをヒューリスティックに認識する必要がある
仮に評価順を示す為にバッククォートでわざとらしく書くと
`(let ((,index ,(1+ stride))) ,(* index stride))
; (LET ((0 1)) 0)
(に等価な)展開とかがありがちかな
特に例に意味は無かったってオチだったりして
573:デフォルトの名無しさん
23/01/11 03:56:23.35 /IOcm4EW.net
defmacro/macroexpand方式だと特にだけど、(let ((0 1)) 0)みたいな残骸から推論する技能はとても大事に思う
書く時もそうだけど、人が書いたモノの後始末なら前提知識が無いのでなおさら
これだけ想像を膨らませてくれる貴重な(let ((0 1)) 0)すら消し飛ばされるならもうお手上げ
なんて文句を言いつつ、schemeでもついslibのdefmacroに手が伸びてしまうのだが
574:デフォルトの名無しさん
23/01/11 06:03:42.65 /IOcm4EW.net
>>570
論理的にどんな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))だけを見て決められない
575:デフォルトの名無しさん
23/01/11 06:21:34.50 /IOcm4EW.net
一応値については正しいというだけで、もしbodyに(exit)や大域脱出が入ってても無視するのか?という問題はある
ill-formedな>>565すら無視するのだから、当然well-formedな(exit)も無視するのが自然だけど、実際のところはgaucheに訊いてください
576:はちみつ餃子
23/01/11 17:03:18.22 s0T2WgwN.net
>>575
念のために補足しておくけど >>565 のケースは捕捉されないエラー
(現時点では捕捉することを意図的に諦めているエラー) であって
Gauche の仕様として正しいというわけではないよ。 結果は未定義。
直接的に書いてしまった場合にしてもマクロ展開結果でこうなるにしても
あくまでも誤っているプログラムだからね。
言いたかったのは >>562 に対してで、原理的に出来てもやらない事情の例として
(私は ECL のことは全然知らないので) Gauche での例を出したってだけ。
577:デフォルトの名無しさん
23/01/11 17:40:33.93 /IOcm4EW.net
>>576
どうも、俺のも原理的には…という同じ意図の話だよ
eclやgaucheが有名実装では最もアグレッシブな感じなのかな?
(declaim (optimize (speed 0) debug safety)
が外せない俺には怖くて触れないよ
578:デフォルトの名無しさん
23/01/11 18:02:49.87 /IOcm4EW.net
なおeclのlocked package?の件、標準の宣言を全て付けても有効な模様…
579:デフォルトの名無しさん
23/01/11 18:12:33.46 qLQaVlgq.net
notinlineも効かないし独自機構だな
580:はちみつ餃子
23/01/14 01:01:49.57 9ctkhBjT.net
>>577
> 有名実装では最もアグレッシブ
そんなことはないんじゃないかな。。
実行前の処理に時間をかけない (かけても総合的な性能向上にならない) という
判断でエラーチェックに消極的だけど最適化にも消極的だから。
581:本田
23/01/25 23:58:21.43 PahnnjBC.net
UCB Scheme
URLリンク(people.eecs.berkeley.edu)
UCB Scheme is a modified version of STk 4.0.1 by Erick Gallesio.
582:デフォルトの名無しさん
23/01/26 19:06:40.12 lq03KzKz.net
USB Schemeじゃないのか
どっちかって言えばUSB Schemeが欲しいのだが
583:デフォルトの名無しさん
23/01/28 14:07:46.81 BDgiT21v.net
nptcl
URLリンク(github.com)
584:本田
23/01/29 22:24:48.67 XMFhzyDs.net
アルゴリズム言語 Scheme 報告書 四訂版
H. Suzuki訳
URLリンク(groups.csail.mit.edu)
585:はちみつ餃子
23/01/30 00:59:07.34 kRDQpz8S.net
そのリンクがどうしたっていうんだ?
何か思うところがあるなら話題に挙げるのはかまわんが
ただリンクを置いて去るのはやめて欲しいな。
ニュース系のネタならお知らせの意味で貼ったのかなと思うところだが、
そういう感じでもないみたいだしな。
586:デフォルトの名無しさん
23/01/30 19:13:37.70 prACFehy.net
そもそもダイナミックスコープの何がだめですか
Emacs lispはダイナミックスコープですが、
あちこちから呼ばれてる関数を、空関数で上書きして殺すとかできて便利です
Emacs lispの感覚でGIMPのスクリプト(scheme)を書こうとすると
なにか何でもかんでもラッパー渡し(いちいちcarをひとつ辿る)って感じです
ちなみにLispは普通の手続き型言語としてしか使ったことないです
そんな奴への説教とかあったら聞きたいです
マクロとか、「確かにif文を関数として実装するのは無理かもしれないし、
そういう時に使うのかな」くらいにしか解ってないです
587:デフォルトの名無しさん
23/01/30 19:45:34.45 w7gs7hNq.net
>>586
全然ダメじゃないよ。でも誰か(昨日のオレ)が余計なことをやって不審な挙動をしてるけど原因がさっぱり分からないというのは起こりやすいかもしれない。
588:デフォルトの名無しさん
23/01/31 01:40:41.84 t9l1A9G+.net
Lispではたまたまうまく動いてるように見えるけど変数宣言の無い言語でダイナミックスコープやると死ぬ
589:はちみつ餃子 ◆8X2XSCHEME
23/01/31 10:19:46.67 XA5Y5Qfu.net
>>586
元のプログラムを書き換えずに影響を差し込むことが出来るってのはアプリケーション拡張用として便利だけれど
元のプログラムが想定してない滅茶苦茶なことも出来ちゃうということと最適化が困難になるのが深刻な問題だと思う。
ユーザーが変な使い方をして変なことを起こす分には自業自得といえるにしても
今ではパッケージをネット上からダウンロードしてインストールまで自動だから
悪意あるコードが他のパッケージを好きなように変更できるようだと影響範囲が大きい。
たとえばウェブブラウザのアドオンなんかだど各アドオンは通信によって協調は出来るが
環境は共有しないようにすることで影響力を制限している。
参照しているものがことごとくいつでも変更される可能性があると
インライン化や畳み込みといったごく基本的な (しかし効果が高い) 最適化すらできない。
現代的な言語処理系に対して数十倍単位で遅いのはさすがに困る。
ものごとの良し悪しにはトレードオフがある。
どちらの問題もコードが小規模ならどうということはないので利点のほうが上回っていたのかもしれないが、
時代を経て巨大になりすぎた。 疎結合を意識した構成にしないと手に負えない。
590:デフォルトの名無しさん
23/01/31 10:34:59.12 tSjB9eWW.net
グローバル&ダイナミックは罠になり得るけど、対話的に使うコマンド言語(シェル)は大体そうだし利便性の問題、新しいpwshでももそう
定義をテキストとして全てダンプして、読み戻せる利点がある
cl/scheme(fluid-letとかそんな名前の拡張)のように基本レキシカルで、ローカル&ダイナミックは宣言が必要なら意図せず使う事は稀なはず
(form-in-scope? (declare (special x)) form-in-scope)
(locally (declare (special x)) (form-in-scope))
面倒だけど(declare…)が外、つまり同じレベルのフォームに影響する場合があるのが気持ち悪いから、明示的な後者を好む
591:デフォルトの名無しさん
23/01/31 10:56:14.75 tSjB9eWW.net
レキシカルな情報を取り込んでしまう(暗黙にクロージャを作る)クロージャにはテキスト表現が無いから、ダンプが出来ないのは致命的な欠点
よってダイナミックスコープ一択になる
pwshだと gci function:
bashだとdeclare -f (多分、よく知らん)
でダンプ、出力されるテキストを読み直せば(大体)環境が復元できる
pwsh方式だと{code}.GetNewClosure()でクロージャは明示的に得る
592:デフォルトの名無しさん
23/01/31 11:08:10.67 tSjB9eWW.net
>>586
guileだっけ?
あれ変な拡張山盛りだから出来るんじゃない?fluid-letみたいな名前がないかaproposしてみたら
593:はちみつ餃子
23/01/31 11:28:43.20 XA5Y5Qfu.net
>>592
GIMP の Scheme (Script-fu) は TinyScheme が使われている。 (昔は SIOD だった。)
まあ fluid-let くらいなら自分で書いてもたいした手間じゃないけどね。
594:デフォルトの名無しさん
23/01/31 11:31:05.15 cAwVb56Q.net
#<closure ...>が嫌ならいにしえのfunargを使えばok
別にレキシカル環境をリストで持ったって構わないわけで、印字表現が不透明なlispはインクリメンタルコンパイルやリストより効率の良いデータ構造を選んだ結果
厳密にはダイナミックスコープでないけれど、コード注入なら'ラムダ式を渡して廻っても同等の自由が得られる(call by name)
既存のコードの方でも準備が必要だけど
595:デフォルトの名無しさん
23/01/31 11:33:22.79 tSjB9eWW.net
>>593
ええ…gnu公式の拡張言語とは一体なんだったのか
596:はちみつ餃子
23/01/31 12:23:06.03 XA5Y5Qfu.net
>>595
アプリケーションに特有の機能はアプリケーション側で用意されたものを呼出して使うわけだし
言語側のライブラリはほどほどで足りるんで小さい処理系のほうが面倒がないというのはあるかも。
Guile はビルドするだけで面倒くさいが TinyScheme はファイル数個の簡単構成だし。
597:デフォルトの名無しさん
23/01/31 12:38:01.83 mFP57axK.net
ローカルにダイナミックな束縛をやるなら、それ専用のprogvフォーム(clにある)はどう思われてるんだろ?
(progv 変数リスト
値リスト
body)
let系列の (変数 値)リスト慣習を転置(zip)した記法だけど、束縛が多くても縦にスペースを取らない
let慣習では変数 値はsetq/set!だけど、progvの変数リストは評価されるから、リード時にバッククオートでシンボルを埋め込むようなハックが不要
動的束縛を活用するようなメタな場面では特にだけど、埋め込む為だけにわざわざリーダを何度も通すのが歯痒い
多分に個人的な好みだと思うけど
598:デフォルトの名無しさん
23/01/31 13:07:01.68 tSjB9eWW.net
>>597
転置されてるのと束縛リストの実行時評価は、おそらくlet風のマクロを書く時に便利だからかな
mapcar #'list let-like-binding-list
がprogvに渡せて、あと欠損値も勝手にnilで埋まる
あと機械的に名前を処理するならgensymもお忘れなく
599:デフォルトの名無しさん
23/01/31 13:18:26.31 tSjB9eWW.net
例が悪かった
単にlistをmapcarするだけでは、let形式のリストをそのまま渡した方が早い
不定数の引数を取ってリストを返す関数で、自明なlist以外をmapcarするならかなり楽が出来るはず
しかし何に便利か今すぐ具体的な例は思い付かない()
600:デフォルトの名無しさん
23/01/31 14:00:30.21 tSjB9eWW.net
>>596
俺環ではインストール(展開後)で50MBのディスク容量占めてるな
実験的なelisp対応(編集機能無しで一体何の意味が?)とか
興味深いけど謎な方向に突き進んでるね
601:デフォルトの名無しさん
23/01/31 14:46:13.56 CmTey6Bh.net
GNUは昔から他人の成果物の丸パクリしか脳が無い団体だよ
602:デフォルトの名無しさん
23/01/31 15:18:25.22 AYYg8Thv.net
emacsの膨大なテキスト処理関数群に依存していない純ロジックのみのelispコードなら資産になる
そんなの指折り数える量だろう
603:デフォルトの名無しさん
23/01/31 15:38:47.41 sZCc+g+m.net
ライセンス問題でどうしてもコードを触りたくないなら別だけど
何らかのlisp書きであれば、コピペしてその方言に適合するよう手直しする程度は自明な作業でしょう
604:はちみつ餃子
23/02/01 01:45:17.62 ySbq2UIa.net
>>603
ダイナミックスコープとレキシカルスコープでは埋めがたい差があるし、モジュールやフェイズの方針なども大きな差だ。
伝統的に方言と称してはいるが個々に定義された別の言語なのでそんなに簡単に修正は出来ないよ。
私自身はそこそこ Scheme には習熟している自信があるが Common Lisp も Clojure も全然わからん。
C と JavaScript の外観はなんとなく似せてあるが静的型と動的型の違いという根本的な部分で違うからそう簡単に移植はできないのと同じような感じ。
605:デフォルトの名無しさん
23/02/01 06:05:03.14 BjxytPYm.net
いっそ Emacs そのまま組み込んじゃうとかそんな方向に進まないかな…
近頃の環境ならそんなに重くないはずだし。
606:デフォルトの名無しさん
23/02/01 14:47:30.69 MmorO90J.net
>>605
やってできなくはないのかもしれないよ
昔、zlibがまだなかった時代にDOSでzオプションの利くtarを使いたくて、
仕方なくtarとgzipをまとめて一つのバイナリにリンクしてしまって、
スタートアップでヒープを半分に割って、スタックをそれぞれに割り振って、
あとはバッファが一杯になるたびにtar側とgzip側をsetjmpとlongjmpで行ったり来たり、
解凍は問題ないんだけど圧縮がどうしても同じ結果にならなくて、発表せず一人で使ってた
607:デフォルトの名無しさん
23/02/11 19:10:46.38 iYjc3QSL.net
オレオレSchemeでMineSweeper
ソースがSchemeで書かれている
URLリンク(ujip.ninja-web.net)
608:デフォルトの名無しさん
23/02/11 20:04:34.26 6efBUOB/.net
だからなんやねん
つか何年前から来たの?ってレベルの話だろ
609:デフォルトの名無しさん
23/02/15 12:56:30.42 Iq74I464.net
目くじら立てることかよ
610:デフォルトの名無しさん
23/03/05 13:42:32.16 nmaj3sub.net
オンラインでuLisp動かしてみようかとTinkerCADのArduonoUnoにソースコード流し込んでみたけどさすがに5000行は許してもらえないみたいだな。
611:デフォルトの名無しさん
23/04/24 08:39:19.08 AD1D3xO/.net
最適化されたCLは最適化されていないCよりは速い
昔Common LispでCより速いHTTPパーサを書いたとか言ってたのを見かけた
コードを見るとnodejsのCで書かれたHTTPパーサをパクったみたいな感じなのに
比較対象はなぜかどっかの個人がCで書いたHTTPパーサだった
その個人が晒してたソースのMakefileはデフォルトでは最適化なし
なぜ比較する前にCの方を最適化することを思いつかなかったのだろうか
というかなんでnodjsの方と比較しなかったんだ?
誰か理由わかります?
612:デフォルトの名無しさん
23/04/24 08:46:06.25 Z0B9bFh/.net
なぞなぞかな
613:デフォルトの名無しさん
23/04/25 20:39:53.26 wy/j7fQc.net
おじいちゃんそろそろマクロを飲む時間ですよ
614:デフォルトの名無しさん
23/05/24 21:31:48.49 w5+jyJkb.net
氏のイキリ芸でしょ
615:デフォルトの名無しさん
23/06/20 13:38:32.61 Dvlv0UV+.net
scheme処理系作ったりSICPで悟り開いたりしたけど今の使い方は実質電卓
スペース区切りの値そのまま貼り付けられて便利なんよなー
616:デフォルトの名無しさん
23/08/18 02:03:46.68 dtVdNVwB.net
John Cowan 氏が R7RS-large の議長の座を降りることを表明した模様。
これからの体制については現時点は決まっていない。
617:デフォルトの名無しさん
23/08/19 10:24:26.69 L0GsKMkM.net
実質機能しない規格なんて不要
主要処理系の実態調査して
ANSI Common Schemeを策定すべき
618:デフォルトの名無しさん
23/08/19 20:44:33.82 2cGgFupU.net
実用的で無い言語にANSI規格とか要らないだろ
それより、Type Script 普通に良い言語だぞ、
あれ実質的に型付きのlispだわ
619:デフォルトの名無しさん
23/08/20 18:08:19.00 Jez4Fpf5.net
「Type Scriptはlisp」発言頂きましたー
620:デフォルトの名無しさん
23/08/20 18:21:02.18 P3ytobrG.net
JavaScriptがそもそもschemeだし。
621:デフォルトの名無しさん
23/08/20 21:24:26.60 CVtYBdI9.net
>>620
設計者の「そうしたかった」という発言が拡大解釈されたもので、
インタビューをちゃんと読むと「そうできなかった」ということも言ってる。
622:デフォルトの名無しさん
23/08/28 22:32:35.76 ZDIe4Rjo.net
How to Design Programs, Second Edition
URLリンク(htdp.org)
新版出てた
623:デフォルトの名無しさん
23/09/03 20:41:45.72 ApaaLf4l.net
Chez Scheme の 9.6.2 が五日前にリリースされていた。
624:はちみつ餃子 ◆8X2XSCHEME
23/10/04 15:56:06.86 DlO9V8Bc.net
Gauche 0.9.13 のリリース候補が出た。
問題ありそうな部分や要望があるなら今のうちに出しとくといいよ。
URLリンク(sourceforge.net)
625:デフォルトの名無しさん
23/10/06 07:52:06.47 Gz/JU6Xd.net
Gauche1.0.0 !! 早く来てくれーーー!!!
626:デフォルトの名無しさん
23/10/06 23:46:32.54 WmRjQTiM.net
Gaucheの目的が何なのか知らんけど
それが達成されるまで1.0にならんのだろうな
627:はちみつ餃子 ◆8X2XSCHEME
23/10/07 09:12:48.49 xYnVrult.net
Gauche のバージョンナンバーの予定はここにかいてある。
URLリンク(practical-scheme.net)
具体的な基準ではないので(ユーザーの意見を聞きつつ)開発者が納得する完成度になればメジャーバージョンもあがるってことだろ。
628:デフォルトの名無しさん
23/10/07 15:21:49.73 GRsLaML4.net
「Gauche 1.0」って文字列の違和感がすごい
629:デフォルトの名無しさん
23/10/07 23:47:40.08 c4CFtcBt.net
要望ね。schemeは処理系としては構造が簡単だから適当に作ってもそこそこ良い具合に出来上がるだろうが、
問題はその後で、処理系の方向性を決める必要がある。処理系作るってことは目標が既に設定されている場合もあるが、
他人に使って欲しいのであるなら例えばpythonライブラリ流用できるとか.NETでGUIアプリ簡単に作れますとかwebだとか生成AIで何かいけるとかそんなのだね
俺がGaucheの名前を知りながら長年ほぼ触ったことないのはその辺りが原因だよ
630:はちみつ餃子 ◆8X2XSCHEME
23/10/08 01:14:49.29 tCGlxsdd.net
Gauche の目標設定はトップに書かれている。
URLリンク(practical-scheme.net)
要するにスクリプト言語として常識的に必用とされる機能を盛り込んで日常業務に使える Scheme 処理系を目指すってことだ。
英語の「日常会話程度」が専門的な会話より難易度が高いなどといわれることもあるように「普通に使える」ってのは何か特徴的な売り文句があるより大変だったりもする。
Gauche は作者自身が業務で使ってるわけだから特化するより万能寄りのデザインなんだろう。
個人的には日本語テキストを不自由なく扱えるのがありがたいね。開発が始まったきっかけも stk で日本語を扱えなかったかららしいし、そこらへんは力が入ってると思う。
631:デフォルトの名無しさん
23/10/08 12:59:35.92 SlOLtELZ.net
schemeを好きで使ってるやつって俺含めて既に自分の処理系は持ってると思うのだが、
自分の欲しい機能を満たせばそれ以上求めないし、その成果を踏み台に次のステップへ階段を上がるだろう
階段を上った末、他人に使わせる場面に出くわす事は良くある事で、その時それはschemeではなくなってた方が良いかもしれない
新人「えーなにこの括弧だらけ…今のトレンド?か、かっこいいですねワラワラワラ(辞めよ…)」
業務で使ったら他人を辞めさせる能力については万能になれるか
632:はちみつ餃子
23/10/13 02:28:23.22 ZG3aaQwo.net
Gauche 0.9.13 がリリースされたやで
633:デフォルトの名無しさん
23/10/13 12:37:28.90 p9b8Kc4m.net
次のリリースはついに1.0だと>Gauche
お祝いしなきゃ
634:はちみつ餃子 ◆8X2XSCHEME
23/10/13 15:24:17.01 ZG3aaQwo.net
expecting ってのがどのくらいの確信なのか感覚的にわからないのだけど
一応の既定路線くらいには考えていいんかな?
635:デフォルトの名無しさん
23/10/13 19:25:12.51 79LHTXDX.net
しらんがな
どうせ本人もここ見てるだろうが質問あるなら直接本人に聞けよ
答え難いだろうが
636:はちみつ餃子 ◆8X2XSCHEME
24/01/25 17:23:17.38 d9W0b5Ok.net
諸事情で Gauche 0.9.14 が出ることになってリリース候補が来たよ。
URLリンク(sourceforge.net)
637:はちみつ餃子 ◆8X2XSCHEME
24/02/07 15:30:34.72 kuiQPbhX.net
Chez Scheme 10.0.0 リリースきた
URLリンク(github.com)
サポートするアーキテクチャが増えたってのと、
そこにポータブルな仮想マシンも追加されたというのが
かなり大きい変更点らしい。
638:デフォルトの名無しさん
24/02/12 11:47:40.17 QDPVm8Ph.net
GuileとGaucheって、VMインタープリタ、Cプログラムとの連携・拡張、オブジェクト指向あり、もともとR5RS。
フリーソフトウエアやライセンスという点以外は、言語・実装の方向性としては似ているように思いました。
Gaucheが、BSDライセンス版Guileのような感じがしたのですが、みなさんどう思いますか?
639:デフォルトの名無しさん
24/02/12 21:51:49.83 nqAntR6Y.net
ガイル?
sssp://o.5ch.net/22hhm.png
640:デフォルトの名無しさん
24/02/14 00:54:24.29 4sDroV5Y.net
>>639
まじか?>>1のスレにAAあるから見てこいよ
641:デフォルトの名無しさん
24/02/14 01:07:02.25 Im++FRGi.net
ガイルがいる
642:はちみつ餃子 ◆8X2XSCHEME
24/02/15 01:35:34.01 x2y7hFPc.net
Sagittarius 0.9.11 も来たよ~~~。
URLリンク(bitbucket.org)
Sagittarius は暗号通信系に強いね。
作者はオランダの銀行システムに関与する技術者だそうなのでその経験が活かされてるんだろう。
643:デフォルトの名無しさん
24/04/08 00:42:38.05 skM/lEty.net
【検証】40時間Lispを勉強したら信者になれる?【Lisp1】
URLリンク(youtu.be)
Lispの勉強をしたら『葬送のフリーレン』と同じカタルシスが待っていた。【Lisp2】
URLリンク(youtu.be)
644:デフォルトの名無しさん
24/04/08 00:43:02.37 skM/lEty.net
面白かったのでw
645:デフォルトの名無しさん
24/04/08 02:59:37.49 7blvdNRP.net
神の言語からschemeを経て生まれたjavascriptは人間にとってはちょうどいいバランスだったわけだな
646:デフォルトの名無しさん
24/04/08 19:16:08.79 85I3gne8.net
>>643
めっちゃ面白かったw
647:デフォルトの名無しさん
24/04/11 10:36:33.17 8Rm0X/WO.net
それの前にポールグレアムいじり回が3回あって
それで「Lispがそんなにすごいなら」ってことで40時間勉強したというわけだねw
648:デフォルトの名無しさん
24/04/11 23:22:35.79 0Tmkq/lZ.net
ポールグレって本職の人じゃなかったんだな
すごい熱量な感じなのに
649:デフォルトの名無しさん
24/04/12 00:31:32.72 H7gFN+op.net
MIT卒でLispで儲けたあと、ベンチャーキャピタルになった元本職かな
650:デフォルトの名無しさん
24/04/12 11:49:20.24 nR+PqPBt.net
エッセイストだと思うけどマとしては通販サイトとか作ってたんだっけ
ただ小さな関数やマクロutilが集まったonlisp.lispは準標準関数的な感じで愛用してます
651:デフォルトの名無しさん
24/04/12 12:38:02.80 wZ+y5Ko5.net
そもそもハッカーであるかにガンガンプロダクト作る的な意味での本職マか否かは関係ないと思うのです
cl&schemeの根幹や文書化のみならずC, Java, Fortran委員まで勤めた皆のSteele先生だって何作ったか寡聞にして知らんくらいだし
最近ではC,AWK,Goのバイブル+作法本で鳴らしたKernighan御大も隠居してエッセイストやってる
言語本+エッセイで良い書き物できるのがハッカーの十分条件だと思うね、pgrahamも余裕で該当
652:デフォルトの名無しさん
24/04/12 12:45:09.54 wZ+y5Ko5.net
K御大にはUnixという特大のプロダクトが
653:デフォルトの名無しさん
24/04/12 13:27:33.28 vAI6Kzu4.net
プリンストンで教授やってるみたい
654:デフォルトの名無しさん
24/04/12 14:17:26.15 XxWOnWTK.net
おれはlispはスゴイ神の言語とかくっさいワナビ主張は大嫌いだけど、lispはハッカー言語という主張には賛同したい
名だたるスーパーハッカーの共通部分を探してみると、それはシンタックス/セマンティクスに対する深い理解、すなわち言語デザイン能力なんだよな
まあlispの専売特許でなくML系やHaskellもそうだけど、つまりDSLの書きやすさね
別に言語内完結に拘らずともlex/yaccでも処理系手書きでもいいが、言語内で完結したいなら好ましい
挙げられてるPaul GrahamやG.L.Steeleのような簡潔で一貫性のある手続きインターフェイスや構文の設計(言語デザインのみならず、むしろ日常の構造化プログラミングにより通ずる)には、それを自然言語に起こしながら深く考え推敲する経験が必須だろう
これがハッカーの必要条件だと思う(>>651の十分条件に対して)
655:デフォルトの名無しさん
24/04/12 15:01:50.67 wZ+y5Ko5.net
>>653
もう80才超えてるし、教鞭執れてるかは怪しいね…
最近プログラム書いてねえなあ、とかウェブで言ってたし
代わりに最近のエッセイ本はマ/CSというより一般人向けっぽいので食指動かず
Understanding the Digital WorldシリーズとかDefending Yourself in a World of Too Many Numbersとかそんな題の書いてる
ソフトウェア作法、プログラミング書法、プログラミング作法の現場で戦うプログラマーの為の三部作は素晴らしい、言語に縛られない(あえて題材は様々な言語)し、lispにも通ずる普遍的な知恵袋だよ
スレチなのでそろそろこの辺で
656:デフォルトの名無しさん
24/04/12 15:05:17.85 dUdcEEpo.net
>>651
Steele先生はlisperの毛嫌いするC系言語/Algolishな言語も無数にデザインしているという皮肉!
657:645
24/04/12 15:53:49.12 OhyEPSVL.net
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かよってくらいヤバいのが欠点
658:デフォルトの名無しさん
24/04/12 23:54:00.88 /A9qFmr2.net
文章下手糞すぎて読む気も起きない
これって神の言語に慣れすぎて言語障害になった例かよってくらいヤバいのが>>657の欠点
659:デフォルトの名無しさん
24/04/13 18:14:03.11 JilIuOKd.net
ストールマンがガンになったらしい
長髪も髭も落としてしまって別人みたいになってる
660:デフォルトの名無しさん
24/04/13 18:24:37.81 OrtqC7Lq.net
効いてる効いてる
661:デフォルトの名無しさん
24/04/13 19:21:54.91 JilIuOKd.net
何が?
662:デフォルトの名無しさん
24/04/13 22:51:10.37 Vi4F3OXr.net
昔MSの偉い人がGNUはガンだとか言ってたな
ついに自覚させたか
663:デフォルトの名無しさん
24/04/13 23:32:28.78 c7UXCLXT.net
>>660
お前は脳にガンを抱えてるなw
664:デフォルトの名無しさん
24/04/14 12:56:54.81 JRHy27WB.net
ゆる学徒ハウス別館
現役Lisperが語る! Lispはオーパーツで人類には早すぎた【電脳史学】
URLリンク(youtu.be)
665:デフォルトの名無しさん
24/04/14 13:37:09.89 JRHy27WB.net
ゆるコンピュータ科学ラジオ
大人の勉強は「夢の中」が主戦場。寝ながらマクロを書くといい【Lisp雑談】
URLリンク(youtu.be)