Common Lisp、SchemeをはじめとするLisp族全般のスレです
■前スレ
Lisp Scheme Part40
http://mevius.5ch.net/test/read.cgi/tech/1426481152/
■テンプレ
ttp://wiki.fdiary.net/lisp/
■関連スレ
【Lisp】プログラミング言語 Clojure #4【JVM】 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1483498849/
【GNU】スクリプト言語 Guile【scheme】
http://mevius.5ch.net/test/read.cgi/tech/1239985829/
【入門】Common Lisp その11【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1411307361/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
http://peace.2ch.net/test/read.cgi/tech/1272469779/
【魔法】リリカル☆Lisp【言語】
http://peace.2ch.net/test/read.cgi/tech/1183396621/
Lisp@UNIX版
http://mevius.5ch.net/test/read.cgi/unix/1019926525/
Lisp Scheme Part41
2018/07/15(日) 02:05:28.62ID:oGr67yTf
467デフォルトの名無しさん
2021/09/11(土) 21:45:04.20ID:E5TnD1wu 自分で変換した不確かな正規表現ライブラリなんて使いたくねーな
468デフォルトの名無しさん
2021/09/11(土) 23:37:54.18ID:Suq8GRsb いやそれは移植元にテストケースがあるからテストが完走すればだいじょぶっしょ
しかしそもそもschemeにもpcreライブラリは沢山あるだろうけど
しかしそもそもschemeにもpcreライブラリは沢山あるだろうけど
469デフォルトの名無しさん
2021/09/15(水) 04:41:28.63ID:mYoOhxQF 妄想も噂も似たような言い換えみたいなものなのに
何でそんな強い口調で言い換えを強要してくるんだ
何でそんな強い口調で言い換えを強要してくるんだ
470デフォルトの名無しさん
2021/09/15(水) 04:43:02.67ID:mYoOhxQF 何でそんな強い口調で言い換えを強要してくるんだ
471デフォルトの名無しさん
2021/09/16(木) 00:32:04.26ID:4L00LZ3y ()に包めば言い換えないでも柔らかさを演出できる
()はすごいのだ
()はすごいのだ
472デフォルトの名無しさん
2021/09/16(木) 02:34:55.53ID:PaKnZlMf 465から別の話題になってて468まででひとつの会話の流れ.
つまりお前が勝手に被弾してるわけよ‥
つまりお前が勝手に被弾してるわけよ‥
473デフォルトの名無しさん
2021/09/16(木) 07:32:28.90ID:d2OD6VRD クオートしてエバらなければよろしい
474デフォルトの名無しさん
2021/10/09(土) 23:58:58.03ID:6Ftx/1cj sbcl2.1.9 windows版(amd64)入れてみたけど今まで起動直後に表示されてたWARNING(win版はスレッドまわりが壊れやすいけどそんなの対応してらんない!みたいなやつ)が表示されなくなって地味にうれしい
475デフォルトの名無しさん
2021/10/10(日) 10:54:30.08ID:Td68Zwht スレッド周りはpthreadのエミュレーションを自前で実装してたのを、直接Win32のAPIを呼ぶようになった
コードが一気にシンプルになったし、その時にバグの修正も行ったのだろう
コードが一気にシンプルになったし、その時にバグの修正も行ったのだろう
476デフォルトの名無しさん
2021/10/28(木) 23:14:45.49ID:61MCerNv hhk限定モデル注文した
これでlisp書きまくるぞ
これでlisp書きまくるぞ
477デフォルトの名無しさん
2021/10/29(金) 10:04:04.19ID:Wx77+vYW [ )* ]
このキートップを作って売ったら儲かる!
このキートップを作って売ったら儲かる!
478デフォルトの名無しさん
2021/11/04(木) 15:30:13.66ID:Pg5ZjBDA ()と[]は入れ替えてる
スペースカデットの模造品とかないんだろうか
スペースカデットの模造品とかないんだろうか
479デフォルトの名無しさん
2021/11/19(金) 06:28:29.94ID:xMhA1wC0 roswell環境で.roswell/local-projects/が認識されないんだけど原因分かる人いない?
480デフォルトの名無しさん
2021/11/28(日) 23:37:15.25ID:RhGEQvG/ roswell emacs
481デフォルトの名無しさん
2021/11/29(月) 20:25:25.48ID:egtLBMKE roswellは複雑すぎて分からん
482デフォルトの名無しさん
2021/11/30(火) 11:59:55.55ID:mt2EOzfV LISPマシン
https://youtu.be/4c8qJGlG9Ik
https://youtu.be/4c8qJGlG9Ik
483デフォルトの名無しさん
2021/12/01(水) 00:08:54.18ID:S5WVP6ck quicklispとかroswellとか、全部一体化されたら使うわ
484デフォルトの名無しさん
2021/12/08(水) 02:22:37.34ID:7SPCPFJp485デフォルトの名無しさん
2021/12/15(水) 14:51:19.13ID:gD/y5IR+ Lispworks 8でた!
486はちみつ餃子 ◆8X2XSCHEME
2021/12/15(水) 16:19:54.21ID:liRiJS5F Chicken Scheme 5.3.0 が先月リリースされてたのに気づいてなかったわ。
487デフォルトの名無しさん
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サポートありますか?
http://www.lispworks.com/news/news39.html
LispworksってSBCL みたいなSIMDサポートありますか?
489デフォルトの名無しさん
2021/12/27(月) 23:09:52.29ID:W+QyKxlb 週2日出社、週2日在宅の週4日勤務が最高の働き方だと提唱したい
週休3日制になったら給料を減らされる??そんな考えだからいつまで経っても貧乏なんだよ...
サラリーマンが副業でプライベートカンパニーを設立するメリット
Webマーケターに転職して、セミリタイアを実現させる方法
【朗報】「在宅勤務OK」の求人、コロナ前と比べて7 7倍に上昇!
【悲報】「会社員に戻りたい!」というフリーランス、全体の3%しかいないw
【悲報】副業が解禁されても、副業を見つけられずに困窮する会社員が続出...
日頃から副業をやっておくことの重要性を再認識しよう
【驚愕】5人に1人は本業よりも副業収入の方が多いことが判明w 本業よりも稼げる副業とはなんなのか??
週休3日制になったら給料を減らされる??そんな考えだからいつまで経っても貧乏なんだよ...
サラリーマンが副業でプライベートカンパニーを設立するメリット
Webマーケターに転職して、セミリタイアを実現させる方法
【朗報】「在宅勤務OK」の求人、コロナ前と比べて7 7倍に上昇!
【悲報】「会社員に戻りたい!」というフリーランス、全体の3%しかいないw
【悲報】副業が解禁されても、副業を見つけられずに困窮する会社員が続出...
日頃から副業をやっておくことの重要性を再認識しよう
【驚愕】5人に1人は本業よりも副業収入の方が多いことが判明w 本業よりも稼げる副業とはなんなのか??
490デフォルトの名無しさん
2021/12/27(月) 23:20:39.96ID:rFnrNjhz 家でゲームやってる方が100倍楽しい
491デフォルトの名無しさん
2021/12/28(火) 14:24:25.81ID:ikdMcku9 Gauche 0.9.11 リリース
492デフォルトの名無しさん
2021/12/29(水) 00:16:33.25ID:CixWfOUS >>491
でも来年も1.0は出ないんでしょう?
でも来年も1.0は出ないんでしょう?
493_
2022/01/04(火) 06:23:02.11ID:rzEME/gD494デフォルトの名無しさん
2022/01/04(火) 09:25:24.58ID:0EKZRL01495デフォルトの名無しさん
2022/01/04(火) 18:09:56.39ID:M2x34zFQ496デフォルトの名無しさん
2022/01/05(水) 01:55:05.36ID:M/mCn8xE 1.0 で Stabilize と書いてはいるが、別に現状の動作が不安定で落ちたりするという意味じゃなくて
API の試行錯誤とかをやってたのを 1.0 では「とりあえずの」決定版にしようねという話であって、
後にもたまには大きな変更だってあるだろうし、そのへんの感覚は番号だけ見てもわからんのだよな。
むしろメジャーバージョンが変わった直後は不安定という通説もあるし。
メジャーバージョンがクソデカでも信用ならんものなんて腐るほど見てきただろう?
心理的な障壁というのはわかるんだけど、逆に言えば気分の問題でしかない。
検証した上でやっぱりアカンとなったならしょうがないんだけど、
バージョンナンバー「だけで」判断してるのならよい態度ではないよね。
API の試行錯誤とかをやってたのを 1.0 では「とりあえずの」決定版にしようねという話であって、
後にもたまには大きな変更だってあるだろうし、そのへんの感覚は番号だけ見てもわからんのだよな。
むしろメジャーバージョンが変わった直後は不安定という通説もあるし。
メジャーバージョンがクソデカでも信用ならんものなんて腐るほど見てきただろう?
心理的な障壁というのはわかるんだけど、逆に言えば気分の問題でしかない。
検証した上でやっぱりアカンとなったならしょうがないんだけど、
バージョンナンバー「だけで」判断してるのならよい態度ではないよね。
497デフォルトの名無しさん
2022/01/05(水) 09:05:38.61ID:i4+082M6 1.0をだしたら、これまでできなかったあんあことやこんなことをやってみて、がんがん不安定化させるということだよね。もう飽きたからメンテナンスフェーズにはいるじゃないよね。
498デフォルトの名無しさん
2022/01/08(土) 17:42:20.32ID:p9TLuwuj Gauche は作者自身が仕事で使うための道具でもあるから
万人向けではない方向にデザインされるということはあるかもしれんが、
(まあそもそも Scheme が万人向けではないが……)
常に作者によって使われているので大きく壊れることはたぶんあんまりない。
万人向けではない方向にデザインされるということはあるかもしれんが、
(まあそもそも Scheme が万人向けではないが……)
常に作者によって使われているので大きく壊れることはたぶんあんまりない。
499デフォルトの名無しさん
2022/01/09(日) 03:10:06.49ID:Yh7kYLt+ forkすりゃいいじゃん
500デフォルトの名無しさん
2022/01/09(日) 09:17:46.18ID:/FcxVx4/ 無理
501デフォルトの名無しさん
2022/01/09(日) 19:19:41.13ID:KdA6aSLx gaucheはr7rs対応したときに2.0になっていてもよかったのではとおもう
502デフォルトの名無しさん
2022/01/10(月) 19:38:26.99ID:2hS04FMw 俺はscmは遊ぶ用だけどguileがいい感じ、イントロスペクションがつよいので掘って遊べる
まだまだあんどきゅめんてっどなelモード探索も楽しい
まだまだあんどきゅめんてっどなelモード探索も楽しい
503デフォルトの名無しさん
2022/01/15(土) 20:48:11.65ID:lW+N/iWS 今度のMSXはCとLispとPythonが動くんだぞ
https://www.4gamer.net/games/999/G999905/20220113106/
https://www.4gamer.net/games/999/G999905/20220113106/
504デフォルトの名無しさん
2022/01/16(日) 15:41:52.89ID:13k9JV8z ことしのlisp的抱負をひとつ...
505デフォルトの名無しさん
2022/01/16(日) 17:06:35.43ID:qRjB4bc5506デフォルトの名無しさん
2022/01/16(日) 22:33:47.36ID:UU19DhdN 同じく
あと、リスト遊び読む
あと、リスト遊び読む
507デフォルトの名無しさん
2022/01/16(日) 22:57:05.20ID:hpGcG9O9 あくまで個人的感想だが、そういう風に勉強のために勉強するみたいなのは結局は上手くいかんのじゃないかと思う。
508デフォルトの名無しさん
2022/01/16(日) 23:41:32.77ID:UU19DhdN じゃあ、GAFAを超えるものを作るために勉強する!
509デフォルトの名無しさん
2022/01/17(月) 05:54:03.53ID:F1CAOb16510デフォルトの名無しさん
2022/01/17(月) 10:07:54.20ID:jU2WrI4n 成果物として作るんでなくてもちょっとした前処理程度のことをするときに使えばいいよ。
使い捨てるものを何で作ろうが文句は言わせん。
プライベートで使うんでもいいしな。
使い捨てるものを何で作ろうが文句は言わせん。
プライベートで使うんでもいいしな。
511デフォルトの名無しさん
2022/01/17(月) 10:10:54.91ID:mRPHMZkx ツール類は自分の慣れた言語で作ってしまうw
512デフォルトの名無しさん
2022/01/17(月) 10:32:49.23ID:jU2WrI4n 俺は Scheme が一番慣れた言語だから……
こういうのがニワトリタマゴってやつかね。
慣れるために使いたいのに慣れてないから使わないってのでは
何も進まんでないか。
こういうのがニワトリタマゴってやつかね。
慣れるために使いたいのに慣れてないから使わないってのでは
何も進まんでないか。
513デフォルトの名無しさん
2022/01/17(月) 22:29:08.40ID:BbgRNbfx scheme使いなら自作の処理系の1つや2つは持ってるよね
514デフォルトの名無しさん
2022/01/18(火) 01:32:42.02ID:Q53p7HFH いいえ。
515デフォルトの名無しさん
2022/01/18(火) 23:30:17.32ID:Npm0ST7N 黒板とノートという万能処理系なら
516デフォルトの名無しさん
2022/01/19(水) 12:17:51.13ID:YBAvI2MD なにか作ろうと思うと結局cffiでcライブラリを呼び出して使ってるので、糊みたいな使い方しかしてないなぁ
517デフォルトの名無しさん
2022/01/20(木) 02:19:42.06ID:3oKX7/s6 Ruby でも JavaScript でも Python でもだいたいそんなもんだろ。
518デフォルトの名無しさん
2022/01/20(木) 19:02:36.89ID:GKs3JF21 scheme修行読んだら処理系書けるかな?
ちょっと読んでちっともわからなくて挫折したけど
ちょっと読んでちっともわからなくて挫折したけど
519デフォルトの名無しさん
2022/01/20(木) 21:08:50.31ID:Ibae9TV2 処理系作りたいなら下手な本より既存の処理系のソース読みまくるのが近道
520デフォルトの名無しさん
2022/01/22(土) 21:58:31.48ID:E9iIueP5 俺の気持ちを代弁してくれてたポエム
https://gist.github.com/phoe/7d24bdb1f2be76a02fecba8cfecbef38
https://gist.github.com/phoe/7d24bdb1f2be76a02fecba8cfecbef38
522デフォルトの名無しさん
2022/01/24(月) 20:39:39.47ID:xI9wwXQn ちゃんとエンドユーザー様までデプロイするのはめんどいのは確か
グラフィックス叩いたりするライブラリに依存するのはやむ無しだけど、純lispなライブラリはライセンスの許す限りスニペットに切り出して同梱してる
グラフィックス叩いたりするライブラリに依存するのはやむ無しだけど、純lispなライブラリはライセンスの許す限りスニペットに切り出して同梱してる
523デフォルトの名無しさん
2022/01/24(月) 21:07:29.09ID:e/3681Ma 継続が凄いって話は、かれこれ10年くらい聞いてたんだけど、結局は限定継続で十分だよね、
限定継続もあんまり応用ないね、って感じに落ち着いたのかな?
限定継続もあんまり応用ないね、って感じに落ち着いたのかな?
524デフォルトの名無しさん
2022/01/25(火) 11:38:40.17ID:GfuWsBWm 継続が凄いってなんだよ
継続ベースのlisp実装をschemeと言うのだから、そういう意味では凄い応用例だよ
継続ベースのlisp実装をschemeと言うのだから、そういう意味では凄い応用例だよ
525デフォルトの名無しさん
2022/01/25(火) 12:33:26.79ID:Do1EUgQ3 非限定継続ってjmcのambとかが該当するのか?
動作としてはバックトラックするだけだから特に継続概念が必須というわけではないけど、なんか楽しい
動作としてはバックトラックするだけだから特に継続概念が必須というわけではないけど、なんか楽しい
526デフォルトの名無しさん
2022/01/28(金) 01:56:11.96ID:hT9TavA0 形式定義できるのが継続の便利なところなんだよ。
バックトラックするだけとはいうが「バックトラックってなに?」というのを突き詰めていったときに「継続をこんなふうに受け渡してるでよ」と言えるの。
バックトラックするだけとはいうが「バックトラックってなに?」というのを突き詰めていったときに「継続をこんなふうに受け渡してるでよ」と言えるの。
527デフォルトの名無しさん
2022/01/28(金) 23:35:03.31ID:i9eS2qVS でも実際はambはただの愚直な探索だから遅いんじゃないの?
528デフォルトの名無しさん
2022/01/28(金) 23:54:45.12ID:hT9TavA0 原理的にはバックトラックと同じ速さ。
それが遅いというのならバックトラックでも遅い。
バックトラックより速い方法があってチューニングの手間をかけていいならそうすりゃいい。
それが遅いというのならバックトラックでも遅い。
バックトラックより速い方法があってチューニングの手間をかけていいならそうすりゃいい。
529デフォルトの名無しさん
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を移植しました…
久々にscm書いてみたんだけどsrfi1とMITとr6rsでfold, fold-left, reduce fold-right, reduce-right(とそのpair-版)が初期値の畳まれる位置や引数の左右スワップとか違ってて混乱した
とっくに誰かやってると思ったけど今後の為に:initial-valueと:from-endを取るcl式reduceを移植しました…
530はちみつ餃子 ◆8X2XSCHEME
2022/02/09(水) 12:14:56.74ID:9Cj+df9g scm はキーワード型がないけどキーワード引数をどういう風に渡すの?
531デフォルトの名無しさん
2022/02/09(水) 12:36:09.65ID:3KsDo8lO restに'symb突っ込んで泥臭く拾ってます
srfiにちゃんとした機構あった気がするけど、小道具レベルで依存はしたくないので
srfiにちゃんとした機構あった気がするけど、小道具レベルで依存はしたくないので
532はちみつ餃子 ◆8X2XSCHEME
2022/02/09(水) 23:48:43.20ID:9Cj+df9g ところで scm を使うのはなにか理由があるの?
単なる好みならそれはそれでいいんだけど
このスレで言及される Scheme 処理系は Gauche, Racket, Chicken あたりが多いので
scm 使いは珍しいなーと思った。
単なる好みならそれはそれでいいんだけど
このスレで言及される Scheme 処理系は Gauche, Racket, Chicken あたりが多いので
scm 使いは珍しいなーと思った。
533デフォルトの名無しさん
2022/02/10(木) 00:36:07.94ID:d8JzH9qO guile使ってるけど#:で自己評価シンボルになるな
よく見かける:の方はデフォルトで有効じゃなくて、オプション切り替えだったり
よく見かける:の方はデフォルトで有効じゃなくて、オプション切り替えだったり
534はちみつ餃子 ◆8X2XSCHEME
2022/02/10(木) 11:27:44.77ID:zyc1CtL/ Guile のキーワードはシンボルとは別の型。
(symbol? #:foo) は #f を返す。
(symbol? #:foo) は #f を返す。
535デフォルトの名無しさん
2022/02/10(木) 20:51:58.38ID:/6XFwXXi CLの掟とか知らないから名前付き引数はマクロでシコシコやってた思い出
536デフォルトの名無しさん
2022/03/22(火) 22:52:38.10ID:VhTpyHaP537デフォルトの名無しさん
2022/03/22(火) 23:07:01.10ID:jC3GI8nJ Lispエイリアンww
538デフォルトの名無しさん
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
https://github.com/clasp-developers/clasp/releases/tag/1.0.0
540デフォルトの名無しさん
2022/04/04(月) 01:15:26.65ID:H1vYw7XQ キタ━━━━(゚∀゚)━━━━!!
541デフォルトの名無しさん
2022/04/04(月) 15:23:18.85ID:lL1T2q6e542でーちゃんじゃないけど
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 木曽路的な
546はちみつ餃子 ◆8X2XSCHEME
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
アイスランド語で括弧の意味だというのはあのキャラの作者が発表している公式な情報だから
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:D9DaYQB4548デフォルトの名無しさん
2022/11/07(月) 20:41:51.67ID:kjCGP1Rc549デフォルトの名無しさん
2022/12/12(月) 12:44:02.44ID:asaSA4nl 「命の輝き君」がマンホールの蓋に 轢死体と見分けがつかなくなってしまう [725951203]
https://hayabusa9.5ch.net/test/read.cgi/news/1670487647/
https://hayabusa9.5ch.net/test/read.cgi/news/1670487647/
550デフォルトの名無しさん
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)
って理解でいいの?
[lisp1.0+]label, [cl]labels = letrec + let name
[cl]flet ((f (args) fletbody)) body = let ((f (lambda (args) body)) letbody)
って理解でいいの?
551はちみつ餃子 ◆8X2XSCHEME
2023/01/08(日) 17:21:31.97ID:/n9SAwLy おおよそ似た雰囲気では書けたりするのかもしれないけど
単純に対応してるわけじゃなかったりもするからいいかどうかは状況によるんじゃないの。
単純に対応してるわけじゃなかったりもするからいいかどうかは状況によるんじゃないの。
552デフォルトの名無しさん
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のこれバグ?
とりあえず(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のこれバグ?
553デフォルトの名無しさん
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
とりあえず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
554デフォルトの名無しさん
2023/01/09(月) 16:15:24.76ID:2yNmR2Eh | 彡⌒ミ
\ (´・ω・`)名前のシャドウ化辺りって自分で処理系実装した子はわかると思うけどハゲる要因だから絶対関わらない方がいいと思う
(| |)::::
(γ /:::::::
し \:::
\ (´・ω・`)名前のシャドウ化辺りって自分で処理系実装した子はわかると思うけどハゲる要因だから絶対関わらない方がいいと思う
(| |)::::
(γ /:::::::
し \:::
555デフォルトの名無しさん
2023/01/09(月) 16:36:52.10ID:0CyucYY1 eclは有名だけど、embeddableの名前通りの用途で1MBちょいな処理系だから、そういうものと割り切って使うべき
funcallが冗長ならletのbodyにfuncallをconsするだけのmy-fletを作ればいいじゃない
(さらなる災禍を招きそう)
funcallが冗長ならletのbodyにfuncallをconsするだけのmy-fletを作ればいいじゃない
(さらなる災禍を招きそう)
556デフォルトの名無しさん
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
2 yeas agoだけど
https://gitlab.com/embeddable-common-lisp/ecl/-/issues/574
557デフォルトの名無しさん
2023/01/10(火) 02:33:32.35ID:/i8qCr3o >>553
特定の名前の解決を決め打つ言語は多いし、そういうポリシーもありだと思う
普通でないのはcondition(warning)を挙げないところ
決め打つ名前(locked package?)が分かってる限りは、flet/labelsのレキシカル束縛リストから拾った名前がbody内の呼び出しformのcarに存在するか、ランタイムコストの無い自明な静的解析でconditionを挙げられるはず
特定の名前の解決を決め打つ言語は多いし、そういうポリシーもありだと思う
普通でないのはcondition(warning)を挙げないところ
決め打つ名前(locked package?)が分かってる限りは、flet/labelsのレキシカル束縛リストから拾った名前がbody内の呼び出しformのcarに存在するか、ランタイムコストの無い自明な静的解析でconditionを挙げられるはず
558デフォルトの名無しさん
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でテストはしたけど、スマホから手打ちなので変だったらごめん
等価と思って良いよ
伝統的な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でテストはしたけど、スマホから手打ちなので変だったらごめん
559はちみつ餃子 ◆8X2XSCHEME
2023/01/10(火) 13:31:12.96ID:TxpPtfKm >>557
スクリプト言語 (処理系) 的な想定だと実行開始時にテキストの解釈から毎回やるので
静的解析もランタイムの一部みたいな感じになる。
この場合に限って言えばどちらにせよ名前のルックアップはやるのだからそのときにわかるだろうとは思うけど
静的解析を頑張らないという方針はあり得るんじゃないの。
スクリプト言語 (処理系) 的な想定だと実行開始時にテキストの解釈から毎回やるので
静的解析もランタイムの一部みたいな感じになる。
この場合に限って言えばどちらにせよ名前のルックアップはやるのだからそのときにわかるだろうとは思うけど
静的解析を頑張らないという方針はあり得るんじゃないの。
560はちみつ餃子 ◆8X2XSCHEME
2023/01/11(水) 00:38:29.47ID:s0T2WgwN Gauche で検出されないエラーで (let ((0 1)) 0) みたいなのがあって、
実際にはオプティマイザが消去してしまうんだそうな。
文法の解析で通したものをオプティマイザがエラーとして弾くのも変な話だし、
オプティマイザが走査することがわかっているものを前段階でもチェックするのは二度手間だし、
オプティマイザを密結合してしまうのも保守しづらいし……
という葛藤があるのはわかる。
まあそれぞれに事情があるので原理的に可能だからといってそうすべきだとも言えない気がする。
実際にはオプティマイザが消去してしまうんだそうな。
文法の解析で通したものをオプティマイザがエラーとして弾くのも変な話だし、
オプティマイザが走査することがわかっているものを前段階でもチェックするのは二度手間だし、
オプティマイザを密結合してしまうのも保守しづらいし……
という葛藤があるのはわかる。
まあそれぞれに事情があるので原理的に可能だからといってそうすべきだとも言えない気がする。
561デフォルトの名無しさん
2023/01/11(水) 00:49:38.31ID:LBEzL6fs 0はシンボルじゃないから、文法解析を通しちゃ駄目だろw
562デフォルトの名無しさん
2023/01/11(水) 01:29:07.80ID:/IOcm4EW そういう手では絶対書かないだろう変なコードも、マクロ書いてるとまれによく発生するから困る
563デフォルトの名無しさん
2023/01/11(水) 01:59:04.27ID:/IOcm4EW カウンタ変数を捕捉更新しようとして、うっかり評価してしまったケースとか
564デフォルトの名無しさん
2023/01/11(水) 02:21:26.04ID:z40MB/0w 多分(let ((i (+ i 1))) i)が化けたのかな
565デフォルトの名無しさん
2023/01/11(水) 02:34:55.34ID:LWIYKuEk letの時点でオプティマイザに通してんのかな
let系はlambdaまで落として((lambda(i) i) (+ i 1))とすれば間違えようがないと思うのだが
let系はlambdaまで落として((lambda(i) i) (+ i 1))とすれば間違えようがないと思うのだが
566デフォルトの名無しさん
2023/01/11(水) 02:44:32.93ID:/IOcm4EW エスパー大会か?
(let ((i (+ i 1)))
(another-macro i))
another-macroは副作用目的で自明にiに展開したか、乗法的な関数を呼んだ(iの初期値0*n=0)
(let ((i (+ i 1)))
(another-macro i))
another-macroは副作用目的で自明にiに展開したか、乗法的な関数を呼んだ(iの初期値0*n=0)
567デフォルトの名無しさん
2023/01/11(水) 03:33:43.09ID:4gRHy1NM >>565
gancheは知らんけど、さすがにletはプリミティブな事が多いかと
むしろ最適化で読み飛ばすならlambdaまで還元してしまってはダメで、LETをヒューリスティックに認識する必要がある
仮に評価順を示す為にバッククォートでわざとらしく書くと
`(let ((,index ,(1+ stride))) ,(* index stride))
; (LET ((0 1)) 0)
(に等価な)展開とかがありがちかな
特に例に意味は無かったってオチだったりして
gancheは知らんけど、さすがにletはプリミティブな事が多いかと
むしろ最適化で読み飛ばすならlambdaまで還元してしまってはダメで、LETをヒューリスティックに認識する必要がある
仮に評価順を示す為にバッククォートでわざとらしく書くと
`(let ((,index ,(1+ stride))) ,(* index stride))
; (LET ((0 1)) 0)
(に等価な)展開とかがありがちかな
特に例に意味は無かったってオチだったりして
レスを投稿する
ニュース
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」 [ぐれ★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」 [ぐれ★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 【赤坂ライブハウス刺傷】逃走していた自衛官の男(43)を殺人未遂の疑いで逮捕 警視庁 被害女性とは知人関係 [Ailuropoda melanoleuca★]
- 【フジ】13年ぶり復活「クイズ$ミリオネア」元日放送決定 挑戦者に菊池風磨&ムロツヨシ、みのもんたさん版傑作選もOA [征夷大将軍★]
- 夜勤終わり風呂なう
- 桃香さん!!
- 【悲報】東京都民さん、20過ぎてるのに自転車に乗っててて大炎上wwwwwwwwwwww女「いい歳した男で自転車に乗るのは知的障がい者だけだよ? [483447288]
- 【悲報】「全国の独身男性2000万人に年間120万円の独身税をかけるだけで農家を守って米の値段を半分にできるんだよ」8万高市 [257926174]
- 習近平や王毅などの中共幹部、「高市答弁」に関していまだ一切言及なし。すまんこっから何が起きるの? [271912485]
- 【悲報】ミスター東大さん、高度な『ずらし』を披露するも愚民には理解されず大炎上wwwwwwwwwwww [455031798]
