X



Lisp Scheme Part41
0006 ◆QZaw55cn4c
垢版 |
2018/09/08(土) 00:00:46.97ID:t7GfMYxV
a little schemer/「scheme 手習い」 https://www.amazon.co.jp/dp/4274068269/
を読んでいます(ずいぶんと時間がかかっています)が、次のプログラムがさっぱり理解できなくて困っています

第5章「*すごい* 星がいっぱいだ」
この章の最初の方までは困難を伴いながらも、なんとか理解できました、この章でのこんな感じのコードを、仕様をみて独力で書きおこすことはできています https://ideone.com/fPHC2z

ところが、p.92 から

>Q: eqlist? はなんですか。
>A: 2つのリストが等しいかどうかを決める関数です。…@

>Q: eqlist? は、その引数についていくつ質問をしますか。
>A: 9つです。…A

>Q: なぜ 9 つの質問があるか説明できますか。
>A: 自分の言葉で説明すると次のようになります。
>「各引数は次のいずれかです。・空リスト・アトムがリストに cons されたもの・リストが別のリストに cons されたもの
>たとえば、最初の引数が空になるのと同時に、2番目の引数は、空リストか、car の位置に1つのアトムまたはリストを持っています。…B

>Q: eqan? を使って eqlist? を書きましょう
>A: https://ideone.com/vjYCZ5

この解答例がさっぱりです、実はAからよくわかっていません
コードのコメントは私がつけたのですが、最後の方は混乱してしまって…何がわからないかわからない状況です。
何か理解するための手がかり足がかりヒントはないでしょうか?
0007SCHEME餃子 ◆8X2XSCHEME
垢版 |
2018/09/08(土) 01:10:14.26ID:VmsJpbI+
>>6
私はその本を持ってないのでそのあたりの問題を取り上げたブログ記事を見ながら説明しようかと思ったが、
その Q&A の通りとしか言いようがないんで、何がわからないのかよくわからない。 困ったな。

リストの先頭を見た時にあり得るパターンが 3 通りで、
l1 が 3 通りと l2 が 3 通りなら組合せは 9 通り。

9 通りのパターンは 3 種類に分類できて、

・ l1 と l2 の先頭が空リストなら真
・ l1 と l2 の先頭が一致すれば次の要素に対して再帰的に同じ処理をする
・ l1 と l2 の先頭が一致しないなら偽

となる。

実際のコードにするにあたって、空リストに car, cdr 手続きは適用できないんで、チェックの順番を気にするくらいかな。
0008デフォルトの名無しさん
垢版 |
2018/09/08(土) 05:07:37.63ID:GHaullf6
引数が2つあり、それぞれは3通りの場合があるわけだから
引数の組み合わせとしては3×3=9通りの場合がある。
※引数はリスト(空リストを含む)と仮定していいようだ。

愚直にこの9通りの場合分けを展開するとこの表↓のようになるので、それをそのままコードにしたのがその解答例。

A B 等しい?
() () #t
() (アトム . リスト) #f
() (リスト . リスト) #f

(アトム . リスト) () #f
(アトム . リスト) (アトム . リスト) (and アトム同士が等しい リスト同士が等しい)
(アトム . リスト) (リスト . リスト) #f

(リスト . リスト) () #f
(リスト . リスト) (アトム . リスト) #f
(リスト . リスト) (リスト . リスト) (and carのリスト同士が等しい cdrのリスト同士が等しい)
0009デフォルトの名無しさん
垢版 |
2018/10/07(日) 02:51:53.80ID:n2yn9/Ec
他のソフトウェアに組み込むスクリプト環境でTinySchemeを使おうかと思っているんですが
スクリプトの中からファイルIO関係の機能は使えないようにしたいです。
この場合、走らせるスクリプトの前に、open-input-file等のIO関係の関数を無害な関数で再定義する部分をくっつけてしまえばOKでしょうか?
0010SCHEME餃子 ◆8X2XSCHEME
垢版 |
2018/10/07(日) 14:31:36.10ID:77445U4A
>>9
なんらかの方法で元の定義にアクセスできたら脆弱性になっちゃうから、
要らないなら削除する方が確実だと思う。

どのくらい確実にするかってのは程度問題だけど
削除する分にはそんなに手間でもないし。
0011デフォルトの名無しさん
垢版 |
2018/10/07(日) 16:22:54.47ID:n2yn9/Ec
>>10
ありがとうございます。
削除というのは、その機能をSchemeのソースから削除して再コンパイルするということですか?
0014デフォルトの名無しさん
垢版 |
2018/10/09(火) 08:07:54.35ID:dwdUWAaf
依存型についてのテキストが出てるよ。
Daniel P. Friedman, David Thrane Christiansen "The Little Typer"
Boro Sitnikovski "Gentle Introduction to Dependent Types with Idris"
Edwin Brady "Type-Driven Development with Idris"
Adam Chlipala "Certified Programming with Dependent Types"
Aaron Stump "Verified Functional Programming in Agda"
Idris と Pie言語 ではλ関数とπ関数が同じように導入されているので相互に勉強できるのがいい。
0015デフォルトの名無しさん
垢版 |
2018/10/09(火) 15:29:09.16ID:dwdUWAaf
π算法
Robin Milner "Communicating and Mobile Systems: The Pi Calculus"
Davide Sangiorgi, David Walker "The Pi-Calculus: A Theory of Mobile Processes"
Matthew Hennessy "A Distributed Pi-Calculus"
π算法はもともとCCSの拡張としてRobin Milnerらによって考案された、並行計算(π算法はλ算法の並行版)を表すモデルであり、プロセス計算の一種。
0018SCHEME餃子 ◆8X2XSCHEME
垢版 |
2018/10/17(水) 01:03:06.73ID:BPtTatWV
>>17
Gauche のソースツリーの doc ディレクトリで make pdf コマンドを実行すれば、
pdf 形式のドキュメントのビルドプロセスが走ることになってるよ。
ただ、 TeX を使うみたいなんで、 TeX を導入するのが面倒ってことはあるかも。

公式からは PDF 形式の日本語マニュアルは出してないっぽいね。
001917
垢版 |
2018/10/17(水) 21:27:28.91ID:MYn8m29E
ありがとうございます。挑戦してみます。
0022はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/11/19(月) 22:58:27.29ID:EqyITMeu
話題がなさすぎるので近頃は C++ スレばかりにいるんだけど、
なんか面白い話題があればどんどん書いてよ。
0028デフォルトの名無しさん
垢版 |
2019/01/08(火) 17:40:17.47ID:n4V6aMpj
WindowsでMinGWがインストールされておらずMSVCだけある状態で
C言語のhelloworldプログラムでgauche.hをインクルードすると
gauche.h内の#include <sys/time.h>の部分でエラーになります。
C言語からGaucheを利用する場合はMinGWがインストールされていることが前提という解釈であっているでしょうか?
0029はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/01/08(火) 21:15:36.70ID:YHlgtmk9
>>28
はい。
Gauche をビルドするためには MinGW というか (MinGW を含めた開発環境であるところの) MSYS2 を要求しています。
https://github.com/shirok/Gauche/blob/master/doc/HOWTO-mingw.adoc
少し古いバージョンは (MSYS2 ではなく) MSYS を要求していました。

gauche.h もその開発環境に依存しているので、 gauche.h を include した C のコードは MSVC ではコンパイルを通りません。
つまり、 Gauche の拡張モジュールや Gauche を呼び出すプログラムを C で書こうとするなら、
Windows では MSYS2 を使う方法しか想定されていません。

ただ、過去に「VC++用ポート」を試みた記事が WiLiKi に残っていますし、
ある程度は動いていたようですので、手間を書ければ全く不可能なことというわけでもなさそうです。
https://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3AWindows%2FVC%2B%2B

Gauche の実態は単なる DLL ですから、Gauche 自体を MSVC でコンパイルするのは難しくても
Gauche を呼び出すプログラムを MSVC で作る分には頑張ればなんとかなる可能性は充分にあるように思います。
0030はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/01(金) 16:27:31.29ID:jPYNOX7L
Racket のコアを chez のに置き換える話が以前に出てたけど、
もうほとんどできたみたいね。
次のリリースあたりからはそれになるのかな。
0031はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/05(火) 04:44:00.67ID:VmiK9YL/
R7RS-Large の Tangerine Edition は議論・投票への参加者が少なすぎてちょっとアレな状況みたいね。
積極的に参加してあげて!
0032はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/08(金) 19:33:54.35ID:U10rELvE
界隈でなんだかちょっとだけ ISLISP の人気が出てきてるというか
ここ最近になっていくつか新しい実装が発表されてるんだけど、
使ってみた人いる?
0037はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/12(火) 01:54:55.89ID:jYEPbswv
へー。 そうなのかと思って経緯を調べてみたりしてたんだが、
その過程で ISLISP の IS は International Standard の略だと見つけた。
id.nii.ac.jp/1001/00003362/
仕様にも書いてないから知らんかった。

もっと古い時代に STANDARD LISP という名前の Lisp があったそうで、
http://www.softwarepreservation.org/projects/LISP/stanford/Hearn-StandardLisp-AIM-90.pdf
それ故に標準化にあたって単に Standard とは名乗れず、
Common Lisp が Common Lisp という名前になったのもこのあたりの事情があるらしい。

単に名前を付けるだけでも変な苦心をしてるんだな。
0039はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/13(水) 00:07:17.42ID:VqRfiaP4
>>38
イスラミックステートにかけるなら、
支配地域が縮小してるらしいぞというところに引っかければよかったんじゃないかと思ったが、
縮小どころか元々たいして使われてなかったということに気づいた。
0040はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/13(水) 00:10:08.40ID:VqRfiaP4
>>39
大してして使われていない (少なくとも私の観測範囲では) と思ってるけど、
今後の発展があれば面白いなとも思ってることは付け加えておく。
(ディスってるわけじゃないんだからね! ってこと)
0041デフォルトの名無しさん
垢版 |
2019/02/14(木) 21:27:33.66ID:jKX9xayO
金払わないと正式な仕様書読めないのか、と諦めた記憶がある>ISLISP
ドラフト?は読めたけど
0045はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/20(水) 00:03:33.61ID:C98K3aY7
>>43
ISLISP には興味無いよ。
でも LISP 界に動きがあるのは歓迎するので、
どういう受け止められ方をしているのか聞きたかっただけ。
0048デフォルトの名無しさん
垢版 |
2019/02/21(木) 00:45:26.47ID:vZ2CpAoq
>>47
お返事、ありがとうございます
そうですかISLispはJIS化されてたんですね
でも日本で使われてるんですかね? 
Lispで日本で使われてるのはやっぱりCommon Lispだと思うんですけど(それと教育とかだとScheme(含Racket)が少しあるかな)
0049はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/21(木) 01:05:58.63ID:9MRHAYbl
ISLISP のことはなんも知らんけど、
急に ISLISP 処理系が立て続けに出てきたみたいやから
なんか動きがあったんか? と思って >>32 を書いたんで、
私も質問者の立場なんやわ。

大した理由はないのであっても、
始まったならこのまま発展していくといいね。
0050デフォルトの名無しさん
垢版 |
2019/02/22(金) 06:25:30.84ID:6MhIDIeu
ISLispのプログラミングテキストや解説書って笹川賢一って人が書いたKindle用の電子的なのが2タイトルあるだけで
それ以外は海外でも何も出てないんですかね、Amazon USでタイトルを“ISLisp”で検索しても、その2タイトル以外は
ISOの規格票しか出てきませんね

とにもかくにも国際規格になったんだから、規格案をプッシュした連中がプログラミングの教科書や言語解説書や入門書ぐらいは
書いて出版するぐらいのことはやるべきなんじゃないかと思うんですが、見事なほどに何も出ていないようで驚きました
0052はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/02/22(金) 17:25:28.63ID:PAJj2OJU
>>51
Common Lisp の規模が大きくなってまとまらなかった中で
別の提案を整理して100 ページもないような規模の ISLISP を確立したという事情があるので、
完全なサブセットではないけど言語の考え方としては近い部分が多くて
かなり小さいサブセット「的」なものという感じ。

つっても、やっぱり別言語ではあるので、それを「どれくらい」とは一言では表せないな。
個人的には、あくまで私の感想としては Lua と JavaScript くらいの距離はあるかなぁ……と思ってる。
0054はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/03/05(火) 09:20:27.48ID:mHzXPPXa
>>53
このスレ (の過去スレ) では何度も話題になっている気がするが、
「人工知能」とは何か、それに「向いている」とはどういう意味かが曖昧なので、
Yes とも No とも言えるというのがおおよその結論。

人工知能を定義するなら「人間の知的活動を代行するもの」であり、
かつてはコンパイラや数式処理なども人工知能の範疇だった。
でも、分野として確立して以降は
コンパイラはコンパイラだし、数式処理は数式処理であって、
今ではそれを人工知能と呼ぶ人なんかいない。

逆に言えば分野として確立していない知的な処理はなんだって
人工知能なので、範囲がざっくりしすぎて
どんな言語が向いているかなんて言いようが無い。

強いて言うなら、かつては人工知能の主役は記号処理を基礎に据えたものであったので、
そのときの事情を前提にするならば、
それらを記述するには (当時あった他の主要な言語よりは) LISP が向いていると
言ってもそこそこ妥当ではあった。
0056デフォルトの名無しさん
垢版 |
2019/03/05(火) 22:17:29.86ID:Wd2YNpFb
餃子がスゲー良いこと言ったな…
> 逆に言えば分野として確立していない知的な処理はなんだって人工知能
機械学習みたいないかにも人工知能っぽいものでも、人間が理解して理論的に確立してしまえばなんてことない在り来たりな技術になるんだろうな
0057はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/03/06(水) 03:45:46.67ID:7/fqDaVy
人工知能のカテゴリのひとつに「ルールベース」があるけど、
これって要するに if 文を並べて判断するようなシステムのことで、
現代的な感覚だと人工知能とは言わんよな。
ひとつのカテゴリとして名前を付けることすら馬鹿馬鹿しい。
(あくまでも現代の感覚で見ればという話なので、
当たり前のものにしてきた先人の努力を貶めるものではないことは断わっておく。)

そんなごく当たり前のプログラムも昔は人工知能と呼ばれていたんだから、
人工知能という言葉が指す範囲はとてつもなく広いし、今後も変遷を続けていくと思う。

結果的に LISP が人工知能の記述に「適していた」あるいは「適している」のが事実であってもなくても、
LISP が人工知能の記述を目指しているというわけでもないし、
(LISP 系言語は幅広いので特に人工知能を指向したものも有りはするかもしれないが)
主要な LISP 系言語は Python やら Ruby やらと並べても違和感のないごく普通の汎用言語なんで、
用途を限定してしまうような言説は、個人的にはあまり好きじゃないな。

使いたいように使っていいんだよ。
0058デフォルトの名無しさん
垢版 |
2019/03/06(水) 23:50:18.20ID:pTvDqBNf
>>57
> そんなごく当たり前のプログラムも昔は人工知能と呼ばれていたんだから、
> 人工知能という言葉が指す範囲はとてつもなく広いし、今後も変遷を続けていくと思う。

70年代前半だと数式処理(記号微分とか記号積分とか、特に記号積分はね)も立派な人工知能の一分野
ついでに言えば50年代後半だと今で言うコンパイラの研究も人工知能の1テーマだったらしい
0061デフォルトの名無しさん
垢版 |
2019/03/09(土) 18:08:55.14ID:AFl9pnGp
研究者や企業による実験段階+アルファまでAI
商品化され一般に流通したらIT
0063デフォルトの名無しさん
垢版 |
2019/03/23(土) 22:34:59.05ID:xopjuNQ8
Scheme というか、Lisp のことを少ししか分かっていないんですども、μKanren を使ってみたくて
Sheme の処理系をインストールしたんですが Gauche、Guile、MT/GNU Sheme と、入れた全部
に assp がアンバウンドだと言われて動きません。

1.解決方法が分からなくて、自前で assp を書いて動かしてますが、本当はどうやったら assp が
使えるか教えてください。ライブラリをロードするのでしょうか?

2.せっかく書いたので、自前の関数の働きが本当の assp と同じなのか知りたいです。
みなさんならどのように書きますか? 最初に見つかったときに止める場合のセオリー
はありますか?

書いてみた関数:

(define (assp fn assoc)
(let ((rtn #f))
(for-each (lambda (x)
(if (not rtn)
(if (fn (car x))
(set! rtn x))))
assoc)
rtn))
0064はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/03/23(土) 23:08:12.36ID:ByL/s3eU
>>63
μKanren のことはよくしらないけど、
assp は R6RS (※1) では rnrs lists ライブラリに含まれるので、
R6RS 処理系ではこのライブラリを import すると使えるようになる。
R6RS 以外には無い。

自分で書くとしたら SRFI-1 (※2) を使える状況なら
こんな感じで書くなぁ

(define (assp proc alist)
(find (lambda(x)(proc (car x)))
alist))

※1
 RnRS は Scheme の仕様書の通称。
 n に改定番号が入る。

※2
 小さい言語である Scheme では日常的に使うにはライブラリが足りなさげなので、
 ユーザーコミュニティとしてライブラリの仕様を考えて文書化したものの集合体が SRFI 。
 (RFC みたいな感じ?)
 SRFI-1 はその最初期のもので、リスト操作系のライブラリ。
 仕様の一部ではないので処理系によって SRFI の採用の程度は色々だけど、
 実用嗜好の処理系は主要なものはまあまあ取り込んでいる。
 今では仕様の検討の前段階として一旦 SRFI にしたりもしている。
006563
垢版 |
2019/03/24(日) 10:14:45.86ID:UnbL980K
>>64
ありがとうございます。Gauche は find があるみたいなので、早速置き換えてみました。
Scheme の規格は、過去のものを包括しているわけでもなく、なかなか難しいものなんですね。

μKanren だけに限らないかもしれませんが、μKanren の Scheme のコードは、普通の
オブジェクト指向言語と違って型を作って使い分けするのでなくて、そういう意図でベクトルや
ドット対やリストを使い分けていたり、戻す値が何を意図したものなのかわかりにくくて、
短いけど難しいですね〜 
0066デフォルトの名無しさん
垢版 |
2019/03/24(日) 12:59:34.15ID:0UFOFyyE
μKanrenてユニフィケーションの亜種みたいなもんだから多分どの言語でも大丈夫だぞ
006763
垢版 |
2019/03/26(火) 10:45:46.30ID:qv9oqtep
>>66
μKanren や miniKanren はいろんな言語に移植されていますね。
実は私も、ある超マイナー言語に移植することでその言語の勉強と、移植したライブラリで
なんかしてみようと始めたんですけど、スタック系言語なんで、なかなかすんなりいきません。

あと、コア部分はいいとしても、Shceme でマクロを使っているところをどうするかって
ところが悩みどころ。他の言語の移植をみても、そのへんはつくってないものも多い様で。
0071はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/06/16(日) 17:10:40.09ID:NdE++jZZ
Gauche も 0.9.8 が出たよー
0073はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/06/17(月) 21:26:53.35ID:PcIXrAci
サポートは永遠ではないんやで。
0078デフォルトの名無しさん
垢版 |
2019/08/06(火) 11:57:55.79ID:NEGlosyW
webで公開されてるsicpのレビューを
なんで翻訳者が違うamazonの書籍のところに書いてるんだ?
qiitaにでも書いとけよ
0080デフォルトの名無しさん
垢版 |
2019/09/19(木) 02:40:36.60ID:90sjVPq/
chicken scheme のサイト( www.call-cc.org ) が ここ数日ダウンしたままだ
流石にこのままフェイドアウトではないと信じたい
0082デフォルトの名無しさん
垢版 |
2019/09/23(月) 00:25:37.40ID:yOVeMM4I
パーソナルコンピュータの父アラン・ケイが選ぶ「プログラマー必読の古典本」とは?
https://gigazine.net/news/20190813-alan-kays-best-classic-book-programmers/

アラン・ケイ氏が「大ファンだ」と絶賛する本が、プログラミング言語LISPを生み出した
ジョン・マッカーシー自身の手による解説書「LISP 1.5 Programmer's Manual」です。
アラン・ケイ氏によると、この本を読んで成長するためには「どうすべきなのか」
「実際にどうしているのか」を意識しながら本を読むだけではなく、13ページに書かれた
例を「自力で書き直す」ことが重要とのこと。

アラン・ケイ氏は「LISPは単なるプログラミング言語にとどまらず、思考を鍛えるのに最適な言語です」
と述べており、「LISP 1.5 Programmer's Manual」を「完璧な古典」だと絶賛しています。
0086デフォルトの名無しさん
垢版 |
2019/09/25(水) 09:30:17.28ID:kJSqg5q2
紫のSICPやめてpythonの教科書になったのは知ってたけど
何年か前のことだよね
0087デフォルトの名無しさん
垢版 |
2019/09/26(木) 01:23:29.85ID:ofkTv/yu
> chicken scheme のサイト( www.call-cc.org ) が ここ数日ダウンしたままだ
> 流石にこのままフェイドアウトではないと信じたい

この件、googleの最新キャッシュ日付(2019年9月24日 12:18:42 GMT )を考えると
もしかして "おま国" 的なアクセス制限されちゃってる?
0090デフォルトの名無しさん
垢版 |
2019/09/26(木) 02:26:34.15ID:ofkTv/yu
確認ありがとうございます。
"おま環" (お前の環境だけだろ) のようですね...
0092デフォルトの名無しさん
垢版 |
2019/09/26(木) 21:05:13.34ID:Jjm8Fxg+
chicken scheme ( www.call-cc.org ) にアクセスできない件、スレ違い気味で申し訳ありません。

0. Googleのキャッシュから ⇒ ◯ (見えないよりマシ...)
1. ルーターのアクセスポート制限を解除 ⇒ ×
2. プロバイダー設定( plala ネットバリアベーシック) をフィルタリングOFFに ⇒ ×
3. VPN (L2TP/IPsec) で接続 ⇒ ◯ (繋がった!)

とりあえず、こういう結果になりました。
plalaが規制してる/ plalaが規制されている どっちにせよこれ以上はどうにもならなそうです。
見れるようになったのでヨシとします。
0093デフォルトの名無しさん
垢版 |
2019/09/27(金) 12:20:26.81ID:dgplOwXb
sicpはそんなに良い本?
どういうふうに良い本なのか教えてほしい
0095デフォルトの名無しさん
垢版 |
2019/10/03(木) 21:39:01.39ID:5qBGt8Nl
jpドメインは拒否されてるのかもね
契約してる激安海外VPS経由でアクセスしたら見れたけど、プロバイダ経由だとpingも通らんわ
0096デフォルトの名無しさん
垢版 |
2019/10/04(金) 01:18:49.35ID:8amtWMNV
>>95
私の場合は日本のISP(海外の出版社のサイトとかでアクセスした側の国を自動判別している場合は日本と判定される形の接続法)で
インターネット接続しているけれどwww.call-cc.orgのHPやその下の様々なページは普通に見えるよ
0097デフォルトの名無しさん
垢版 |
2019/10/04(金) 16:00:04.95ID:QJ6Astzp
Common lispよりschemeの方がユーザ多いの?
一番人が多そうなのはracket?
0099デフォルトの名無しさん
垢版 |
2019/10/05(土) 12:25:09.41ID:f93dK2tU
schemeは実装多すぎてどれを選べばいいのか分からん、 特定実装に依存すると いつか廃れたときに困る。RnRSやらsrfi-xx どこまで使えるのかマチマチだからね。
common lispは今のとこ sbcl にしとけば間違いなさそうな安心感がある
0102はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/10/06(日) 01:02:08.24ID:RRBV0NuF
Scheme で安心感の強い処理系っていうと Racket とか Guile とかかな。
そう簡単に廃れなさそう。
0103デフォルトの名無しさん
垢版 |
2019/10/06(日) 03:01:34.82ID:Wv7rmhQe
Schemeの無料で使える処理系で例の大顰蹙買ったR6RS対応してるのってあるの?
0104はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/10/06(日) 09:12:01.09ID:RRBV0NuF
>>103
あるよ。

Racket
Chez
Vicare
Sagittarius
Ikarus
IronScheme
Ypsilon
Mosh
Larceny

R6RS に準拠ってほどではないけど一部をサポートしているものとしては

Guile
BiwaScheme

もある。
Sagittarius と Larceny は R7RS もサポート (R6RS と R7RS を混在させることも出来る) しているよ。
Vicare, Ikarus, Ypsilon は実質的に動きが無くなっているのでこれから使うのはやめた方がいいかもね。
0107デフォルトの名無しさん
垢版 |
2019/10/06(日) 19:19:12.92ID:Wv7rmhQe
>>104
お教え下さり、どうも有難うございました。
RacketもR6をサポートするようになってたんですね。
R6発表後も数年間はRacketはR6対応じゃなかったようなのでサポートする気がないのかと勝手に思い込んでました。
0109はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/10/06(日) 22:34:51.75ID:RRBV0NuF
Scheme はまだ未完成という意識がある気がするな。
だから実務指向な言語と違って現段階では互換性を重要視してない。

重要視はしてないけど突飛な変更が入ってるわけでもなくて、割と正統進化してると思うよ。
R6RS が異端なだけ。
その R6RS にしたところで R7RS と共存が可能な程度に近しいわけだし。
0113デフォルトの名無しさん
垢版 |
2019/10/24(木) 14:55:50.74ID:9HSU6Di+
関数の値が最も0に近くなる引数を求めたい時、どう書けばいいんでしょう?
繰り返しで引数を少しずつ変えていけばいいのはわかるのですが、定石とかあるんですか?
0115デフォルトの名無しさん
垢版 |
2019/10/25(金) 01:02:52.70ID:IZH7p7oT
微分可能ならニュートン法が簡単

そうでないなら、範囲 [ a , b ] をステップ幅 (b-a)/n で 暫定値を探る。(n:分割数)
それが範囲の左右半分どちらにあるかに応じて値 a, b を更新、あとは再帰的に投入。
ステップ幅 が指定誤差未満になったら a を返して脱出

そのまま愚直に組むだけならそんなに長くならない。
0116デフォルトの名無しさん
垢版 |
2019/10/26(土) 10:42:36.27ID:v7RlO1g+
>>113の言ってる関数は数学の関数じゃなくてプログラムの関数の事でしょ…
多分線形でも微分可能でもないだろう
乱数使って適当な範囲で試行してずらしながら一番近そうな範囲を選択して絞り込んでいくという位しか思い付かない
0117デフォルトの名無しさん
垢版 |
2019/10/26(土) 22:25:16.53ID:IPzUune1
どちらの関数にせよ考え方は一緒じゃないかな。
値の変化が連続的でなければそのやり方では求められないし、連続的であっても極小値に落ち込んでしまう可能性がある。
関数がハッシュ計算するようなものだったら総当たりしかないのでは?
0119デフォルトの名無しさん
垢版 |
2019/10/28(月) 06:33:09.38ID:kIF/RW73
誰かと思ったらグレアムか
奴は口だけのポンコツになって久しいよ
もう実装は無理
0124はちみつ餃子 ◆8X2XSCHEME
垢版 |
2019/11/08(金) 14:53:51.74ID:qQX8Hix+
グレアムは金には困らんのだから残りの人生は全部が趣味みたいなもんだろ。
引退もクソもねぇよ。
0131デフォルトの名無しさん
垢版 |
2019/11/10(日) 06:23:28.13ID:hnRZ9wTQ
グラハムはハーバード、MIT人工知能研、イタリアの美術大出てるんでしょ?
アメリカの大学は学費も相当かかる
ビジネス始める前から「普通の奴等の上」を行ってる人なんだと思うなぁ
頭さえ良ければ、とか思うかもしれないが環境、友人は大事だよ
ビアウェブのパートナーはMITの教授だよね、確か
0132デフォルトの名無しさん
垢版 |
2019/11/10(日) 14:00:02.99ID:jFIdfEKQ
いまPLAIの8章をよんでいるんだけど、次のExerciseの不変条件と言うのがよく分からん・・
ttp://cs.brown.edu/courses/cs173/2012/book/mut-struct-vs-var.html#%28elem._%28chunk._~3cms-setbox.C-case~3e~3a1%29%29

ソースコードはこれ https://bitsend.jp/download/d7ebf31e84a7dc5d8b55a3e3b66ce803.html

Storeに束縛を追加するのはbox、その束縛を参照するのはset-box!とunboxだけだから、
set-box!を評価するときに、ロケーションがStoreに存在しないことは無いように考えているんだけど、もっと数学的に
証明しなきゃいけないんですよねこれ・・
0133デフォルトの名無しさん
垢版 |
2019/11/18(月) 17:16:59.42ID:D69b6YL7
Emacs hy-modeがバグってて動かない
0135デフォルトの名無しさん
垢版 |
2019/12/06(金) 00:43:20.37ID:KafRVWs2
$ ros run
* (+ 31000 33500 1000 2300 16500 300 1000 10100)
64700

おいおい,なんだこのメチャクチャな値
こんなんじゃ,まったく信頼できないんだが
どうなってんだ
しかも再現できないし

$ ros version
roswell 19.09.12.102(NO-GIT-REVISION)
0136135
垢版 |
2019/12/06(金) 03:21:18.04ID:KafRVWs2
正しい値は 95700 なのだが
(- 95700 31000)
が 64700 になることに気づいた

最初の引数,抜かしてんじゃん...
REPL の + 関数,バグってるんだが

それとも WSL がいけないのか? tmux がいけないのか?
0137135
垢版 |
2019/12/06(金) 04:20:18.39ID:KafRVWs2
$ ros run -- --version
SBCL 1.5.5
0141_
垢版 |
2020/01/17(金) 18:22:11.13ID:ceaCkwJJ
>>134
Lispworks 8 でる情報あったんですか?
てっきり次は 7.2 かと。
0142_
垢版 |
2020/02/14(金) 11:14:07.86ID:m79sNhAX
Racket 7.6リリースされたよー
https://blog.racket-lang.org/2020/02/racket-v7-6.html

Chez Schemeの取り込みが進んで、プロダクション・レディになったそうな。
デフォルトにはまだなっていないようです。
0144デフォルトの名無しさん
垢版 |
2020/02/14(金) 23:19:09.23ID:2TRtlmBi
SICPを勉強したくてschemeを一通り勉強したけど
schemeが本当に好きになった
綺麗な言語だなと思ったのはschemeが初めて
0146デフォルトの名無しさん
垢版 |
2020/02/18(火) 22:12:38.88ID:i+WlpfA0
SICPで4.4論理プログラミングがでてきたけど、論理プログラム言語(Prolog)なんて
一生使わんのじゃないのか・・・?俺みたいな雑魚PGは特に。
そもそも俺はなんでインタプリタ作ってるんや・・・
0147はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/02/19(水) 11:52:11.74ID:mcS2XXQq
>>146
SICP はコンピューターサイエンスの本だから、
いろんなパラダイムについて説明しているよ。
知ってれば便利なこともあるとは思うけど、
必ずしも日常的に役立つというものでもないのも確か。
0149デフォルトの名無しさん
垢版 |
2020/02/22(土) 11:13:35.82ID:dEZr6bBq
歴史、哲学、思想を勉強しても目の前の仕事には直結しない
みたいなことなのかな
0151はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/02/22(土) 12:07:02.06ID:5jIrjfcF
事実を列挙すれば解を求める処理をやってくれるってのは理想のひとつではあるよな。

実際にはには Prolog が答えを出すメカニズムを理解していないと
答えを (効率的に) 出しやすい事実を上手く与えられない場合もあるし、現実は厳しい……。
0152デフォルトの名無しさん
垢版 |
2020/02/22(土) 21:37:13.68ID:dEZr6bBq
思うんだけどLispというと悟りとか、ゲーデル云々みたいな話がよく言われるけど
Prologではあんまり関連付けて言われないですよね
0153デフォルトの名無しさん
垢版 |
2020/02/29(土) 16:53:01.80ID:RQUlgixi
上にもあるけどprologは論理がそのままプログラムになるっていわれてんだろ
似たようなもん
0154デフォルトの名無しさん
垢版 |
2020/03/03(火) 08:38:08.45ID:VyHc4g1O
hy面白いけどlisperにはrubyの方が人気なんだ
0156デフォルトの名無しさん
垢版 |
2020/03/03(火) 18:09:46.41ID:wrUSgHR4
>>152
> Prologではあんまり関連付けて言われないですよね

Prologは「論理プログラミング言語」と呼ばれたりするけれど書かれたプログラムを実行可能にするためのプログラミング言語であるために
論理のための言語(つまり論理式を記述するための言語)とはかなり違ってしまっているからね

その典型がPrologで動くプログラムを書く上で不可欠なカット “!” ね
あれは本来の論理には対応物がなく論理とは全く縁のないコンストラクトだが
カットを使わなければほとんどのPrologプログラムはまともに動かなくなってしまうだろう

その点、Schemeから命令的な言語コンストラクトおよび標準手続きであるset!とset-car!, set-cdr!を除いた部分は
弱い(weak, つまりλ抽象の本体式中のβ-簡約基(redex)は簡約せずに放置しておく)
作用的順序(applicative order)の評価戦略(reduction strategy)のλ計算そのものだ

call-ccは継続(continuation)というメタな(つまり意味論上の)値を対象レベルに持ち込むmeta-circular的な拡張であり
Schemeに限らずLisp一般で広く採用されているS-式という構文は自分の構文に対する抽象構文の表現になっているから
プログラムが自分自身(や同じ言語で書かれた他のプログラム)のソースコードを記述している言語を対象言語として
自分自身がそれを素直な形で操作できるメタ言語レベルの存在として振る舞えることになるからね

言い換えればS-式という表現形式のために括弧をやたらと多用させられるLisp言語では
ソースコードをその抽象構文(木構造)と同型な形で記述させていると言っても良い

だからLispのプログラムをLispで処理する場合には、C等のような普通のプログラミング言語で書かれたプログラムを処理する場合には
不可欠な字句解析や構文解析が実質上は不要なんだよ

何故ならば処理する側のLispプログラムにとって処理される側のLispコードは最初から抽象構文木と1:1対応する形式で提供される訳だから

正にゲーデルの不完全性定理で行っている形式化された論理のゲーデル数による表現とそれを原始再帰的函数や同述語を含むメタ論理のレベルで
処理する構造が、Lispの世界に対応していると言えるわけですよ
0163デフォルトの名無しさん
垢版 |
2020/03/04(水) 12:50:19.65ID:ujdXlrHA
SECD
Landin’s J
0168デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:34:42.44ID:h922Dn8C
>>82
>>84
MITの件もあるし
今ならPythonでいいでしょ

MITレベルの頭ならLispなんて
すぐ読み書きできると思うが
0169デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:39:40.49ID:h922Dn8C
>>146
>論理プログラム言語(Prolog)なんて
ほとんどのプログラマが
仕事では一生使わないだろうな?
でも設計をする上で参考になる
0170デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:41:41.16ID:h922Dn8C
>>149
Prologの勉強は無駄ではないと思うが
すぐ成果には結びつかないだろうね?

でも長期的には流行りの言語やFWに飛びつくより
地力につながる可能性もあるだろう
0171デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:42:43.57ID:h922Dn8C
>>150
宣言型という点では近いけど言語としては同じじゃない
ユニフィケーションやバックトラックの挙動があるから
0172デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:44:54.71ID:h922Dn8C
>>151
AIはディープラーニングが主流になったが
それはそれとしてアレでPrologがもう少し
分かりやすければ日常的に使うんだけどな
これどうやって書くんだってのが多すぎる
0173デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:47:20.68ID:h922Dn8C
>>156
Lispはメタプログラミングしやすいって理屈は分かるが
実際にそれでものすごい作業効率が上がるかは疑問だな?

なぜんあらメジャーな言語はライブラリが充実してて
それ使えば最初から書かなくても済むわけだから早い
0174デフォルトの名無しさん
垢版 |
2020/03/05(木) 20:48:56.47ID:h922Dn8C
>>159
本当にできるかできないかは知らんが
そういえばメタプロやってるって
声ほとんど聞いたことないな
Lisp勢はマクロマクロうるさいのに
0177デフォルトの名無しさん
垢版 |
2020/03/10(火) 18:23:23.35ID:BcZoFSIR
hy
マクロの入力にpair入れたのに
マクロ実行時にunquoteするとlistに化けるバグがある気がする
0187デフォルトの名無しさん
垢版 |
2020/04/28(火) 11:03:05.28ID:jkGkDNpV
Scheme の map 手続きについて、
手続きを適用する順序 (副作用が発生する順序) は仕様上は未規定ということになっています。
各処理系として保証するということは有りえるんですが、
Racket の場合は保証されていると読み取って良いでしょうか?

https://docs.racket-lang.org/reference/pairs.html?q=map#%28def._%28%28lib._racket%2Fprivate%2Fmap..rkt%29._map%29%29

わざわざ "from the first elements to the last" という書き方をしているからには順序を意図しているように
解釈するのが自然かとは思うんですが、単に範囲を言っていると解釈できなくもないので、
英語と Racket に明るい方がいればご教示賜りたいです。
0188_
垢版 |
2020/04/28(火) 14:05:01.63ID:moc7J10E
>>187
racket使ってるわけでも英語ができるわけでもないけど。
最初から最後までって範囲の話してるんじゃなかろうか。
順序の保証があるなら IN ORDER とか付きそうな気がする。
0189デフォルトの名無しさん
垢版 |
2020/04/28(火) 14:43:15.44ID:jkGkDNpV
>>188
R5RS などでは手続きが各要素に適用される dynamic order は unspecified である
というような表現になってるんですよ。 order という語が主語になってます。

https://docs.racket-lang.org/r5rs/r5rs-std/r5rs-Z-H-9.html?q=map#%25_idx_580

だからわざわざ変えた表現をするからには違うこと (順序が保証される) を言おうとしているんだろうと思いつつも、
明確に順序を強調してるわけでもないな……? というところで解釈に迷ってました。

私は R5RS (など) と言い回しが違うという点に引きずられていましたが、
"from the first elements to the last" というフレーズ単体で見ると範囲のニュアンス
で捉える方が自然ですかね。

私自身はいずれにしても map の副作用の順序に期待しないんですが、
しばらく前に Qiita に投稿されていた記事の中で map の順序が効いてくるコードがあったので、
これってありなんかなぁと思ったという経緯です。
0190デフォルトの名無しさん
垢版 |
2020/04/29(水) 01:16:58.58ID:y02v3tEE
>>187
保証とはどういうことを指しているのだろう
将来仕様を変更しないとは書いていないのは確かなようだ
racketでは引数の評価もleft to rightとは書いてあった
schemeでもfor-eachは先頭から順番に評価する
実際に評価順の違いが観察できるのはchezかな
0191デフォルトの名無しさん
垢版 |
2020/04/29(水) 03:18:21.69ID:ALOjMFFX
>>189
> 私は R5RS (など) と言い回しが違うという点に引きずられていましたが、
> "from the first elements to the last" というフレーズ単体で見ると範囲のニュアンス
> で捉える方が自然ですかね。

いや、違う。
R5RSとRacket Reference v7.6とでのmapが手続き(proc)を適用する要素の順番に関して言及しているのは
各々、以下の箇所だが、両者では明らかに全く異なる。

R5RS>The dynamic order in which proc is applied to the elements of the lists is unspecified.

Racket>Applies proc to the elements of the lsts from the first elements to the last.

R5RSは>>187で君が述べていた通り、リストの要素への適用順序はunspecifiedだと明確に書いてある。

これに対してRacket v7.6ではprocをlstsの最初の要素から最後の要素へと適用すると書いてある、
つまりリストlstsの要素の並びの順番に手続きprocを適用して行くと明記している。
だからprocとして受け取った値を標準出力に書き出す手続きを渡せば、R5RSでは表示される要素の順番はどんな順序でも良いのに対して
Racket v7.6では元のリストlstの要素の並び順に必ず表示せねばならない。

これは私の想像だが、R5RSでmapが手続きを適用する要素の順番を規定しないと明記しているのは長大なリストに対する並列処理を可能にするためだろう。
逆に言えば手続きの適用順序を確実に把握したい場合にはmapでなくfor-eachを使えというのがR5RSを定めたチームの言語設計上の意図だろう。


>>190
> 保証とはどういうことを指しているのだろう

その言語仕様書のそのバージョンに準拠していると宣言している言語処理系は、それを守らねばならない(守っていなければバグだ)という意味だよ。
だから今の例では、Racket Reference v7.6準拠と処理系が宣言したら、その処理系はmapで手続きを適用する要素の順番を必ずリストの並び順に
する義務が生ずる(Racket v7.6の定める言語仕様=Racket v7.6ユーザとの約束の順守を保証せねばならない)、ということだ。

当然ながら、言語仕様書のバージョンが変われば約束(つまり言語仕様による規定の内容)も変更され得る。
0192デフォルトの名無しさん
垢版 |
2020/04/29(水) 06:44:54.55ID:bLWOmnfL
>>187
処理系によって(A B C)の評価順序が
(1 2 3)だったり(3 1 2)だったり(3 2 1)だったりするから
mapのようなリストで処理結果を返すような関数のクロージャ内では原則副作用は起こさないことが求められる
for-eachみたいな初めから副作用を期待する関数はどう並べようが問題は起きない
0193デフォルトの名無しさん
垢版 |
2020/04/29(水) 09:21:45.86ID:sxS/u8Yc
>>192
それは承知しているのです。
ここでは Racket のドキュメントをどう解釈すべきかというのが論点です。

>>191
> 最初の要素から最後の要素へと適用すると書いてある

順番に (in order) とは書いていません。
順序が意味を持つ箇所ではおおよそ order という語で強調しているのに
それがないここでも順番であることを確信してよいほどに
(英語のニュアンスとして) 自明でしょうか。
0194デフォルトの名無しさん
垢版 |
2020/04/29(水) 09:54:06.36ID:sxS/u8Yc
>>191
> 長大なリストに対する並列処理を可能にするためだろう

手続きの引数の評価順序については未規定ではあるものの
"some sequential order of evaluation" という制約がついています。

https://docs.racket-lang.org/r5rs/r5rs-std/r5rs-Z-H-7.html#%_sec_4.1.3

ちょっとわかり難いんですが、これは「同時ではない (かのように動作する)」と解されるそうです。
たとえば

(list (begin (display 'a) (display 'b) 1)
(begin (display 'c) (display 'd) 2))

とあったときに表示は abcd か cdab のどちらかであり acbd だったり cabd だったりはしない
ということです。

map についてはこういう制約は書かれてはいないものの、
順序は規定しないという文言は「既定はしないけどなんらかの順序を想定する」
とも読めなくもないので並列化を許しているとは言い切れない気がします。

副作用がないときに限っては並列化しても仕様に反しないのは間違いないですけど、
その場合は順序に関して有るとも無いとも書く必要がないんですよね。
どうせ観測できないので。
0195デフォルトの名無しさん
垢版 |
2020/04/29(水) 12:39:32.81ID:qQMMu/UY
>>194
mapについては、まえからか、うしろからか好きな方で実装すればいいよ、程度のはなしだとおもってた。
継続を突っ込むとどうとかいうのがあったとおもうけどだれか解説pls
0196187
垢版 |
2020/04/29(水) 13:42:08.04ID:sxS/u8Yc
>>195
継続については「call/cc は副作用を生じる」というひとことで説明できます。
副作用とは何かというのは色々なモデル化のやり方があってはっきりしたひとつの定義を
定められないみたいなんですが、この説明が納得感があって参考になると思います。
https://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3Acall%2Fcc%E3%81%A8%E5%89%AF%E4%BD%9C%E7%94%A8

副作用がないなら順序なんか考える必要はないんですよ。
どの順序で実行されようと並列であろうと (観測できる) 結果は同じなので順序を気にする意味がありません。
結果が同じにならない場合 (副作用がある場合) がどうあるべきか考えるから順序が効いてくるんです。

で、副作用がある手続きの中でも特に第一級継続は (観測できるだけでなく) 流れを変えることが出来るから
どれが妥当なのか結論が出ないなぁってことです。
0197デフォルトの名無しさん
垢版 |
2020/04/29(水) 14:57:29.24ID:u7alO7eW
グラフかくのってどうしたらいい?gnuplotの🎺使うの?
gnuplot使ったことないけど難しいのか?
0199デフォルトの名無しさん
垢版 |
2020/04/29(水) 23:11:18.94ID:ALOjMFFX
>>193
"from the first elements to the last"は最初の要素から最後の要素へだから当然ながらin orderの意味を含む

もしも、上の表現を使ってin orderを保証しないことを意図する言語仕様があったら、
その言語仕様を書いた人間が英語(というよりも人間の使う言葉)の常識を知らないと言うべきレベルの代物

procの適用にin orderを保証したくないのならば"from the first elements to the last"などではなく、例えば
“(map) Applies proc to every elements of the lsts exactly once”とでも書くべき
というか、そもそもR5RSでのmapに関する表現をそのまま使えば良い


>>194
なるほど、インターリーヴを起こしてはならない、ということですね
良い反例ですね、了解しました
確かにそれだと並列処理という話は排除されますね
0200デフォルトの名無しさん
垢版 |
2020/04/30(木) 01:56:25.80ID:qpY4nJGd
実用性皆無の話だなschemeらしいや
racketとの比較ならr6だと思うのだが
しかもr7でなくr5とな
scheme間でさえ移植性は低いんだからどんな挙動でも良いんじゃねえか
racketはまだ実装が複数存在するような状況ではないらしいが
schemeとは文化が違うんで実用性に舵切った仕切りになりそうね
0201デフォルトの名無しさん
垢版 |
2020/04/30(木) 02:18:30.11ID:7t452aCV
>>199
> "from the first elements to the last"は最初の要素から最後の要素へだから当然ながらin orderの意味を含む

この説明は説明になってなかったですね
ちゃんと書くと、前置詞fromとtoとを同時に使う場合、前者は動詞が表す行為の始点を、後者は終点を表す
つまり
> "from the first elements to the last"
という表現は先頭の要素たちがprocをapplyするという行為は、その行為の始点が先頭要素で終点が末尾の要素となる経路から成るということ

そうであるので、途中の要素に関しては193が心配している通り順序通り(in order)とは確かに書いていないけれど、
少なくとも最初に適用されるのは先頭要素たちで最後に適用されるのは最終要素だということは上の引用した英語句から確かだということ

applyを行う最初と最後はそれぞれ先頭と末尾でなければならないのに途中はランダムでも可というのは不自然すぎる
(なぜ最初と最後だけは変更を許さず先頭と末尾に確定させるのか?、ランダムを許すならば最初・最後も含め全部がランダム可にするのが自然)
ということだ

もし最初および最後だけはそれぞれ先頭および最後だけに限定し、それ以外の途中の順番だけは規定したくない、という極めて不自然な仕様にしたいならば
誤解させないように、「但し、最初・最後以外の途中の順番は自由で規定しない」という趣旨の語句を挟む必要がある
0202_
垢版 |
2020/05/03(日) 15:45:23.91ID:XyvLD4Kl
そうこうしているうち Racket 7.7 リリースされたよ。
https://blog.racket-lang.org/2020/05/racket-v7-7.html
個人的なトピックス
・イミュータブルで高速なハッシュテーブルHAMT(hash array mapped trie)がインプリされた。
・コンパイラの最適化でコードサイズ20%減。
・GC1,2割高速化。
・ドキュメント改善。
0203デフォルトの名無しさん
垢版 |
2020/05/03(日) 18:58:12.70ID:BS5ww13P
今の Racket は
ChezScheme をバックエンドにしたやつと従来からのやつがどちらも配信されているけど、
これって将来的には一本化される予定ってあるのかな?
0204デフォルトの名無しさん
垢版 |
2020/05/04(月) 08:02:38.27ID:QFOyDpRt
hy言語をwindows10で使いたい
pip install hyは成功するが
コマンドプロンプトでhyと入力してもhyが実行されない
変なパスの設定がいる?
0205デフォルトの名無しさん
垢版 |
2020/05/04(月) 17:14:51.89ID:WvOaLqMC
>>204
管理者権限でインストールしたなら C:\Program Files\Python37\Scripts だけど、
ユーザ権限なら %LocalAppData%\Programs\Python の下のどこからしい。
0207デフォルトの名無しさん
垢版 |
2020/05/29(金) 15:53:20.54ID:Xj9bBIl5
https://www.indeed.com/q-Lisp-jobs.html
ここで何度も募集かかってる企業って人が辞めるのも早いってこと?
防衛産業の企業は人気ないとかなのかな
0208デフォルトの名無しさん
垢版 |
2020/05/31(日) 00:46:42.64ID:RkS0wDCU
Common Lispは使い込まないと頭に入ってこないが
Racketにはドキュメント読んだだけで頭にすっと入ってくる綺麗さがあった
最近のRacketって昔と同じ感じの綺麗なままなんだろうか

最近読んだRacketの() []の括弧を区別する方法のドキュメントがわかりにくくて
RacketもCommonLispと同じなってしまって,これならCommon Lispでいいじゃん
と思ったのだが
0209デフォルトの名無しさん
垢版 |
2020/05/31(日) 16:35:47.71ID:6jrbJecg
> 最近読んだRacketの() []の括弧を区別する方法

racketがschemeから枝分かれして10年だがracketになるよりまえのr6rsからだろ
たまにしか書かない程度ならなんでも良いだろ大袈裟だな
0210はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/06/01(月) 02:26:33.76ID:0yVOdbpz
Racket は元は教育用途で使われていたこともあってドキュメントはかなり整備されている部類だと思うが。
0211デフォルトの名無しさん
垢版 |
2020/06/02(火) 22:21:53.62ID:0sTsfEfs
他の言語と比べてCommon Lispっぽい書き方、Schemeっぽい書き方ってどんな書き方ですかね
0213デフォルトの名無しさん
垢版 |
2020/06/03(水) 00:18:32.67ID:5C2VTXl3
CLっぽい書き方はマクロを使いまくった超絶技巧だろう
Schemeっぽい書き方は兎に角無理矢理に再起呼び出しを使った超絶技巧な書き方だろう
0215デフォルトの名無しさん
垢版 |
2020/06/03(水) 09:04:50.18ID:yr2/b+Mr
括弧のやまがある時点でlispっぽい。あとはまあ、ラムダ式とかもほかに普及してきてるから、マクロかなぁ。
0216デフォルトの名無しさん
垢版 |
2020/06/05(金) 13:14:24.46ID:dnBRE6E+
hy言語良いのにpython使いが良さをわかってくれない
0220デフォルトの名無しさん
垢版 |
2020/06/29(月) 08:04:38.82ID:bwiS8r2m
>>218
hobbyistDVは業務で使うことはできんくて作成したEXEも配布できないです
professionalは業務用途で無制限の配布ライセンス込みです
業務で使用するEXEの配布をするのが目的かどうかでしょうね
0221デフォルトの名無しさん
垢版 |
2020/07/21(火) 23:47:51.88ID:WS1OAOc5
Pythonぽい独自言語をpythonに変換したい
Lispは使わずpythonのパーサー使った方が楽だろうか
0223デフォルトの名無しさん
垢版 |
2020/07/22(水) 19:30:54.17ID:Cq/LgZJ4
hyこういう時に使えるのか
0224デフォルトの名無しさん
垢版 |
2020/08/21(金) 21:28:14.79ID:l/GdGvyy
racketでデバッグするのは
DrRacketを使うしかない?
コマンドラインでデバッグできたらいいんだが
0225はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/08/24(月) 02:59:00.85ID:ko9AntT7
デバッグってどういうレベルのことだろ。
REPL はあるんだからそこから実行してみればいいんじゃね。
0226デフォルトの名無しさん
垢版 |
2020/10/05(月) 07:37:00.61ID:VkmQCekf
Python のpandasが日時関係処理充実しすぎて手放せない
しかしlispで似たことできるなら乗り換えたい
Pandasのデータからガントチャート作ってくれさえすればいいのだけど
Lispに相当するものないでしょうか
0227デフォルトの名無しさん
垢版 |
2020/10/05(月) 23:29:50.84ID:+akcWJTJ
既に手放せないほどのものを漠然としたlispへの印象で乗り換えたら全てが満足したという話は寡聞にして知らない
0228デフォルトの名無しさん
垢版 |
2020/10/07(水) 06:01:50.72ID:K2xU1fKa
pandasはRの劣化コピーで
Rはschemeと相性がいいから
Rに乗り換えると良いのでは?
0230デフォルトの名無しさん
垢版 |
2020/10/16(金) 17:12:58.14ID:PUF6e3pG
lispは他の言語に寄生して生きていくしかないね
pyレベルのライブラリなんて期待できないし
0232デフォルトの名無しさん
垢版 |
2020/10/16(金) 19:26:16.21ID:eDnfO719
時期にcommon lisp でできるようになるかも
最近numpyのcommonlisp版作るnumcl ってプロジェクトあるし
0233デフォルトの名無しさん
垢版 |
2020/10/16(金) 19:47:49.92ID:gzagFIoh
カッコなし、字下げか空白だけで繋ぐlispとかあったら3レス分くらい流行るかも
0235デフォルトの名無しさん
垢版 |
2020/10/16(金) 22:55:51.98ID:uQ0QovW5
無限ループ
((lambda(x)(x x))(lambda(x)(x x)))
こういうのだと字下げだけでは対応できないから補助キーワードが必要になる
call
 lambda x
  call x x
 lambda x
  call x x
こうかな
無意味に行数が増える時点で自分的に却下だけど
0238デフォルトの名無しさん
垢版 |
2020/10/17(土) 13:45:30.78ID:FBaj+4Vy
AST をそのままかけるのが lisp の欠点であるし強みでもあるんだから、それが嫌なら他言語で AST をいじれるライブラリーを使ってかけって話だしね
0239はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/10/17(土) 16:11:43.70ID:EbfBq8oa
>>237
Indentation-sensitive syntax ( I 式) は S 式との間での単純な変換規則なので
S 式を忘れて書けるほどの抽象度ではないという感覚はわかる。
むしろ脳内で S 式に展開しようとしてしまって変に負荷がかかる感じがある。
最初から I 式で学んでいればまた違う感覚なのかもしれないけど、
そういう学習ルートは確立してないしなぁ。
0240デフォルトの名無しさん
垢版 |
2020/11/03(火) 18:17:12.28ID:mQdztdM9
趣味プログラマでLispしか知らないんだけど、
みんなはやりたいことの応じて言語を使い分けてんの?
0241デフォルトの名無しさん
垢版 |
2020/11/04(水) 09:41:10.74ID:lIQnEWld
>>240
そりゃ使い分ける
たとえば速さや移植性を重視するときは今でもCが手放せない
一時Rustも使ってみたけどLLVMに縛られるのでCに戻った
あと複雑なことをしないグループログラムだとPythonが楽
ネットを探せば必要なライブラリはだいたい手に入る
0242はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/11/04(水) 12:06:16.91ID:gK1y19nz
なんだかんだで C だけは手放せない感じはあるかな。
低レイヤを支配してるのはやっぱ C だわ。
それもこれからは一部は Go や Rust に置き換わっていくとは思うけど。
0243◆QZaw55cn4c
垢版 |
2020/11/04(水) 19:46:38.68ID:P7pHA7N2
>>242
>これからは一部は Go や Rust に置き換わっていくとは思うけど。

……
C で記述された lib を Go や Rust は気軽にコールできるのですか?
まさか…
0244はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/11/05(木) 17:06:21.53ID:CL/4cqPq
>>243
そりゃ当然できるよ。 呼び出すだけなら難しい手間は何もない。
ただ、 C の側のコードの保証が弱すぎる。
たとえば (C側で) malloc で確保したメモリは Go や Rust の側でいつ解放するのが
正しいのかわからないのでそのあたりのつじつま合わせは手動で頑張るしかない。
多少のラッパーを書く必要はあったりする。
0245デフォルトの名無しさん
垢版 |
2020/11/14(土) 17:07:17.70ID:sHUc2peo
趣味でやっててhyperspec引きながらやりたいことできるようにはなってきたんだけど、
ガッコで系統的勉強したわけじゃないし、自分でやっててもうちょっとええ方法あってもいいよなあとか思うんだけど、
なんかいい勉強方法ある?PAIPはイヤ。
0246デフォルトの名無しさん
垢版 |
2020/11/15(日) 01:33:48.20ID:A4lXbstU
SICPとCTMCPとかどうかな。
LISPじゃなくてプログラミング全般を体系的に学ぶ話になるけど。
0247はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/11/15(日) 03:50:11.96ID:x+/Z2zzY
日本語で書かれた Common Lisp の本はほとんど絶版になっちゃってるしなぁ……。

ガチの初心者なら Land of Lisp とかもアリかと思うけど、自分でリファレンスを調べられる程度ということになると
逆にちょうどよい書籍ってあまりない感じだよね。
0249デフォルトの名無しさん
垢版 |
2020/11/16(月) 20:37:45.98ID:ui1G6s5+
on lisp好き
let over lamda変態チックで好き
でも今はsmalltalkerになってしまったよ
0250デフォルトの名無しさん
垢版 |
2020/11/17(火) 01:49:08.02ID:k3t+4yVm
lolのワクワク感はすごい、とりあえず写経したけど理解が追いついてないのでg!無し版を実装中

初心者だけどlisp関連の良書はかなりネットに上がってるよね、cltl2、onlisp,、lol、sicpなどなど
初心者だけど評判良さそうだからとホイホイ買ったのをネットで見付けてはヘコんでる
0254デフォルトの名無しさん
垢版 |
2020/12/01(火) 23:12:43.95ID:Ul2ITO5q
スキーム手習いなんですけど
前の章までしっかり理解してから読み進めてくださいとのことですが
継続渡しから急に難しく感じます
そこまでが理解できてないってこと??
0255はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/12/02(水) 11:19:13.62ID:wCsCmSK2
>>254
私はその本を持っていないから具体的なことはわからんけど、
不慣れな初心者にとって継続渡しは実際に難しいと思う。
でも「難しい」だけで「理解できない」わけじゃないならたぶん前章まで一応の理解はできてるんじゃないかな。
0256デフォルトの名無しさん
垢版 |
2020/12/02(水) 12:39:58.54ID:2sTDa/BO
継続渡しスタイルに書き換える方法がわからないではなくて継続渡しスタイルに書き換える意味がわからないからかな?
0257はちみつ餃子 ◆8X2XSCHEME
垢版 |
2020/12/02(水) 13:45:58.76ID:wCsCmSK2
ああ。 なるほど。
継続渡し形式でプログラムを書くことは実際にまず無いし便利でもないので
その点では意味不明と感じられても仕方がないことではあるな。

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

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

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

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

それと本のわからんところのコードを貼れば誰か解説してくれんじゃない。
0260デフォルトの名無しさん
垢版 |
2020/12/02(水) 22:45:58.51ID:2sTDa/BO
超高性能gotoって書いてるのは普通の言語のgotoって同じ関数内でしかジャンプできないんだけど、
継続なら安全に関数間でもジャンプできるっていう意味。
0261デフォルトの名無しさん
垢版 |
2020/12/02(水) 22:48:34.44ID:2sTDa/BO
継続はわかってしまえば当たり前でどこにでも存在してるんだけど、
継続を考えたやつは本当頭いいわとおもった。
0264デフォルトの名無しさん
垢版 |
2020/12/03(木) 12:12:09.32ID:vc9+WZu6
Landin's J operator の糖衣みたいなもんじゃ?
call-ccって.
0265デフォルトの名無しさん
垢版 |
2020/12/03(木) 14:15:21.78ID:sf+VFKLQ
普段cl書きなんでこのまま動くか知らんが、雰囲気はたぶん
(define call/cc (lambda (func) (func (J (lambda x x)))
0266デフォルトの名無しさん
垢版 |
2020/12/03(木) 19:48:43.98ID:1MHSKMz8
>>258
継続渡しの初期の用例にヒューイットのアクター理論があるように
並行性が絡むと有り難いこともあるけど
Schemeの規格にそういうのがないから

Gaucheを使ったウェブアプリサーバーにKahuaってのがあったけど
あれが継続渡しを使ってたはず
0267デフォルトの名無しさん
垢版 |
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
0269デフォルトの名無しさん
垢版 |
2020/12/08(火) 00:25:26.96ID:g/rTchWW
そういう発想はschemeっぽくないと思う
これはコンピュータにかける魔法言語なんだからぁ
0270デフォルトの名無しさん
垢版 |
2020/12/08(火) 10:24:39.14ID:7buWiz9t
schemeは知らんがclでcall/ccエミュってるぞ、こういうのは勉強になる
閲覧無料の論文もたくさん出てくるし、確かrosetta code(だったか)に少し残念だけど動く実装載ってた気がする
デフォでdynamic scopeのclの方が(エミュる)のはむしろ簡単な気がする
0275◆QZaw55cn4c
垢版 |
2021/01/02(土) 01:05:03.40ID:wp0Bo1A/
>>6
この冬、職場から休暇をいただいたことをきっかけに a little schemer への再チャレンジを始めました
2週間では >>6 までは進めなかったけれども、しつこくてべたな精読を今後も継続することにしました‥‥個人的な話でごめんなさい
0277はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/01/02(土) 12:55:01.66ID:rf+zWHQf
2018 年の話題へスレ内でアンカーできるあたり、だいぶん進みの遅いスレだなぁ……

ところで先月、 Gauche の 0.9.10 がリリースされたよ。
0278デフォルトの名無しさん
垢版 |
2021/01/11(月) 12:28:40.23ID:evx8yw3j
最近Clojureをさわって思ったんだけど、コンスって必要?ただのリストじゃだめなん?
0279デフォルトの名無しさん
垢版 |
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で扱ってるけどほんと便利だよ
0280デフォルトの名無しさん
垢版 |
2021/01/11(月) 23:51:15.24ID:TgqHKx3G
書きにくい/やすい、ってのは環や分岐がcarとcdrとconsだけで書けるって意味ね
これらのアクセサが提供されていない言語、例えはPythonやcではリストのインデックスに対応する参照/ポインタを明示的に取り出して記録し、アドレスを格納する必要がある
またアルゴリズムにかける時に素の型とポインタ型を区別して場合分けする必要まである
そのまま文字列として吐くのも実装しなくていいし(リンク先のインデックス表示が読みやすいとは言わないが)

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


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

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

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

世間で思われているよりは型定義はすると私も思う。
0285デフォルトの名無しさん
垢版 |
2021/01/15(金) 01:43:39.29ID:Hai3vgIl
そういう後付けのボイラープーレトにはCLOSやジェネリックよりコンパイラマクロが便利ね
0287はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/01/16(土) 09:43:26.51ID:uH9KWN6j
Common Lisp でなら deftype とか defclass とかいったものを使うことになるんかな。
私は Scheme しか知らんからよくわからんけど。
0289デフォルトの名無しさん
垢版 |
2021/01/17(日) 11:47:31.37ID:9ajuvsmH
>>288
defgeneric/methodは勢いで書き上げた触りたくないコードに機能追加するにはコード触らなくちゃならない
型の付いていない複雑なconsはどうせdestructuring-bindして振り分けるしかないんだから分けてdefmethodする利点もない
define-compiler-macroなら一切既存のコードに触れる必要は無いからすごく便利だよ
既存のライブラリに手を入れたいけど、直接書き換えるとアップグレードで無かった事にされるから嫌、って時にも活躍する

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

まあ上手くいってないときでもどうにかする方法があるのはありがたい話ではあるけどさ。
0292デフォルトの名無しさん
垢版 |
2021/01/17(日) 12:22:48.91ID:16Ro+9sx
既存のコードには手を入れず振る舞いだけに着目して付け足して行くってスタイルはaspect oriented programmingとか言うんだっけな
まあ盲で付け足してゆく事と同義ではないが
0293デフォルトの名無しさん
垢版 |
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とリストのペアなので意味的にも正しいはず
0294289
垢版 |
2021/01/17(日) 12:38:34.26ID:16Ro+9sx
最後は(a (b c))が正しい、.が余計だった

なんかid変わってたけど289です
0295289
垢版 |
2021/01/17(日) 12:54:42.47ID:16Ro+9sx
真意を掴めてなかった感がある
alist-pとplist-pを定義してる、よく見るし受け入れられてるイディオムだと思う
deftypeしておくといい
すると振り分けをdefmethodに任せる事が出来る
0296デフォルトの名無しさん
垢版 |
2021/01/17(日) 22:27:16.25ID:MtDeBO+C
deftypeしたtypeはclassじゃないからdefmethodできない
コンパイラマクロはプログラムの意味をかえたらいかんし
パッチするなら別定義のファイルを追加でloadすれば上書きされるのでコンパイラマクロする意味0
嘘ノウハウいらないです・・・
0298デフォルトの名無しさん
垢版 |
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まで使ってるからだろうかね
0299デフォルトの名無しさん
垢版 |
2021/01/20(水) 01:59:40.44ID:9Gv1v6nA
ffとかappqとか見慣れない面白関数出てきて面白かった
first/restは単なるエイリアスでなくL-exp(線形リスプ?)における相似物としてちゃんと別に定義されてるとかも

あとpairがpairlisに改称した理由とか気になってる、次は1.5マニュアル読むか
小並感
0300デフォルトの名無しさん
垢版 |
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とか定義しとくと便利ね
0301デフォルトの名無しさん
垢版 |
2021/01/22(金) 08:32:42.17ID:hEWi2BMh
jmcはラムダ教徒だったろうになあ
いくらlispが形式言語処理向けとはいえ、機械的に処理するには置換が面倒過ぎる
0302デフォルトの名無しさん
垢版 |
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を使う限りは循環定義だな
0303デフォルトの名無しさん
垢版 |
2021/01/26(火) 23:06:50.96ID:+x6NTk+g
誤解してた
M式apply[f; args]の引数はシンボルなのでS式のapplyに渡ってくるのはfunction fじゃなくてシンボルfか
グローバルでdefunしたfなら多分呼べるはず、試してないけど
0304デフォルトの名無しさん
垢版 |
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)がハマりそうと思い、実装してみたは良いけどなんに使うんだコレ…
楽しいからいいか
0305デフォルトの名無しさん
垢版 |
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も定義せねばならない

後はまかせた
0306デフォルトの名無しさん
垢版 |
2021/02/12(金) 22:14:51.72ID:rBgVuMm7
わたばさんのところ見て知ったけど
井田昌之先生のHPで
bit 1996-4、5月号、Guy L. Steele Jr.『Scheme 過去◇現在◇未来』(訳 井田昌之)
などの歴史資料PDFが読めるね
0308デフォルトの名無しさん
垢版 |
2021/02/16(火) 17:43:38.86ID:05vP8Ot3
普通のやつらを超えろおじさんのarcヲチするのにちょっとracketしてるけどフレンドリーかつ尖ってるね
どんどん尖ってゆけ
0310デフォルトの名無しさん
垢版 |
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ライクに発展できるのに
おじさんは自分に求められてるのは変態テクニックやインスピレーションだと自覚しろ
0312デフォルトの名無しさん
垢版 |
2021/02/16(火) 21:26:58.99ID:6gVrqubW
>>310
言語が自分自身を書くことが出来る、ということをよりうまくやれれば
ってことでしょ
lisp1.5マニュアルを彼なりにアップデートしたいんだよ
0313デフォルトの名無しさん
垢版 |
2021/02/17(水) 03:29:33.90ID:PFWUQJwx
関数やマウロの実体もリストというのはだいぶん振り切れていると思うがおまえらには目新しくはないのか>bel
0314デフォルトの名無しさん
垢版 |
2021/02/17(水) 03:49:42.83ID:KZUgEKHz
>>313
むしろ昔ながら/手抜きlispがそんなもんでは
lit(eral)はマッカーシーのappqだし、elispは対話モードならちゃんとcarでlambdaが取れる
0316デフォルトの名無しさん
垢版 |
2021/02/17(水) 04:57:15.21ID:KZUgEKHz
補足
elの挙動は完全にバグいので忘れた方がいい、一方で関数実体はリストのサブタイプではないとヒューリスティックに判定されるのでそもそもill-defined
0317デフォルトの名無しさん
垢版 |
2021/02/17(水) 18:52:29.11ID:zk5Pyjxw
アラン・ケイもそれを自分でやってみようとすることが重要だと言ってる
原始関数が変われば何もかもが変わるわけだから
変わった世界が良いのか悪いのか、は自己言及がどれだけよく出来てるかどうか
ということだと思うんだけど
つまり、僕らが使いやすいと感じるかどうかではなく
未来にそれに慣れた人たちがより効率の良い開発が出来るかどうか

で、グレアムは自分なりにBelは良く出来てると思ってるんだろう
オレにはよくわからんがw
0318はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/02/18(木) 00:14:56.95ID:k6/K1ymI
グレアムが現役プログラマだった時代なら実務に全振りしただろうが、今は投資する側の立場だからね。
投資に技術的な知見を活かしてはいるんだろうけど、道楽が出来るんだろう。
0319デフォルトの名無しさん
垢版 |
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)でも実装できるのだから、なおさら
0320デフォルトの名無しさん
垢版 |
2021/02/18(木) 02:07:31.14ID:lD1LwcuS
でもグラハムは尊敬してるよ、著書もエッセイ以外紙版で全部持ってるし、啓蒙家としての実績を差し引いてもトップクラスのハッカーであるのは間違いない
0321デフォルトの名無しさん
垢版 |
2021/02/18(木) 03:15:27.49ID:sRdwF113
>>319
言葉足らずでした
clは基本的にapplyへマクロを渡せないから、or/andに対応したsome/everyが提供されてるわけだけど、展開効率を無視すればread時に関数へすり替えるワークアラウンドで実現できる
そこが売りなんだからもうちょっと仔細を、と
0323デフォルトの名無しさん
垢版 |
2021/02/19(金) 11:35:19.85ID:VprFkjBX
・知能は高い
・こまかい技術用語をちりばめてくるので詳しそうと思わせる
・言語仕様と歴史的経緯と個人研究の区別をつける意識がない
・検証するとトータルとしては話が嘘

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

maclispのpitman/moonual読んでるけどシンボル操作系ユティリティが充実してて楽しい、ちまちまclへ移植
そんなのもうたくさん誰かやってるだろって?絶対にググらないぞ
0332はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/03/17(水) 19:32:10.48ID:sFqg8ROj
>>331
Racket でも (write '()) としたら quote は付かない。
repl が quote を付けてる。
空リストの外部表現は () が正しい。
0336デフォルトの名無しさん
垢版 |
2021/03/18(木) 00:10:13.29ID:3weRgygV
replに代わってrpeplを提唱したい
意外とreadは仕事をしている
clだけどread-from-stringにはいつもお世話になる
0339デフォルトの名無しさん
垢版 |
2021/03/19(金) 14:16:23.58ID:6iPIiOby
Lispへの憧憬
https://xtech.nikkei.com/it/article/COLUMN/20090324/327085/

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

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

あんまり布教頑張るとネガキャンに見えるぞ…
0347デフォルトの名無しさん
垢版 |
2021/03/20(土) 01:03:24.86ID:iR2BedGg
>>338
vimだと階層に合わせて背景塗り分けるプラグインとかあるね

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

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

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

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

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

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

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

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

Common Lisp のことはそれほど知らない (Scheme についてもあまり知らないけど)
ので間違ってたら指摘してね。
0359はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/03/21(日) 02:50:10.72ID:GD6fpf+y
ところで IEEE の Scheme は期限を過ぎても更新せずにそのまま廃版になってたみたいね。
https://standards.ieee.org/standard/1178-1990.html
知らんかった。
元から参照しているやつはあんまりいなかっただろうし
ステータスが Withdrawn になったからといって何か変わるわけでもないけどさ。
0364デフォルトの名無しさん
垢版 |
2021/04/05(月) 21:56:17.84ID:i9PX2oQn
generaはwikipedia読んだ程度だけど随分先進的そうだ
mac/lml/clまぜこぜだそうな
>>360みたいな感じでマウスで弄ったりカーソル置くと引数やdocがポップアップしたり
オンラインヘルプ大好き人間としては興味あり

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

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

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

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

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

ただアプリケーションの拡張用に Guile はリッチすぎる気がする。
ライブラリはホスト環境 (アプリケーション) 側で用意するから
言語処理系の側は単純なほうがありがたいことが多い。
GIMP が TinyScheme をベースにしてることからもわかるように、
拡張用言語はこんくらいの規模でいんだよな。
0381デフォルトの名無しさん
垢版 |
2021/04/10(土) 00:11:58.64ID:pgV1eSpW
>>379
既にハードも気軽にお手製できる時代だったな…
やったことないんでどこまで気軽か知らんが
0386デフォルトの名無しさん
垢版 |
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)))))
0389デフォルトの名無しさん
垢版 |
2021/06/28(月) 10:43:13.88ID:TRKsA7C/
Schemeで

(newline)
(display 1.0)

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

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

(if (< 0 x) …

と if を使いたいです。
0392デフォルトの名無しさん
垢版 |
2021/06/28(月) 11:03:43.42ID:7XtL7Dy7
(if (< 0 x)
((lambda ()
(newline)
(display 1.0))))
0398デフォルトの名無しさん
垢版 |
2021/06/29(火) 13:29:59.66ID:0N5v+m2R
二年前から、どうでもいい駄文が多すぎだな。
0403デフォルトの名無しさん
垢版 |
2021/07/07(水) 05:18:16.92ID:Jk8/Aq6G
stalin って今も最速?
0405デフォルトの名無しさん
垢版 |
2021/07/07(水) 23:24:28.15ID:690XxCxv
プログラムがr4rsで記述できていてシングルスレッドしばりの競争ならいまでも速い可能性はあるだろうな
だれか追試してくれよ
0406デフォルトの名無しさん
垢版 |
2021/07/11(日) 18:50:40.89ID:aa3AN28M
(eq? '(a b c) (list 'a 'b 'c))

を実行すると

#f

となるのはなぜでしょうか?
0407デフォルトの名無しさん
垢版 |
2021/07/11(日) 19:31:30.75ID:19O1KSs3
eq?はメモリ上の実体が同一かどうかを返すので、値を比較したかったらequal?を使えばいいよ
0410デフォルトの名無しさん
垢版 |
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で書けなくもないと思うけど
0413デフォルトの名無しさん
垢版 |
2021/07/13(火) 10:27:19.42ID:A078Hhon
Schemeで、

(+ '3 3)

を評価すると

6

が返ります。

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

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

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

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

そうしてもユーザー視点ではたいして得なことはないんだけど、
アプリケーションに組み込んで拡張用言語として使うとか
だったらアプリケーション側の事情と馴染みやすいかどうかみたいな視点もあるし。
0417デフォルトの名無しさん
垢版 |
2021/07/13(火) 19:58:17.06ID:tejz1RXC
数字はreadした時点でnumberになる
それをquoteしてもnumberのまま
quoteするとはevalされないということだ
もちろんnumberをevalしてもnumberのままだ
0419デフォルトの名無しさん
垢版 |
2021/07/15(木) 04:52:42.37ID:eqEigNI9
逆やね末尾再帰でloopを代替できるからイキって仕様からloopを消したったのがschemeやからユーザーもイキるやで
0420デフォルトの名無しさん
垢版 |
2021/07/15(木) 06:43:25.74ID:S7wkmjz6
末尾呼び出しの最適化が至高の技術のように思っていた時期が僕にもありました
0421はちみつ餃子 ◆8X2XSCHEME
垢版 |
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)
が挙がっている。

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

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

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

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

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

どちらがいいというわけでもなくて全体の匙加減だから難しいよね。
0427デフォルトの名無しさん
垢版 |
2021/07/15(木) 19:48:28.17ID:eqEigNI9
末尾呼出し最適化をいかした書き方というのは確かにあるのだけれど named let はシンプルな loop に特化していて中途半端なのだよなあ
0430デフォルトの名無しさん
垢版 |
2021/07/18(日) 09:56:21.45ID:2Hl3gQcn
書き捨てなら抽象度は低い方がよいのが原則じゃないか?
高いほうがいいのは使い回すケース、例えば数列計算関数に項を計算する関数を渡して特殊化したい場合
carがdoなら、何がしたいのか一目で分かるよね

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

手間とのトレードオフで抽象化層をわざわざ作るのを避けるという意味ならそうだけど、
多様な語彙 (標準ライブラリ、またはそれに近いもの) がすでに揃っている中
から選べるなら状況をより適切に表しているものをピックアップしたほうが
わかりやすいし手間も少ないでしょ。
0432デフォルトの名無しさん
垢版 |
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'

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

忘れてくれ
0435デフォルトの名無しさん
垢版 |
2021/07/18(日) 10:43:00.23ID:iK76XXqo
状態機械の定義にそぐうかは詳しくないので分からないけど、表で管理するのは見やすそう
でもデータ構造中に保持する限り反復に翻訳される可能性は皆無だろうな
0436デフォルトの名無しさん
垢版 |
2021/07/18(日) 22:30:22.92ID:wZnHH9/v
do構文は何がどこかすぐ忘れる
named letはうる覚えでもなんとかなる
ただのletの亜種だから断然読みやすい
0437デフォルトの名無しさん
垢版 |
2021/07/18(日) 22:33:40.35ID:3JZJIWfz
×うる覚え
○うろ覚え
0438デフォルトの名無しさん
垢版 |
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))
     )
  )
)
0440デフォルトの名無しさん
垢版 |
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 を一緒に使うとスッキリ書けそうなのですが…
0441デフォルトの名無しさん
垢版 |
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))))))
0443デフォルトの名無しさん
垢版 |
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)))))
0444デフォルトの名無しさん
垢版 |
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)))))
0445デフォルトの名無しさん
垢版 |
2021/07/20(火) 12:42:50.05ID:DJlNseKm
>>443
なるほどアリティ0の無名関数として束縛してやれば定義時に評価されずに済むんですね
評価したいときはリストにすれば評価されると
めちゃくちゃ為になりました
ありがとうございます
0446デフォルトの名無しさん
垢版 |
2021/07/20(火) 13:00:13.21ID:DJlNseKm
>>444
やはり自然なのはifとlet使った書き方なんですかね
そもそも明示的に遅延評価を表すシンタックス形式(delay)があるんですね勉強になります
ありがとうございました
0449はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/07/20(火) 17:33:51.23ID:BjsPOMc7
元になる数式をなるべく形式を変えずに書きたいみたいな要求はあるんじゃないの?
プログラマ的視点で見れば >>440 の形に不自然さは感じない (むしろ比較的自然だと思う) けど、
理論家がコードに書き起こすときにはコードを変形させるよりは
遅延を明示したほうがすっきりと感じることだってあるだろう。

そこらへんは何が正しいとは言えないけど、
現時点で Scheme を学習中の人みたいなので色々な方法に触れておけば
どれかは役にたつこともあるかもね。
0450デフォルトの名無しさん
垢版 |
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))))
0453はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/07/29(木) 14:35:36.73ID:lV+mYu1n
簡単な場合をよく考えられないなら応用的状況ではもっと出来ないよ。
応用ができるようになってからなら枝葉は後回しにすべきだけど。
(いわゆる「早すぎる最適化は諸悪の根源」ってやつ。)

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

racket死んでる?
0456デフォルトの名無しさん
垢版 |
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
0457デフォルトの名無しさん
垢版 |
2021/09/04(土) 12:17:58.77ID:7RPQ9cbD
hy一時期話題になったけど今は誰も使ってない
0458デフォルトの名無しさん
垢版 |
2021/09/04(土) 13:00:17.62ID:P/r0boNY
春頃にLispマシンの話題になっているが、
TAOのコードは結局Public Domainに出来ないのかな
https://www.nue.org/nue/tao/celis/index.html
0459デフォルトの名無しさん
垢版 |
2021/09/04(土) 17:09:55.40ID:jSSzYM7r
だいぶん昔にjaistでtaoのイベントがあったが同様の質問が出たが権利問題が解決できないらしく関係者にさえ配布できない状況らしい
lispの勉強会で遭遇した人の話なので風の噂レベルでスマンがガッカリしたのを思い出した.エミュレーションもデモしたらしい
0463デフォルトの名無しさん
垢版 |
2021/09/10(金) 16:25:34.83ID:vbZ+sZ5t
政治闘争で頻繁に互換性ないアップデートを繰り返して死んだ
hy

次はclojureで同じ政治闘争が始まりそうという噂が
0464はちみつ餃子 ◆8X2XSCHEME
垢版 |
2021/09/10(金) 17:54:13.80ID:53pAHbe3
hy くらいの新興処理系でどんどん変更が入るのは普通のことだと思うが。
つってももう登場から 8 年なのか。
0466デフォルトの名無しさん
垢版 |
2021/09/11(土) 20:38:39.26ID:Suq8GRsb
スレに書き込む前に妄想と現実の区別がついていることをよく確認しましょう
0468デフォルトの名無しさん
垢版 |
2021/09/11(土) 23:37:54.18ID:Suq8GRsb
いやそれは移植元にテストケースがあるからテストが完走すればだいじょぶっしょ
しかしそもそもschemeにもpcreライブラリは沢山あるだろうけど
0469デフォルトの名無しさん
垢版 |
2021/09/15(水) 04:41:28.63ID:mYoOhxQF
妄想も噂も似たような言い換えみたいなものなのに
何でそんな強い口調で言い換えを強要してくるんだ
0470デフォルトの名無しさん
垢版 |
2021/09/15(水) 04:43:02.67ID:mYoOhxQF
何でそんな強い口調で言い換えを強要してくるんだ
0472デフォルトの名無しさん
垢版 |
2021/09/16(木) 02:34:55.53ID:PaKnZlMf
465から別の話題になってて468まででひとつの会話の流れ.
つまりお前が勝手に被弾してるわけよ‥
0474デフォルトの名無しさん
垢版 |
2021/10/09(土) 23:58:58.03ID:6Ftx/1cj
sbcl2.1.9 windows版(amd64)入れてみたけど今まで起動直後に表示されてたWARNING(win版はスレッドまわりが壊れやすいけどそんなの対応してらんない!みたいなやつ)が表示されなくなって地味にうれしい
0475デフォルトの名無しさん
垢版 |
2021/10/10(日) 10:54:30.08ID:Td68Zwht
スレッド周りはpthreadのエミュレーションを自前で実装してたのを、直接Win32のAPIを呼ぶようになった
コードが一気にシンプルになったし、その時にバグの修正も行ったのだろう
0479デフォルトの名無しさん
垢版 |
2021/11/19(金) 06:28:29.94ID:xMhA1wC0
roswell環境で.roswell/local-projects/が認識されないんだけど原因分かる人いない?
0485デフォルトの名無しさん
垢版 |
2021/12/15(水) 14:51:19.13ID:gD/y5IR+
Lispworks 8でた!
0489デフォルトの名無しさん
垢版 |
2021/12/27(月) 23:09:52.29ID:W+QyKxlb
週2日出社、週2日在宅の週4日勤務が最高の働き方だと提唱したい

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

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

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

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

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

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

【驚愕】5人に1人は本業よりも副業収入の方が多いことが判明w 本業よりも稼げる副業とはなんなのか??
0493_
垢版 |
2022/01/04(火) 06:23:02.11ID:rzEME/gD
>>491
Gauche 0.9.11-p1 リリース
Windows での問題修正のみみたい。

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

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

まだまだあんどきゅめんてっどなelモード探索も楽しい
0507デフォルトの名無しさん
垢版 |
2022/01/16(日) 22:57:05.20ID:hpGcG9O9
あくまで個人的感想だが、そういう風に勉強のために勉強するみたいなのは結局は上手くいかんのじゃないかと思う。
0510デフォルトの名無しさん
垢版 |
2022/01/17(月) 10:07:54.20ID:jU2WrI4n
成果物として作るんでなくてもちょっとした前処理程度のことをするときに使えばいいよ。
使い捨てるものを何で作ろうが文句は言わせん。
プライベートで使うんでもいいしな。
0512デフォルトの名無しさん
垢版 |
2022/01/17(月) 10:32:49.23ID:jU2WrI4n
俺は Scheme が一番慣れた言語だから……

こういうのがニワトリタマゴってやつかね。
慣れるために使いたいのに慣れてないから使わないってのでは
何も進まんでないか。
0516デフォルトの名無しさん
垢版 |
2022/01/19(水) 12:17:51.13ID:YBAvI2MD
なにか作ろうと思うと結局cffiでcライブラリを呼び出して使ってるので、糊みたいな使い方しかしてないなぁ
0518デフォルトの名無しさん
垢版 |
2022/01/20(木) 19:02:36.89ID:GKs3JF21
scheme修行読んだら処理系書けるかな?
ちょっと読んでちっともわからなくて挫折したけど
0521_
垢版 |
2022/01/24(月) 12:23:44.52ID:J5Esvhno
>>520
斉藤由貴バージョンの
夢の中へ
が脳内再生された。
0522デフォルトの名無しさん
垢版 |
2022/01/24(月) 20:39:39.47ID:xI9wwXQn
ちゃんとエンドユーザー様までデプロイするのはめんどいのは確か

グラフィックス叩いたりするライブラリに依存するのはやむ無しだけど、純lispなライブラリはライセンスの許す限りスニペットに切り出して同梱してる
0523デフォルトの名無しさん
垢版 |
2022/01/24(月) 21:07:29.09ID:e/3681Ma
継続が凄いって話は、かれこれ10年くらい聞いてたんだけど、結局は限定継続で十分だよね、
限定継続もあんまり応用ないね、って感じに落ち着いたのかな?
0524デフォルトの名無しさん
垢版 |
2022/01/25(火) 11:38:40.17ID:GfuWsBWm
継続が凄いってなんだよ
継続ベースのlisp実装をschemeと言うのだから、そういう意味では凄い応用例だよ
0525デフォルトの名無しさん
垢版 |
2022/01/25(火) 12:33:26.79ID:Do1EUgQ3
非限定継続ってjmcのambとかが該当するのか?
動作としてはバックトラックするだけだから特に継続概念が必須というわけではないけど、なんか楽しい
0526デフォルトの名無しさん
垢版 |
2022/01/28(金) 01:56:11.96ID:hT9TavA0
形式定義できるのが継続の便利なところなんだよ。
バックトラックするだけとはいうが「バックトラックってなに?」というのを突き詰めていったときに「継続をこんなふうに受け渡してるでよ」と言えるの。
0528デフォルトの名無しさん
垢版 |
2022/01/28(金) 23:54:45.12ID:hT9TavA0
原理的にはバックトラックと同じ速さ。
それが遅いというのならバックトラックでも遅い。
バックトラックより速い方法があってチューニングの手間をかけていいならそうすりゃいい。
0529デフォルトの名無しさん
垢版 |
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を移植しました…
0531デフォルトの名無しさん
垢版 |
2022/02/09(水) 12:36:09.65ID:3KsDo8lO
restに'symb突っ込んで泥臭く拾ってます
srfiにちゃんとした機構あった気がするけど、小道具レベルで依存はしたくないので
0532はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/02/09(水) 23:48:43.20ID:9Cj+df9g
ところで scm を使うのはなにか理由があるの?
単なる好みならそれはそれでいいんだけど
このスレで言及される Scheme 処理系は Gauche, Racket, Chicken あたりが多いので
scm 使いは珍しいなーと思った。
0533デフォルトの名無しさん
垢版 |
2022/02/10(木) 00:36:07.94ID:d8JzH9qO
guile使ってるけど#:で自己評価シンボルになるな
よく見かける:の方はデフォルトで有効じゃなくて、オプション切り替えだったり
0542でーちゃんじゃないけど
垢版 |
2022/06/25(土) 21:10:35.30ID:AGenfzJY
github.com/Soldier-B/ns.js/blob/master/ns.js#L3
0543デフォルトの名無しさん
垢版 |
2022/06/26(日) 13:26:40.20ID:DTfGvOZF
さとばん
0544デフォルトの名無しさん
垢版 |
2022/11/07(月) 12:52:23.10ID:D9DaYQB4
svigiはなんて読めばいいの
0545デフォルトの名無しさん
垢版 |
2022/11/07(月) 12:52:44.37ID:D9DaYQB4
木曽路的な
0546はちみつ餃子 ◆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
0547デフォルトの名無しさん
垢版 |
2022/11/07(月) 16:54:40.26ID:D9DaYQB4
>>546
ありがとう
音素と発音記号は手堅いね
0548デフォルトの名無しさん
垢版 |
2022/11/07(月) 20:41:51.67ID:kjCGP1Rc
>>546
ここでアイスランド語が言及されるとは驚きました、アイスランド語は実に濃ゆい言語ですね
教科書(Johns Hopkins) を買ったけれども、当然 1 ワードも読めませんでした
0550デフォルトの名無しさん
垢版 |
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)
って理解でいいの?
0551はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/01/08(日) 17:21:31.97ID:/n9SAwLy
おおよそ似た雰囲気では書けたりするのかもしれないけど
単純に対応してるわけじゃなかったりもするからいいかどうかは状況によるんじゃないの。
0552デフォルトの名無しさん
垢版 |
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のこれバグ?
0553デフォルトの名無しさん
垢版 |
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
0554デフォルトの名無しさん
垢版 |
2023/01/09(月) 16:15:24.76ID:2yNmR2Eh
    |  彡⌒ミ
   \ (´・ω・`)名前のシャドウ化辺りって自分で処理系実装した子はわかると思うけどハゲる要因だから絶対関わらない方がいいと思う
     (|   |)::::
      (γ /:::::::
       し \:::
0555デフォルトの名無しさん
垢版 |
2023/01/09(月) 16:36:52.10ID:0CyucYY1
eclは有名だけど、embeddableの名前通りの用途で1MBちょいな処理系だから、そういうものと割り切って使うべき

funcallが冗長ならletのbodyにfuncallをconsするだけのmy-fletを作ればいいじゃない
(さらなる災禍を招きそう)
0557デフォルトの名無しさん
垢版 |
2023/01/10(火) 02:33:32.35ID:/i8qCr3o
>>553
特定の名前の解決を決め打つ言語は多いし、そういうポリシーもありだと思う
普通でないのはcondition(warning)を挙げないところ

決め打つ名前(locked package?)が分かってる限りは、flet/labelsのレキシカル束縛リストから拾った名前がbody内の呼び出しformのcarに存在するか、ランタイムコストの無い自明な静的解析でconditionを挙げられるはず
0558デフォルトの名無しさん
垢版 |
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でテストはしたけど、スマホから手打ちなので変だったらごめん
0559はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/01/10(火) 13:31:12.96ID:TxpPtfKm
>>557
スクリプト言語 (処理系) 的な想定だと実行開始時にテキストの解釈から毎回やるので
静的解析もランタイムの一部みたいな感じになる。
この場合に限って言えばどちらにせよ名前のルックアップはやるのだからそのときにわかるだろうとは思うけど
静的解析を頑張らないという方針はあり得るんじゃないの。
0560はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/01/11(水) 00:38:29.47ID:s0T2WgwN
Gauche で検出されないエラーで (let ((0 1)) 0) みたいなのがあって、
実際にはオプティマイザが消去してしまうんだそうな。

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

まあそれぞれに事情があるので原理的に可能だからといってそうすべきだとも言えない気がする。
0562デフォルトの名無しさん
垢版 |
2023/01/11(水) 01:29:07.80ID:/IOcm4EW
そういう手では絶対書かないだろう変なコードも、マクロ書いてるとまれによく発生するから困る
0563デフォルトの名無しさん
垢版 |
2023/01/11(水) 01:59:04.27ID:/IOcm4EW
カウンタ変数を捕捉更新しようとして、うっかり評価してしまったケースとか
0565デフォルトの名無しさん
垢版 |
2023/01/11(水) 02:34:55.34ID:LWIYKuEk
letの時点でオプティマイザに通してんのかな
let系はlambdaまで落として((lambda(i) i) (+ i 1))とすれば間違えようがないと思うのだが
0566デフォルトの名無しさん
垢版 |
2023/01/11(水) 02:44:32.93ID:/IOcm4EW
エスパー大会か?
(let ((i (+ i 1)))
(another-macro i))

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

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

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

なんて文句を言いつつ、schemeでもついslibのdefmacroに手が伸びてしまうのだが
0569デフォルトの名無しさん
垢版 |
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))だけを見て決められない
0570デフォルトの名無しさん
垢版 |
2023/01/11(水) 06:21:34.50ID:/IOcm4EW
一応値については正しいというだけで、もしbodyに(exit)や大域脱出が入ってても無視するのか?という問題はある

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

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

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

eclやgaucheが有名実装では最もアグレッシブな感じなのかな?
(declaim (optimize (speed 0) debug safety)
が外せない俺には怖くて触れないよ
0575はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/01/14(土) 01:01:49.57ID:9ctkhBjT
>>572
> 有名実装では最もアグレッシブ

そんなことはないんじゃないかな。。
実行前の処理に時間をかけない (かけても総合的な性能向上にならない) という
判断でエラーチェックに消極的だけど最適化にも消極的だから。
0576本田
垢版 |
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.
0580はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/01/30(月) 00:59:07.34ID:kRDQpz8S
そのリンクがどうしたっていうんだ?
何か思うところがあるなら話題に挙げるのはかまわんが
ただリンクを置いて去るのはやめて欲しいな。

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

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

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

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

ものごとの良し悪しにはトレードオフがある。
どちらの問題もコードが小規模ならどうということはないので利点のほうが上回っていたのかもしれないが、
時代を経て巨大になりすぎた。 疎結合を意識した構成にしないと手に負えない。
0585デフォルトの名無しさん
垢版 |
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…)が外、つまり同じレベルのフォームに影響する場合があるのが気持ち悪いから、明示的な後者を好む
0586デフォルトの名無しさん
垢版 |
2023/01/31(火) 10:56:14.75ID:tSjB9eWW
レキシカルな情報を取り込んでしまう(暗黙にクロージャを作る)クロージャにはテキスト表現が無いから、ダンプが出来ないのは致命的な欠点
よってダイナミックスコープ一択になる
pwshだと gci function:
bashだとdeclare -f (多分、よく知らん)
でダンプ、出力されるテキストを読み直せば(大体)環境が復元できる

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

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

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

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

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

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

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

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

それより、Type Script 普通に良い言語だぞ、
あれ実質的に型付きのlispだわ
0616デフォルトの名無しさん
垢版 |
2023/08/20(日) 21:24:26.60ID:CVtYBdI9
>>615
設計者の「そうしたかった」という発言が拡大解釈されたもので、
インタビューをちゃんと読むと「そうできなかった」ということも言ってる。
0621デフォルトの名無しさん
垢版 |
2023/10/06(金) 23:46:32.54ID:WmRjQTiM
Gaucheの目的が何なのか知らんけど
それが達成されるまで1.0にならんのだろうな
0624デフォルトの名無しさん
垢版 |
2023/10/07(土) 23:47:40.08ID:c4CFtcBt
要望ね。schemeは処理系としては構造が簡単だから適当に作ってもそこそこ良い具合に出来上がるだろうが、
問題はその後で、処理系の方向性を決める必要がある。処理系作るってことは目標が既に設定されている場合もあるが、
他人に使って欲しいのであるなら例えばpythonライブラリ流用できるとか.NETでGUIアプリ簡単に作れますとかwebだとか生成AIで何かいけるとかそんなのだね
俺がGaucheの名前を知りながら長年ほぼ触ったことないのはその辺りが原因だよ
0625はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/10/08(日) 01:14:49.29ID:tCGlxsdd
Gauche の目標設定はトップに書かれている。
http://practical-scheme.net/gauche/index-j.html
要するにスクリプト言語として常識的に必用とされる機能を盛り込んで日常業務に使える Scheme 処理系を目指すってことだ。
英語の「日常会話程度」が専門的な会話より難易度が高いなどといわれることもあるように「普通に使える」ってのは何か特徴的な売り文句があるより大変だったりもする。

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

個人的には日本語テキストを不自由なく扱えるのがありがたいね。開発が始まったきっかけも stk で日本語を扱えなかったかららしいし、そこらへんは力が入ってると思う。
0626デフォルトの名無しさん
垢版 |
2023/10/08(日) 12:59:35.92ID:SlOLtELZ
schemeを好きで使ってるやつって俺含めて既に自分の処理系は持ってると思うのだが、
自分の欲しい機能を満たせばそれ以上求めないし、その成果を踏み台に次のステップへ階段を上がるだろう
階段を上った末、他人に使わせる場面に出くわす事は良くある事で、その時それはschemeではなくなってた方が良いかもしれない
新人「えーなにこの括弧だらけ…今のトレンド?か、かっこいいですねワラワラワラ(辞めよ…)」
業務で使ったら他人を辞めさせる能力については万能になれるか
0629はちみつ餃子 ◆8X2XSCHEME
垢版 |
2023/10/13(金) 15:24:17.01ID:ZG3aaQwo
expecting ってのがどのくらいの確信なのか感覚的にわからないのだけど
一応の既定路線くらいには考えていいんかな?
0630デフォルトの名無しさん
垢版 |
2023/10/13(金) 19:25:12.51ID:79LHTXDX
しらんがな
どうせ本人もここ見てるだろうが質問あるなら直接本人に聞けよ
答え難いだろうが
0633デフォルトの名無しさん
垢版 |
2024/02/12(月) 11:47:40.17ID:QDPVm8Ph
GuileとGaucheって、VMインタープリタ、Cプログラムとの連携・拡張、オブジェクト指向あり、もともとR5RS。
フリーソフトウエアやライセンスという点以外は、言語・実装の方向性としては似ているように思いました。
Gaucheが、BSDライセンス版Guileのような感じがしたのですが、みなさんどう思いますか?
0638デフォルトの名無しさん
垢版 |
2024/04/08(月) 00:42:38.05ID:skM/lEty
【検証】40時間Lispを勉強したら信者になれる?【Lisp1】
https://youtu.be/V2GM9lR-Di0
Lispの勉強をしたら『葬送のフリーレン』と同じカタルシスが待っていた。【Lisp2】
https://youtu.be/JvsSt_ksKiw
0639デフォルトの名無しさん
垢版 |
2024/04/08(月) 00:43:02.37ID:skM/lEty
面白かったのでw
0640デフォルトの名無しさん
垢版 |
2024/04/08(月) 02:59:37.49ID:7blvdNRP
神の言語からschemeを経て生まれたjavascriptは人間にとってはちょうどいいバランスだったわけだな
0642デフォルトの名無しさん
垢版 |
2024/04/11(木) 10:36:33.17ID:8Rm0X/WO
それの前にポールグレアムいじり回が3回あって
それで「Lispがそんなにすごいなら」ってことで40時間勉強したというわけだねw
0644デフォルトの名無しさん
垢版 |
2024/04/12(金) 00:31:32.72ID:H7gFN+op
MIT卒でLispで儲けたあと、ベンチャーキャピタルになった元本職かな
0645デフォルトの名無しさん
垢版 |
2024/04/12(金) 11:49:20.24ID:nR+PqPBt
エッセイストだと思うけどマとしては通販サイトとか作ってたんだっけ
ただ小さな関数やマクロutilが集まったonlisp.lispは準標準関数的な感じで愛用してます
0646デフォルトの名無しさん
垢版 |
2024/04/12(金) 12:38:02.80ID:wZ+y5Ko5
そもそもハッカーであるかにガンガンプロダクト作る的な意味での本職マか否かは関係ないと思うのです
cl&schemeの根幹や文書化のみならずC, Java, Fortran委員まで勤めた皆のSteele先生だって何作ったか寡聞にして知らんくらいだし
最近ではC,AWK,Goのバイブル+作法本で鳴らしたKernighan御大も隠居してエッセイストやってる

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

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

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

これがハッカーの必要条件だと思う(>>646の十分条件に対して)
0650デフォルトの名無しさん
垢版 |
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にも通ずる普遍的な知恵袋だよ

スレチなのでそろそろこの辺で
0652645
垢版 |
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かよってくらいヤバいのが欠点
0653デフォルトの名無しさん
垢版 |
2024/04/12(金) 23:54:00.88ID:/A9qFmr2
文章下手糞すぎて読む気も起きない
これって神の言語に慣れすぎて言語障害になった例かよってくらいヤバいのが>>652の欠点
0654デフォルトの名無しさん
垢版 |
2024/04/13(土) 18:14:03.11ID:JilIuOKd
ストールマンがガンになったらしい
長髪も髭も落としてしまって別人みたいになってる
0656デフォルトの名無しさん
垢版 |
2024/04/13(土) 19:21:54.91ID:JilIuOKd
何が?
0659デフォルトの名無しさん
垢版 |
2024/04/14(日) 12:56:54.81ID:JRHy27WB
ゆる学徒ハウス別館
現役Lisperが語る! Lispはオーパーツで人類には早すぎた【電脳史学】
https://youtu.be/tLZ8J9tGVEs
0660デフォルトの名無しさん
垢版 |
2024/04/14(日) 13:37:09.89ID:JRHy27WB
ゆるコンピュータ科学ラジオ
大人の勉強は「夢の中」が主戦場。寝ながらマクロを書くといい【Lisp雑談】
https://youtu.be/Lbt_CCQKWFA
0661デフォルトの名無しさん
垢版 |
2024/04/14(日) 14:04:02.38ID:JRHy27WB
コーシー噴いたw
0662デフォルトの名無しさん
垢版 |
2024/04/14(日) 15:00:30.77ID:XsKNoxHh
>>660は娯楽コンテンツとしては面白い

でもLispは良いとして集合論を勉強しようとしてるのにはやれやれだな
Haskellで圏論とかAIで代数幾何に夢見たりするのと似てる
結局広く浅くでウンチク欲を満たすに留めて、実践から逃げたいのだろうな
実践は壁だらけだから
0663デフォルトの名無しさん
垢版 |
2024/04/14(日) 17:27:06.49ID:ezgj98lZ
Lispとは別に2人で集合論やって
Lispは一冊何か挟んでからPAIP読んでほしい
番組のネタ的に
0664デフォルトの名無しさん
垢版 |
2024/04/14(日) 21:34:02.26ID:p4Nf2jzu
その人らはLispに大した拘りはないし
今更検索でまともに引っかからない古代のPAIPなんてやる意味を見出せないだろ
AI関連ならTranslatorからChatGPTブレイクに至るまででも話題にしたらいい
0665デフォルトの名無しさん
垢版 |
2024/04/14(日) 21:56:43.27ID:JRHy27WB
そうかなあ、論理プログラミングとか自然言語解析とか右側の人大興奮じゃないの
0666デフォルトの名無しさん
垢版 |
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に載ってるやつ
本を薄くするために徹底的に再帰で書かれてるからまあ性能は察せ()
再帰で分かりやすいコードだから叩き台にもオススメ
0667デフォルトの名無しさん
垢版 |
2024/04/15(月) 02:00:08.14ID:YG3lrvG/
あれはsymbolic pattern matchなのでregexと比べるのは良い例出なかったごめん
まあexplodeしてしまえばもうキャラクタベースだ
確かGrahamの>>652にあるシンボルをバラすやつ、まあ3行くらいで書ける小品だけど

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

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

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

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

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

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

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

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

この部分、Fortranで配列多用したらCより数倍速い的な意見なのかな?
1ミリも分からんので、詳細求む
0676デフォルトの名無しさん
垢版 |
2024/04/15(月) 11:39:03.37ID:L/ePcET8
中間言語が同じならコーディングの瑕疵は人間工学的な問題
Cは宣言が貧弱でin/out、純粋関数、エイリアスの有無は推論頼りだから失敗すれば死ぬ
ただ最近はrestrict宣言付けて回るなら重なるか推論不能な配列のエイリアス有無も指定可、難解だけど
一方で参照渡しのFortranはtaraiベンチで推論失敗すればデリファレンス地獄で死ぬわけだけど、これ解消する宣言あったっけ?

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

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

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

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

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

念の為
0697デフォルトの名無しさん
垢版 |
2024/04/18(木) 16:12:02.72ID:L09lN/Y8
>>670
性能は知らんけど丁度>>696にニューラルネットのコードがあったよ、とコメントしておく
NEURAL NETWORKS.
PERCEPTR.CL Perceptron.
BACKPROP.CL Backpropagating Neural Net.

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

他言語も得意で暇な人ベンチしてくれないかな()
0700デフォルトの名無しさん
垢版 |
2024/04/29(月) 00:40:58.99ID:kyEsQUSW
Lisp系の本あるある
Amazonで検索してレビューを見ると、kaizenのしょうもないレビューが付いている
0701デフォルトの名無しさん
垢版 |
2024/04/29(月) 03:32:03.71ID:xgq67JZI
(())なーんだ
0702デフォルトの名無しさん
垢版 |
2024/04/29(月) 20:53:10.33ID:gOSsFAyk
閲覧者にとってどうでもよすぎることしか書かないゴミレビュアーなんだよなkaizen
「読んでませんが」「一行もかけてませんが」「どういうものかわかりませんが」
けれど、「昔のAI業界知ってます」というね
片っ端から違反報告したろか
レスを投稿する


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