Lisp Scheme Part41at TECH
Lisp Scheme Part41 - 暇つぶし2ch2:デフォルトの名無しさん
18/07/15 03:57:54.29 mQtsqebE.net


3:デフォルトの名無しさん
18/07/15 04:45:43.53 +G2qeWeL.net
(Lisp 笑)

4:デフォルトの名無しさん
18/07/17 22:34:02.03 6cKB2nCo.net
>>1

5:はちみつ餃子
18/07/29 18:08:39.36 bQEgGaK2.net
Racket の 7.0 が出た。
コアを chez に置き換える方向で進んでるんだね。

6:
18/09/08 00:00:46.97 t7GfMYxV.net
a little schemer/「scheme 手習い」 URLリンク(www.amazon.co.jp)
を読んでいます(ずいぶんと時間がかかっています)が、次のプログラムがさっぱり理解できなくて困っています
第5章「*すごい* 星がいっぱいだ」
この章の最初の方までは困難を伴いながらも、なんとか理解できました、この章でのこんな感じのコードを、仕様をみて独力で書きおこすことはできています URLリンク(ideone.com)
ところが、p.92 から
>Q: eqlist? はなんですか。
>A: 2つのリストが等しいかどうかを決める関数です。…①
>Q: eqlist? は、その引数についていくつ質問をしますか。
>A: 9つです。…②
>Q: なぜ 9 つの質問があるか説明できますか。
>A: 自分の言葉で説明すると次のようになります。
>「各引数は次のいずれかです。・空リスト・アトムがリストに cons されたもの・リストが別のリストに cons されたもの
>たとえば、最初の引数が空になるのと同時に、2番目の引数は、空リストか、car の位置に1つのアトムまたはリストを持っています。…③
>Q: eqan? を使って eqlist? を書きましょう
>A: URLリンク(ideone.com)
この解答例がさっぱりです、実は②からよくわかっていません
コードのコメントは私がつけたのですが、最後の方は混乱してしまって…何がわからないかわからない状況です。
何か理解するための手がかり足がかりヒントはないでしょうか?

7:SCHEME餃子
18/09/08 01:10:14.26 VmsJpbI+.net
>>6
私はその本を持ってないのでそのあたりの問題を取り上げたブログ記事を見ながら説明しようかと思ったが、
その Q&A の通りとしか言いようがないんで、何がわからないのかよくわからない。 困ったな。
リストの先頭を見た時にあり得るパターンが 3 通りで、
l1 が 3 通りと l2 が 3 通りなら組合せは 9 通り。
9 通りのパターンは 3 種類に分類できて、
・ l1 と l2 の先頭が空リストなら真
・ l1 と l2 の先頭が一致すれば次の要素に対して再帰的に同じ処理をする
・ l1 と l2 の先頭が一致しないなら偽
となる。
実際のコードにするにあたって、空リストに car, cdr 手続きは適用できないんで、チェックの順番を気にするくらいかな。

8:デフォルトの名無しさん
18/09/08 05:07:37.63 GHaullf6.net
引数が2つあり、それぞれは3通りの場合があるわけだから
引数の組み合わせとしては3×3=9通りの場合がある。
※引数はリスト(空リストを含む)と仮定していいようだ。
愚直にこの9通りの場合分けを展開するとこの表↓のようになるので、それをそのままコードにしたのがその解答例。
A B 等しい?
() () #t
() (アトム . リスト) #f
() (リスト . リスト) #f
(アトム . リスト) () #f
(アトム . リスト) (アトム . リスト) (and アトム同士が等しい リスト同士が等しい)
(アトム . リスト) (リスト . リスト) #f
(リスト . リスト) () #f
(リスト . リスト) (アトム . リスト) #f
(リスト . リスト) (リスト . リスト) (and carのリスト同士が等しい cdrのリスト同士が等しい)

9:デフォルトの名無しさん
18/10/07 02:51:53.80 n2yn9/Ec.net
他のソフトウェアに組み込むスクリプト環境でTinySchemeを使おうかと思っているんですが
スクリプトの中からファイルIO関係の機能は使えないようにしたいです。
この場合、走らせるスクリプトの前に、open-input-file等のIO関係の関数を無害な関数で再定義する部分をくっつけてしまえばOKでしょうか?

10:SCHEME餃子
18/10/07 14:31:36.10 77445U4A.net
>>9
なんらかの方法で元の定義にアクセスできたら脆弱性になっちゃうから、
要らないなら削除する方が確実だと思う。
どのくらい確実にするかってのは程度問題だけど
削除する分にはそんなに手間でもないし。

11:デフォルトの名無しさん
18/10/07 16:22:54.47 n2yn9/Ec.net
>>10
ありがとうございます。
削除というのは、その機能をSchemeのソースから削除して再コンパイルするということですか?

12:SCHEME餃子
18/10/07 19:43:40.12 77445U4A.net
>>11
そう。

13:デフォルトの名無しさん
18/10/08 11:15:35.46 s+P1p206.net
>>12
ありがとうございます、やってみます!

14:デフォルトの名無しさん
18/10/09 08:07:54.35 dwdUWAaf.net
依存型についてのテキストが出てるよ。
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言語 ではλ関数とπ関数が同じように導入されているので相互に勉強できるのがいい。

15:デフォルトの名無しさん
18/10/09 15:29:09.16 dwdUWAaf.net
π算法
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らによって考案された、並行計算(π算法はλ算法の並行版)を表すモデルであり、プロセス計算の一種。

16:デフォルトの名無しさん
18/10/11 04:45:55.72 kRD0TmZA.net
A Little Taste of Types - Code Mesh 2017 - David Christiansen
URLリンク(www.youtube.com)
A Little Taste of Dependent Types 2018 - David Christiansen
URLリンク(www.youtube.com)

17:デフォルトの名無しさん
18/10/16 23:34:54.71 D0vhWqBd.net
Gaucheのリファレンスマニュアル日本語版pdfはないのでしょうか?

18:SCHEME餃子
18/10/17 01:03:06.73 BPtTatWV.net
>>17
Gauche のソースツリーの doc ディレクトリで make pdf コマンドを実行すれば、
pdf 形式のドキュメントのビルドプロセスが走ることになってるよ。
ただ、 TeX を使うみたいなんで、 TeX を導入するのが面倒ってことはあるかも。
公式からは PDF 形式の日本語マニュアルは出してないっぽいね。

19:17
18/10/17 21:27:28.91 MYn8m29E.net
ありがとうございます。挑戦してみます。

20:デフォルトの名無しさん
18/11/19 21:32:10.84 Ebw/7CYM.net
はちみつ餃子しかいないスレになってしまった

21:デフォルトの名無しさん
18/11/19 22:07:56.77 FLKvqXWs.net
よく見ろ別人だぞ。
まさか同一人物なわけがあるまい。

22:はちみつ餃子
18/11/19 22:58:27.29 EqyITMeu.net
話題がなさすぎるので近頃は C++ スレばかりにいるんだけど、
なんか面白い話題があればどんどん書いてよ。

23:デフォルトの名無しさん
18/11/20 01:03:10.36 Bz9DRyU5.net
そんなとこにいたら頭がガベージまみれになるぞ

24:デフォルトの名無しさん
18/11/22 08:37:23.04 idUjP7lK.net
東方算法騎士団ってどうやって入るの

25:デフォルトの名無しさん
18/11/22 11:14:07.32 PNeid+Qy.net
Jupyter with Schemeってどう?

26:デフォルトの名無しさん
18/11/25 11:38:51.25 yUG3gEBB.net
Try Jupyter で試してみ

27:はちみつ餃子
18/12/21 18:19:35.67 2lFdE5qB.net
Gauche 0.9.7 がリリースされたよ~
URLリンク(practical-scheme.net)

28:デフォルトの名無しさん
19/01/08 17:40:17.47 n4V6aMpj.net
WindowsでMinGWがインストールされておらずMSVCだけある状態で
C言語のhelloworldプログラムでgauche.hをインクルードすると
gauche.h内の#include <sys/time.h>の部分でエラーになります。
C言語からGaucheを利用する場合はMinGWがインストールされていることが前提という解釈であっているでしょうか?

29:はちみつ餃子
19/01/08 21:15:36.70 YHlgtmk9.net
>>28
はい。
Gauche をビルドするためには MinGW というか (MinGW を含めた開発環境であるところの) MSYS2 を要求しています。
URLリンク(github.com)
少し古いバージョンは (MSYS2 ではなく) MSYS を要求していました。
gauche.h もその開発環境に依存しているので、 gauche.h を include した C のコードは MSVC ではコンパイルを通りません。
つまり、 Gauche の拡張モジュールや Gauche を呼び出すプログラムを C で書こうとするなら、
Windows では MSYS2 を使う方法しか想定されていません。
ただ、過去に「VC++用ポート」を試みた記事が WiLiKi に残っていますし、
ある程度は動いていたようですので、手間を書ければ全く不可能なことというわけでもなさそうです。
URLリンク(practical-scheme.net)
Gauche の実態は単なる DLL ですから、Gauche 自体を MSVC でコンパイルするのは難しくても
Gauche を呼び出すプログラムを MSVC で作る分には頑張ればなんとかなる可能性は充分にあるように思います。

30:はちみつ餃子
19/02/01 16:27:31.29 jPYNOX7L.net
Racket のコアを chez のに置き換える話が以前に出てたけど、
もうほとんどできたみたいね。
次のリリースあたりからはそれになるのかな。

31:はちみつ餃子
19/02/05 04:44:00.67 VmiK9YL/.net
R7RS-Large の Tangerine Edition は議論・投票への参加者が少なすぎてちょっとアレな状況みたいね。
積極的に参加してあげて!

32:はちみつ餃子
19/02/08 19:33:54.35 U10rELvE.net
界隈でなんだかちょっとだけ ISLISP の人気が出てきてるというか
ここ最近になっていくつか新しい実装が発表されてるんだけど、
使ってみた人いる?

33:デフォルトの名無しさん
19/02/10 03:09:59.76 ZBYYirVg.net
>>32
新しい実装ってどれのことよ?

34:デフォルトの名無しさん
19/02/11 02:00:38.22 eS7AzULV.net
>>33
Githubを検索したらこんなん出てきた
URLリンク(github.com)
URLリンク(github.com)
URLリンク(github.com)

35:デフォルトの名無しさん
19/02/11 03:37:14.19 JleTlNG9.net
日本製ばっかりなんだ

36:デフォルトの名無しさん
19/02/11 23:47:14.75 sKwQy+pT.net
そりゃ日本人が中心になって考えた規格だし

37:はちみつ餃子
19/02/12 01:54:55.89 jYEPbswv.net
へー。 そうなのかと思って経緯を調べてみたりしてたんだが、
その過程で ISLISP の IS は International Standard の略だと見つけた。
id.nii.ac.jp/1001/00003362/
仕様にも書いてないから知らんかった。
もっと古い時代に STANDARD LISP という名前の Lisp があったそうで、
URLリンク(www.softwarepreservation.org)
それ故に標準化にあたって単に Standard とは名乗れず、
Common Lisp が Common Lisp という名前になったのもこのあたりの事情があるらしい。
単に名前を付けるだけでも変な苦心をしてるんだな。

38:デフォルトの名無しさん
19/02/12 02:23:54.71 xM7yD0R2.net
イスラミックステートLISP
処女とヤリまくれるらしいぞ!

39:はちみつ餃子
19/02/13 00:07:17.42 VqRfiaP4.net
>>38
イスラミックステートにかけるなら、
支配地域が縮小してるらしいぞというところに引っかければよかったんじゃないかと思ったが、
縮小どころか元々たいして使われてなかったということに気づいた。

40:はちみつ餃子
19/02/13 00:10:08.40 VqRfiaP4.net
>>39
大してして使われていない (少なくとも私の観測範囲では) と思ってるけど、
今後の発展があれば面白いなとも思ってることは付け加えておく。
(ディスってるわけじゃないんだからね! ってこと)

41:デフォルトの名無しさん
19/02/14 21:27:33.66 jKX9xayO.net
金払わないと正式な仕様書読めないのか、と諦めた記憶がある>ISLISP
ドラフト?は読めたけど

42:はちみつ餃子
19/02/15 00:25:04.04 HfBEXCjq.net
>>41
ドラフトと正式版の差は誤字の修正程度だよ。

43:デフォルトの名無しさん
19/02/19 03:58:50.76 seNTvLzD.net
餃子はISLISPerなの?

44:デフォルトの名無しさん
19/02/19 09:00:07.28 4kP+wC3u.net
Racketに対応したArcが出てたのね
Arc Forum | Tell Arc: Arc 3.2
URLリンク(arclanguage.org)

45:はちみつ餃子
19/02/20 00:03:33.61 C98K3aY7.net
>>43
ISLISP には興味無いよ。
でも LISP 界に動きがあるのは歓迎するので、
どういう受け止められ方をしているのか聞きたかっただけ。

46:デフォルトの名無しさん
19/02/20 02:34:03.07 hNG331p8.net
>>45
ISLispってJIS規格になったんでしたっけ?

47:はちみつ餃子
19/02/20 03:14:25.95 C98K3aY7.net
>>46
JIS の ISLISP は 1998 年の日付になってる。

48:デフォルトの名無しさん
19/02/21 00:45:26.47 vZ2CpAoq.net
>>47
お返事、ありがとうございます
そうですかISLispはJIS化されてたんですね
でも日本で使われてるんですかね? 
Lispで日本で使われてるのはやっぱりCommon Lispだと思うんですけど(それと教育とかだとScheme(含Racket)が少しあるかな)

49:はちみつ餃子
19/02/21 01:05:58.63 9MRHAYbl.net
ISLISP のことはなんも知らんけど、
急に ISLISP 処理系が立て続けに出てきたみたいやから
なんか動きがあったんか? と思って >>32 を書いたんで、
私も質問者の立場なんやわ。
大した理由はないのであっても、
始まったならこのまま発展していくといいね。

50:デフォルトの名無しさん
19/02/22 06:25:30.84 6MhIDIeu.net
ISLispのプログラミングテキストや解説書って笹川賢一って人が書いたKindle用の電子的なのが2タイトルあるだけで
それ以外は海外でも何も出てないんですかね、Amazon USでタイトルを“ISLisp”で検索しても、その2タイトル以外は
ISOの規格票しか出てきませんね
とにもかくにも国際規格になったんだから、規格案をプッシュした連中がプログラミングの教科書や言語解説書や入門書ぐらいは
書いて出版するぐらいのことはやるべきなんじゃないかと思うんですが、見事なほどに何も出ていないようで驚きました

51:デフォルトの名無しさん
19/02/22 12:52:25.98 +Ub0CFOo.net
common lispとどれくらい違うん?

52:はちみつ餃子
19/02/22 17:25:28.63 PAJj2OJU.net
>>51
Common Lisp の規模が大きくなってまとまらなかった中で
別の提案を整理して100 ページもないような規模の ISLISP を確立したという事情があるので、
完全なサブセットではないけど言語の考え方としては近い部分が多くて
かなり小さいサブセット「的」なものという感じ。
つっても、やっぱり別言語ではあるので、それを「どれくらい」とは一言では表せないな。
個人的には、あくまで私の感想としては Lua と JavaScript くらいの距離はあるかなぁ……と思ってる。

53:デフォルトの名無しさん
19/03/05 05:20:40.92 1ASLdeDU.net
昔の情報処理試験で人工知能の分野ときたらLispだったけど今違うのかな?

54:はちみつ餃子
19/03/05 09:20:27.48 mHzXPPXa.net
>>53
このスレ (の過去スレ) では何度も話題になっている気がするが、
「人工知能」とは何か、それに「向いている」とはどういう意味かが曖昧なので、
Yes とも No とも言えるというのがおおよその結論。
人工知能を定義するなら「人間の知的活動を代行するもの」であり、
かつてはコンパイラや数式処理なども人工知能の範疇だった。
でも、分野として確立して以降は
コンパイラはコンパイラだし、数式処理は数式処理であって、
今ではそれを人工知能と呼ぶ人なんかいない。
逆に言えば分野として確立していない知的な処理はなんだって
人工知能なので、範囲がざっくりしすぎて
どんな言語が向いているかなんて言いようが無い。
強いて言うなら、かつては人工知能の主役は記号処理を基礎に据えたものであったので、
そのときの事情を前提にするならば、
それらを記述するには (当時あった他の主要な言語よりは) LISP が向いていると
言ってもそこそこ妥当ではあった。

55:デフォルトの名無しさん
19/03/05 20:46:21.78 XYJ+jVyT.net
人工知能でLISPを扱ってる本の巻末付録は大抵駅すぱあとシステムだからな

56:デフォルトの名無しさん
19/03/05 22:17:29.86 Wd2YNpFb.net
餃子がスゲー良いこと言ったな…
> 逆に言えば分野として確立していない知的な処理はなんだって人工知能
機械学習みたいないかにも人工知能っぽいものでも、人間が理解して理論的に確立してしまえばなんてことない在り来たりな技術になるんだろうな

57:はちみつ餃子
19/03/06 03:45:46.67 7/fqDaVy.net
人工知能のカテゴリのひとつに「ルールベース」があるけど、
これって要するに if 文を並べて判断するようなシステムのことで、
現代的な感覚だと人工知能とは言わんよな。
ひとつのカテゴリとして名前を付けることすら馬鹿馬鹿しい。
(あくまでも現代の感覚で見ればという話なので、
当たり前のものにしてきた先人の努力を貶めるものではないことは断わっておく。)
そんなごく当たり前のプログラムも昔は人工知能と呼ばれていたんだから、
人工知能という言葉が指す範囲はとてつもなく広いし、今後も変遷を続けていくと思う。
結果的に LISP が人工知能の記述に「適していた」あるいは「適している」のが事実であってもなくても、
LISP が人工知能の記述を目指しているというわけでもないし、
(LISP 系言語は幅広いので特に人工知能を指向したものも有りはするかもしれないが)
主要な LISP 系言語は Python やら Ruby やらと並べても違和感のないごく普通の汎用言語なんで、
用途を限定してしまうような言説は、個人的にはあまり好きじゃないな。
使いたいように使っていいんだよ。

58:デフォルトの名無しさん
19/03/06 23:50:18.20 pTvDqBNf.net
>>57
> そんなごく当たり前のプログラムも昔は人工知能と呼ばれていたんだから、
> 人工知能という言葉が指す範囲はとてつもなく広いし、今後も変遷を続けていくと思う。
70年代前半だと数式処理(記号微分とか記号積分とか、特に記号積分はね)も立派な人工知能の一分野
ついでに言えば50年代後半だと今で言うコンパイラの研究も人工知能の1テーマだったらしい

59:デフォルトの名無しさん
19/03/07 00:08:40.76 3nOoPCck.net
>>58
はちみつ餃子がすでに書いてるのに
>>54

60:デフォルトの名無しさん
19/03/08 01:59:42.89 PoFzWHgZ.net
ごめん、見落としてた

61:デフォルトの名無しさん
19/03/09 18:08:55.14 AFl9pnGp.net
研究者や企業による実験段階+アルファまでAI
商品化され一般に流通したらIT

62:デフォルトの名無しさん
19/03/20 16:56:57.86 Cy24MG6x.net
>>61
👍

63:デフォルトの名無しさん
19/03/23 22:34:59.05 xopjuNQ8.net
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))

64:はちみつ餃子
19/03/23 23:08:12.36 ByL/s3eU.net
>>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 にしたりもしている。

65:63
19/03/24 10:14:45.86 UnbL980K.net
>>64
ありがとうございます。Gauche は find があるみたいなので、早速置き換えてみました。
Scheme の規格は、過去のものを包括しているわけでもなく、なかなか難しいものなんですね。
μKanren だけに限らないかもしれませんが、μKanren の Scheme のコードは、普通の
オブジェクト指向言語と違って型を作って使い分けするのでなくて、そういう意図でベクトルや
ドット対やリストを使い分けていたり、戻す値が何を意図したものなのかわかりにくくて、
短いけど難しいですね~ 

66:デフォルトの名無しさん
19/03/24 12:59:34.15 0UFOFyyE.net
μKanrenてユニフィケーションの亜種みたいなもんだから多分どの言語でも大丈夫だぞ

67:63
19/03/26 10:45:46.30 qv9oqtep.net
>>66
μKanren や miniKanren はいろんな言語に移植されていますね。
実は私も、ある超マイナー言語に移植することでその言語の勉強と、移植したライブラリで
なんかしてみようと始めたんですけど、スタック系言語なんで、なかなかすんなりいきません。
あと、コア部分はいいとしても、Shceme でマクロを使っているところをどうするかって
ところが悩みどころ。他の言語の移植をみても、そのへんはつくってないものも多い様で。

68:デフォルトの名無しさん
19/03/26 12:30:38.77 rfZeS/lQ.net
powershell上のC#で持っとくと捗りそう

69:デフォルトの名無しさん
19/05/17 11:21:22.79 5wW1YVrN.net
なんか書けよおまえら

70:デフォルトの名無しさん
19/05/17 20:28:12.22 yF96juLt.net
Racket 7.3 でたね。上げ

71:はちみつ餃子
19/06/16 17:10:40.09 NdE++jZZ.net
Gauche も 0.9.8 が出たよー

72:通りすがりの名無しさん
19/06/17 15:39:20.44 GZApyxPH.net
プログラミングGaucheのサポートぺーじ
ずっと落ちてるのなんで?
URLリンク(karetta.jp)

73:はちみつ餃子
19/06/17 21:26:53.35 PcIXrAci.net
サポートは永遠ではないんやで。

74:デフォルトの名無しさん
19/07/27 11:20:29.96 B7vPYzXg.net
何か面白いことないか?

75:デフォルトの名無しさん
19/07/27 19:13:31.49 oO/GdmlC.net
>>72
サイトのオーナーは個人みたいだけどDNSから消えてるね
アーカイブには残ってるんでそっちをみれば?
URLリンク(web.archive.org)

76:デフォルトの名無しさん
19/07/27 19:18:18.62 oO/GdmlC.net
あ、Kahuaプロジェクトの中の人か

77:はちみつ餃子
19/07/30 13:16:53.69 1iVnacAY.net
>>74
君が面白くするのさ!

78:デフォルトの名無しさん
19/08/06 11:57:55.79 NEGlosyW.net
webで公開されてるsicpのレビューを
なんで翻訳者が違うamazonの書籍のところに書いてるんだ?
qiitaにでも書いとけよ

79:はちみつ餃子
19/08/17 02:28:56.98 ePDK/uqj.net
Chez を組み込んだ Racket が出たぞー

80:デフォルトの名無しさん
19/09/19 02:40:36.60 90sjVPq/.net
chicken scheme のサイト( www.call-cc.org ) が ここ数日ダウンしたままだ
流石にこのままフェイドアウトではないと信じたい

81:デフォルトの名無しさん
19/09/21 19:25:17.46 vGpgqd5W.net
lisp一本で食っていけますか?

82:デフォルトの名無しさん
19/09/23 00:25:37.40 yOVeMM4I.net
パーソナルコンピュータの父アラン・ケイが選ぶ「プログラマー必読の古典本」とは?
URLリンク(gigazine.net)
アラン・ケイ氏が「大ファンだ」と絶賛する本が、プログラミング言語LISPを生み出した
ジョン・マッカーシー自身の手による解説書「LISP 1.5 Programmer's Manual」です。
アラン・ケイ氏によると、この本を読んで成長するためには「どうすべきなのか」
「実際にどうしているのか」を意識しながら本を読むだけではなく、13ページに書かれた
例を「自力で書き直す」ことが重要とのこと。
アラン・ケイ氏は「LISPは単なるプログラミング言語にとどまらず、思考を鍛えるのに最適な言語です」
と述べており、「LISP 1.5 Programmer's Manual」を「完璧な古典」だと絶賛しています。

83:デフォルトの名無しさん
19/09/23 06:18:18.85 HVpBuK3H.net
Smalltalkのオッサンだっけ

84:デフォルトの名無しさん
19/09/23 13:19:32.86 CUAPT5Qo.net
LISP知らん人に勧めても判るのかね
MITってschemeやめてpython教えてるんでしょ

85:デフォルトの名無しさん
19/09/24 15:17:40.15 YoZGtfWP.net
これマジ?

86:デフォルトの名無しさん
19/09/25 09:30:17.28 kJSqg5q2.net
紫のSICPやめてpythonの教科書になったのは知ってたけど
何年か前のことだよね

87:デフォルトの名無しさん
19/09/26 01:23:29.85 ofkTv/yu.net
> chicken scheme のサイト( www.call-cc.org ) が ここ数日ダウンしたままだ
> 流石にこのままフェイドアウトではないと信じたい
この件、googleの最新キャッシュ日付(2019年9月24日 12:18:42 GMT )を考えると
もしかして "おま国" 的なアクセス制限されちゃってる?

88:デフォルトの名無しさん
19/09/26 02:15:15.69 1Fe6CtGg.net
昨日見られたけど

89:デフォルトの名無しさん
19/09/26 02:15:57.93 4iviDWAb.net
今やってみたら普通に表示されてるみたいだけど。

90:デフォルトの名無しさん
19/09/26 02:26:34.15 ofkTv/yu.net
確認ありがとうございます。
"おま環" (お前の環境だけだろ) のようですね...

91:デフォルトの名無しさん
19/09/26 02:31:17.21 79UYLKSt.net
ぼくも今見られたけど…

92:デフォルトの名無しさん
19/09/26 21:05:13.34 Jjm8Fxg+.net
chicken scheme ( www.call-cc.org ) にアクセスできない件、スレ違い気味で申し訳ありません。
0. Googleのキャッシュから ⇒ ◯ (見えないよりマシ...)
1. ルーターのアクセスポート制限を解除 ⇒ ×
2. プロバイダー設定( plala ネットバリアベーシック) をフィルタリングOFFに ⇒ ×
3. VPN (L2TP/IPsec) で接続 ⇒ ◯ (繋がった!)
とりあえず、こういう結果になりました。
plalaが規制してる/ plalaが規制されている どっちにせよこれ以上はどうにもならなそうです。
見れるようになったのでヨシとします。

93:デフォルトの名無しさん
19/09/27 12:20:26.81 dgplOwXb.net
sicpはそんなに良い本?
どういうふうに良い本なのか教えてほしい

94:はちみつ餃子
19/09/30 19:15:16.39 pw7Asu32.net
>>92
俺もつながらん。 プロバイダは Biglobe

95:デフォルトの名無しさん
19/10/03 21:39:01.39 5qBGt8Nl.net
jpドメインは拒否されてるのかもね
契約してる激安海外VPS経由でアクセスしたら見れたけど、プロバイダ経由だとpingも通らんわ

96:デフォルトの名無しさん
19/10/04 01:18:49.35 8amtWMNV.net
>>95
私の場合は日本のISP(海外の出版社のサイトとかでアクセスした側の国を自動判別している場合は日本と判定される形の接続法)で
インターネット接続しているけれどwww.call-cc.orgのHPやその下の様々なページは普通に見えるよ

97:デフォルトの名無しさん
19/10/04 16:00:04.95 QJ6Astzp.net
Common lispよりschemeの方がユーザ多いの?
一番人が多そうなのはracket?

98:デフォルトの名無しさん
19/10/04 16:48:57.33 QJ6Astzp.net
URLリンク(www.european-lisp-symposium.org)
common lispの方が発表多いですね

99:デフォルトの名無しさん
19/10/05 12:25:09.41 f93dK2tU.net
schemeは実装多すぎてどれを選べばいいのか分からん、 特定実装に依存すると いつか廃れたときに困る。RnRSやらsrfi-xx どこまで使えるのかマチマチだからね。
common lispは今のとこ sbcl にしとけば間違いなさそうな安心感がある

100:デフォルトの名無しさん
19/10/05 12:32:44.20 oRBX06Fv.net
ほんとぉ?

101:デフォルトの名無しさん
19/10/05 20:42:35.85 havjxsgq.net
>>99
ちゃんとメンテされている商用以外のフリーの処理系はSBCLしかないという…

102:はちみつ餃子
19/10/06 01:02:08.24 RRBV0NuF.net
Scheme で安心感の強い処理系っていうと Racket とか Guile とかかな。
そう簡単に廃れなさそう。

103:デフォルトの名無しさん
19/10/06 03:01:34.82 Wv7rmhQe.net
Schemeの無料で使える処理系で例の大顰蹙買ったR6RS対応してるのってあるの?

104:はちみつ餃子
19/10/06 09:12:01.09 RRBV0NuF.net
>>103
あるよ。
Racket
Chez
Vicare
Sagittarius
Ikarus
IronScheme
Ypsilon
Mosh
Larceny
R6RS に準拠ってほどではないけど一部をサポートしているものとしては
Guile
BiwaScheme
もある。
Sagittarius と Larceny は R7RS もサポート (R6RS と R7RS を混在させることも出来る) しているよ。
Vicare, Ikarus, Ypsilon は実質的に動きが無くなっているのでこれから使うのはやめた方がいいかもね。

105:デフォルトの名無しさん
19/10/06 13:53:35.26 5nvjhJQN.net
なんでGaucheが出てこないんだ?
R7RS準拠と書いてあるよ

106:はちみつ餃子
19/10/06 15:28:01.43 RRBV0NuF.net
>>105
ここでは >>103 に対する回答なので R6RS の話をしてる。

107:デフォルトの名無しさん
19/10/06 19:19:12.92 Wv7rmhQe.net
>>104
お教え下さり、どうも有難うございました。
RacketもR6をサポートするようになってたんですね。
R6発表後も数年間はRacketはR6対応じゃなかったようなのでサポートする気がないのかと勝手に思い込んでました。

108:デフォルトの名無しさん
19/10/06 21:38:25.02 NStuTL+0.net
R7RS⊃R6RS⊃R5RS
ではないんだっけか
CommonLISPから何も学んでねーな

109:はちみつ餃子
19/10/06 22:34:51.75 RRBV0NuF.net
Scheme はまだ未完成という意識がある気がするな。
だから実務指向な言語と違って現段階では互換性を重要視してない。
重要視はしてないけど突飛な変更が入ってるわけでもなくて、割と正統進化してると思うよ。
R6RS が異端なだけ。
その R6RS にしたところで R7RS と共存が可能な程度に近しいわけだし。

110:デフォルトの名無しさん
19/10/10 09:50:54.15 8dwom9+O.net
Gauche の作者さんの話がバズってた、schemeと全然関係ないけど。
URLリンク(b.hatena.ne.jp)
(deleted an unsolicited ad)

111:デフォルトの名無しさん
19/10/10 13:13:17.58 8G2AB5zJ.net
手口が巧妙やなあ

112:デフォルトの名無しさん
19/10/15 22:29:00.84 sgOHpX5p.net
バズではないでしょ

113:デフォルトの名無しさん
19/10/24 14:55:50.74 9HSU6Di+.net
関数の値が最も0に近くなる引数を求めたい時、どう書けばいいんでしょう?
繰り返しで引数を少しずつ変えていけばいいのはわかるのですが、定石とかあるんですか?

114:デフォルトの名無しさん
19/10/24 20:55:13.50 3+tysLZD.net
その関数が線形なのかとか微分可能なのかとか分からんとなぁ

115:デフォルトの名無しさん
19/10/25 01:02:52.70 IZH7p7oT.net
微分可能ならニュートン法が簡単
そうでないなら、範囲 [ a , b ] をステップ幅 (b-a)/n で 暫定値を探る。(n:分割数)
それが範囲の左右半分どちらにあるかに応じて値 a, b を更新、あとは再帰的に投入。
ステップ幅 が指定誤差未満になったら a を返して脱出
そのまま愚直に組むだけならそんなに長くならない。

116:デフォルトの名無しさん
19/10/26 10:42:36.27 v7RlO1g+.net
>>113の言ってる関数は数学の関数じゃなくてプログラムの関数の事でしょ…
多分線形でも微分可能でもないだろう
乱数使って適当な範囲で試行してずらしながら一番近そうな範囲を選択して絞り込んでいくという位しか思い付かない

117:デフォルトの名無しさん
19/10/26 22:25:16.53 IPzUune1.net
どちらの関数にせよ考え方は一緒じゃないかな。
値の変化が連続的でなければそのやり方では求められないし、連続的であっても極小値に落ち込んでしまう可能性がある。
関数がハッシュ計算するようなものだったら総当たりしかないのでは?

118:デフォルトの名無しさん
19/10/28 06:02:05 T/Np/NFy.net
bel
URLリンク(www.paulgraham.com)

グラハムの新しい方言だって

119:デフォルトの名無しさん
19/10/28 06:33:09 kIF/RW73.net
誰かと思ったらグレアムか
奴は口だけのポンコツになって久しいよ
もう実装は無理

120:デフォルトの名無しさん
19/10/28 18:32:21.08 yqfr49c7.net
Yコンビネーターも辞めたとかなんとか…
詳しく知らないけど、引退かな?

121:デフォルトの名無しさん
19/10/30 22:48:20.29 WFzgvujE.net
ポール・グレアム (54歳)
庵野秀明 (59歳)
引退するような歳か?

122:デフォルトの名無しさん
19/10/30 23:12:22.65 LqrGiWFj.net
ポールグレアムそんなに若いんか

123:デフォルトの名無しさん
19/10/31 22:39:19.62 2PR/MUI3.net
arcだかはどうなったの
まあどうでもいいんだけど

124:はちみつ餃子
19/11/08 14:53:51.74 qQX8Hix+.net
グレアムは金には困らんのだから残りの人生は全部が趣味みたいなもんだろ。
引退もクソもねぇよ。

125:デフォルトの名無しさん
19/11/08 18:39:03.97 S2qBNw07.net
おらもLisp書いてカリフォルニアで城買うだ

126:デフォルトの名無しさん
19/11/09 02:36:07.91 NblRK941.net
才能もねぇ金もねぇお巡り毎日ぐーるぐる

127:デフォルトの名無しさん
19/11/09 15:47:48.43 H0dhk6wi.net
闇の書を永久封印するために暗躍しているのかもしれん。

128:デフォルトの名無しさん
19/11/09 18:42:51.61 PzSjhCYo.net
テレビもねえ

129:はちみつ餃子 ◆8X2XSCHEME
19/11/10 01:15:03 PX+YDh/3.net
>>127
それはギル・グレアム提督だろ!

130:デフォルトの名無しさん
19/11/10 01:51:30 a/xfENId.net
fooもねえ、barもねえ
hyperspecナニモノだ

131:デフォルトの名無しさん
19/11/10 06:23:28.13 hnRZ9wTQ.net
グラハムはハーバード、MIT人工知能研、イタリアの美術大出てるんでしょ?
アメリカの大学は学費も相当かかる
ビジネス始める前から「普通の奴等の上」を行ってる人なんだと思うなぁ
頭さえ良ければ、とか思うかもしれないが環境、友人は大事だよ
ビアウェブのパートナーはMITの教授だよね、確か

132:デフォルトの名無しさん
19/11/10 14:00:02.99 jFIdfEKQ.net
いまPLAIの8章をよんでいるんだけど、次のExerciseの不変条件と言うのがよく分からん・・
URLリンク(cs.brown.edu)
ソースコードはこれ URLリンク(bitsend.jp)
Storeに束縛を追加するのはbox、その束縛を参照するのはset-box!とunboxだけだから、
set-box!を評価するときに、ロケーションがStoreに存在しないことは無いように考えているんだけど、もっと数学的に
証明しなきゃいけないんですよねこれ・・

133:デフォルトの名無しさん
19/11/18 17:16:59.42 D69b6YL7.net
Emacs hy-modeがバグってて動かない

134:デフォルトの名無しさん
19/11/22 03:17:25 LHM1yudT.net
Lispworks 8いつ頃出ると思う?

135:デフォルトの名無しさん
19/12/06 00:43:20 KafRVWs2.net
$ ros run
* (+ 31000 33500 1000 2300 16500 300 1000 10100)
64700

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

$ ros version
roswell 19.09.12.102(NO-GIT-REVISION)

136:135
19/12/06 03:21:18.04 KafRVWs2.net
正しい値は 95700 なのだが
(- 95700 31000)
が 64700 になることに気づいた
最初の引数,抜かしてんじゃん...
REPL の + 関数,バグってるんだが
それとも WSL がいけないのか? tmux がいけないのか?

137:135
19/12/06 04:20:18 KafRVWs2.net
$ ros run -- --version
SBCL 1.5.5

138:はちみつ餃子
19/12/15 17:37:59.94 jthcUe0A.net
Gauche の 0.9.9 がリリースされたよー

139:_
20/01/17 14:26:20 ceaCkwJJ.net
Guile 3.0 でたよー JIT化されたのが一番大きいかも
URLリンク(lists.gnu.org)

SBCL も 2.0 になったよー 久しぶりに Windows のインストーラーも更新されてるね
URLリンク(www.sbcl.org)

140:はちみつ餃子 ◆8X2XSCHEME
20/01/17 16:25:06 TQsEbuhA.net
Ypsilon の派生で R7RS にも対応した処理系が出た!

URLリンク(github.com)

141:_
20/01/17 18:22:11.13 ceaCkwJJ.net
>>134
Lispworks 8 でる情報あったんですか?
てっきり次は 7.2 かと。

142:_
20/02/14 11:14:07.86 m79sNhAX.net
Racket 7.6リリースされたよー
URLリンク(blog.racket-lang.org)
Chez Schemeの取り込みが進んで、プロダクション・レディになったそうな。
デフォルトにはまだなっていないようです。

143:デフォルトの名無しさん
20/02/14 20:28:20 xdYnDj0z.net
Chezか
スレッデドコードとか懐かしいな

144:デフォルトの名無しさん
20/02/14 23:19:09 2TRtlmBi.net
SICPを勉強したくてschemeを一通り勉強したけど
schemeが本当に好きになった
綺麗な言語だなと思ったのはschemeが初めて

145:はちみつ餃子
20/02/15 13:53:27.59 cwLPNCdO.net
Chez はパッケージマネージャがなぁ……。

146:デフォルトの名無しさん
20/02/18 22:12:38 i+WlpfA0.net
SICPで4.4論理プログラミングがでてきたけど、論理プログラム言語(Prolog)なんて
一生使わんのじゃないのか・・・?俺みたいな雑魚PGは特に。
そもそも俺はなんでインタプリタ作ってるんや・・・

147:はちみつ餃子 ◆8X2XSCHEME
20/02/19 11:52:11 mcS2XXQq.net
>>146
SICP はコンピューターサイエンスの本だから、
いろんなパラダイムについて説明しているよ。
知ってれば便利なこともあるとは思うけど、
必ずしも日常的に役立つというものでもないのも確か。

148:デフォルトの名無しさん
20/02/19 13:12:57 YsbctBnB.net
prologはともかくユニフィケーションはパターンマッチでたまに使うかも

149:デフォルトの名無しさん
20/02/22 11:13:35 dEZr6bBq.net
歴史、哲学、思想を勉強しても目の前の仕事には直結しない
みたいなことなのかな

150:デフォルトの名無しさん
20/02/22 11:15:49 dEZr6bBq.net
PrologはSQLに近い(同じ?)という人もいるね

151:はちみつ餃子
20/02/22 12:07:02.06 5jIrjfcF.net
事実を列挙すれば解を求める処理をやってくれるってのは理想のひとつではあるよな。
実際にはには Prolog が答えを出すメカニズムを理解していないと
答えを (効率的に) 出しやすい事実を上手く与えられない場合もあるし、現実は厳しい……。

152:デフォルトの名無しさん
20/02/22 21:37:13 dEZr6bBq.net
思うんだけどLispというと悟りとか、ゲーデル云々みたいな話がよく言われるけど
Prologではあんまり関連付けて言われないですよね

153:デフォルトの名無しさん
20/02/29 16:53:01 RQUlgixi.net
上にもあるけどprologは論理がそのままプログラムになるっていわれてんだろ
似たようなもん

154:デフォルトの名無しさん
20/03/03 08:38:08 VyHc4g1O.net
hy面白いけどlisperにはrubyの方が人気なんだ

155:デフォルトの名無しさん
20/03/03 12:21:06 t7WQy2vJ.net
んなこたーない

156:デフォルトの名無しさん
20/03/03 18:09:46 wrUSgHR4.net
>>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の世界に対応していると言えるわけですよ

157:デフォルトの名無しさん
20/03/03 18:41:29 2IitENiP.net
3文字で頼む

158:デフォルトの名無しさん
20/03/03 19:41:28 nd3HjawW.net
マクロ

159:デフォルトの名無しさん
20/03/03 20:29:22.74 44YhJRv6.net
要するにPrologはメタ論理レベルのプログラミングが出来ないってこと?

160:デフォルトの名無しさん
20/03/03 21:31:50 s8qGwiQH.net
>>157
ボイド

161:デフォルトの名無しさん
20/03/03 21:44:08.09 JAknlLuJ.net
>>157
GEB

162:デフォルトの名無しさん
20/03/04 12:43:41 XYd2gLmT.net
CDR!!

163:デフォルトの名無しさん
20/03/04 12:50:19 ujdXlrHA.net
SECD
Landin’s J

164:デフォルトの名無しさん
20/03/05 20:29:29 h922Dn8C.net
>>50
需要の問題だろ
Lisp自体がマイナーで
Common Lispでやっと本が出せる位なのに

165:デフォルトの名無しさん
20/03/05 20:29:51 h922Dn8C.net
>>53
今はAIといえばPythonだろ?

166:デフォルトの名無しさん
20/03/05 20:30:44 h922Dn8C.net
>>54
昔の一時期は妥当だったんだろうけど
今ならPythonの方が向いてるだろう

167:デフォルトの名無しさん
20/03/05 20:32:32 h922Dn8C.net
>>57
>>58
要は人工知能というより記号処理なんだよ

168:デフォルトの名無しさん
20/03/05 20:34:42 h922Dn8C.net
>>82
>>84
MITの件もあるし
今ならPythonでいいでしょ

MITレベルの頭ならLispなんて
すぐ読み書きできると思うが

169:デフォルトの名無しさん
20/03/05 20:39:40 h922Dn8C.net
>>146
>論理プログラム言語(Prolog)なんて
ほとんどのプログラマが
仕事では一生使わないだろうな?
でも設計をする上で参考になる

170:デフォルトの名無しさん
20/03/05 20:41:41 h922Dn8C.net
>>149
Prologの勉強は無駄ではないと思うが
すぐ成果には結びつかないだろうね?

でも長期的には流行りの言語やFWに飛びつくより
地力につながる可能性もあるだろう

171:デフォルトの名無しさん
20/03/05 20:42:43 h922Dn8C.net
>>150
宣言型という点では近いけど言語としては同じじゃない
ユニフィケーションやバックトラックの挙動があるから

172:デフォルトの名無しさん
20/03/05 20:44:54.71 h922Dn8C.net
>>151
AIはディープラーニングが主流になったが
それはそれとしてアレでPrologがもう少し
分かりやすければ日常的に使うんだけどな
これどうやって書くんだってのが多すぎる

173:デフォルトの名無しさん
20/03/05 20:47:20 h922Dn8C.net
>>156
Lispはメタプログラミングしやすいって理屈は分かるが
実際にそれでものすごい作業効率が上がるかは疑問だな?

なぜんあらメジャーな言語はライブラリが充実してて
それ使えば最初から書かなくても済むわけだから早い

174:デフォルトの名無しさん
20/03/05 20:48:56.47 h922Dn8C.net
>>159
本当にできるかできないかは知らんが
そういえばメタプロやってるって
声ほとんど聞いたことないな
Lisp勢はマクロマクロうるさいのに

175:デフォルトの名無しさん
20/03/05 23:31:57 ilhNvGHV.net
3文字で頼む

176:デフォルトの名無しさん
20/03/06 05:04:10.79 nWpA6pnf.net
スレチ

177:デフォルトの名無しさん
20/03/10 18:23:23.35 BcZoFSIR.net
hy
マクロの入力にpair入れたのに
マクロ実行時にunquoteするとlistに化けるバグがある気がする

178:デフォルトの名無しさん
20/03/26 18:40:18.93 jDMenf5s.net
日本の理系人のLisp好きは異常

179:デフォルトの名無しさん
20/03/26 21:06:12 x3TTE31H.net
土日はおとなしくLispでも

180:デフォルトの名無しさん
20/04/24 18:37:15 3QH+ANBn.net
Clozure CL 1.12 がでてきた。
URLリンク(github.com)

ぜんぜん 1.11 からバージョンあがらないから死んじゃったのかと思ったよ。

181:デフォルトの名無しさん
20/04/24 19:04:52 aAxBS6wC.net
死んでるんじゃない
枯れてるんだ😡

182:180
20/04/25 00:16:26 iXfl78KC.net
>>181
ごめんなさい

ECL(Embeddable Common-Lisp)もバージョンアップしてた。
16.1.3から20.4.24になってる。
まだトップページ更新がないけど……。
URLリンク(common-lisp.net)

変更点は以下
URLリンク(gitlab.com)

183:デフォルトの名無しさん
20/04/25 01:57:04 u9oymkho.net
>>180
キタ━━(゚∀゚)━━!!

184:デフォルトの名無しさん
20/04/25 07:07:50.62 q++AEQsZ.net
小学校でlispを教えたらいいのに

185:182
20/04/25 13:34:52.97 tfHLOmTJ.net
News が更新されたよ。
URLリンク(common-lisp.net)

186:_
20/04/28 00:30:29 moc7J10E.net
SBCL 2.0.4 リリースされたよ。RISC-V プロセッサに対応したのが目玉みたいだよ。
URLリンク(www.sbcl.org)

187:デフォルトの名無しさん
20/04/28 11:03:05 jkGkDNpV.net
Scheme の map 手続きについて、
手続きを適用する順序 (副作用が発生する順序) は仕様上は未規定ということになっています。
各処理系として保証するということは有りえるんですが、
Racket の場合は保証されていると読み取って良いでしょうか?

URLリンク(docs.racket-lang.org)

わざわざ "from the first elements to the last" という書き方をしているからには順序を意図しているように
解釈するのが自然かとは思うんですが、単に範囲を言っていると解釈できなくもないので、
英語と Racket に明るい方がいればご教示賜りたいです。

188:_
20/04/28 14:05:01 moc7J10E.net
>>187
racket使ってるわけでも英語ができるわけでもないけど。
最初から最後までって範囲の話してるんじゃなかろうか。
順序の保証があるなら IN ORDER とか付きそうな気がする。

189:デフォルトの名無しさん
20/04/28 14:43:15 jkGkDNpV.net
>>188
R5RS などでは手続きが各要素に適用される dynamic order は unspecified である
というような表現になってるんですよ。 order という語が主語になってます。

URLリンク(docs.racket-lang.org)

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

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

私自身はいずれにしても map の副作用の順序に期待しないんですが、
しばらく前に Qiita に投稿されていた記事の中で map の順序が効いてくるコードがあったので、
これってありなんかなぁと思ったという経緯です。

190:デフォルトの名無しさん
20/04/29 01:16:58.58 y02v3tEE.net
>>187
保証とはどういうことを指しているのだろう
将来仕様を変更しないとは書いていないのは確かなようだ
racketでは引数の評価もleft to rightとは書いてあった
schemeでもfor-eachは先頭から順番に評価する
実際に評価順の違いが観察できるのはchezかな

191:デフォルトの名無しさん
20/04/29 03:18:21.69 ALOjMFFX.net
>>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ユーザとの約束の順守を保証せねばならない)、ということだ。
当然ながら、言語仕様書のバージョンが変われば約束(つまり言語仕様による規定の内容)も変更され得る。

192:デフォルトの名無しさん
20/04/29 06:44:54 bLWOmnfL.net
>>187
処理系によって(A B C)の評価順序が
(1 2 3)だったり(3 1 2)だったり(3 2 1)だったりするから
mapのようなリストで処理結果を返すような関数のクロージャ内では原則副作用は起こさないことが求められる
for-eachみたいな初めから副作用を期待する関数はどう並べようが問題は起きない

193:デフォルトの名無しさん
20/04/29 09:21:45 sxS/u8Yc.net
>>192
それは承知しているのです。
ここでは Racket のドキュメントをどう解釈すべきかというのが論点です。

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

順番に (in order) とは書いていません。
順序が意味を持つ箇所ではおおよそ order という語で強調しているのに
それがないここでも順番であることを確信してよいほどに
(英語のニュアンスとして) 自明でしょうか。

194:デフォルトの名無しさん
20/04/29 09:54:06 sxS/u8Yc.net
>>191
> 長大なリストに対する並列処理を可能にするためだろう

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

URLリンク(docs.racket-lang.org)

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

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

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

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

副作用がないときに限っては並列化しても仕様に反しないのは間違いないですけど、
その場合は順序に関して有るとも無いとも書く必要がないんですよね。
どうせ観測できないので。

195:デフォルトの名無しさん
20/04/29 12:39:32 qQMMu/UY.net
>>194
mapについては、まえからか、うしろからか好きな方で実装すればいいよ、程度のはなしだとおもってた。
継続を突っ込むとどうとかいうのがあったとおもうけどだれか解説pls

196:187
20/04/29 13:42:08 sxS/u8Yc.net
>>195
継続については「call/cc は副作用を生じる」というひとことで説明できます。
副作用とは何かというのは色々なモデル化のやり方があってはっきりしたひとつの定義を
定められないみたいなんですが、この説明が納得感があって参考になると思います。
URLリンク(practical-scheme.net)

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

で、副作用がある手続きの中でも特に第一級継続は (観測できるだけでなく) 流れを変えることが出来るから
どれが妥当なのか結論が出ないなぁってことです。

197:デフォルトの名無しさん
20/04/29 14:57:29 u7alO7eW.net
グラフかくのってどうしたらいい?gnuplotの🎺使うの?
gnuplot使ったことないけど難しいのか?

198:デフォルトの名無しさん
20/04/29 18:27:14.43 OS1rodDF.net
やりたいことをやろうとすると難しい

199:デフォルトの名無しさん
20/04/29 23:11:18 ALOjMFFX.net
>>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
なるほど、インターリーヴを起こしてはならない、ということですね
良い反例ですね、了解しました
確かにそれだと並列処理という話は排除されますね

200:デフォルトの名無しさん
20/04/30 01:56:25 qpY4nJGd.net
実用性皆無の話だなschemeらしいや
racketとの比較ならr6だと思うのだが
しかもr7でなくr5とな
scheme間でさえ移植性は低いんだからどんな挙動でも良いんじゃねえか
racketはまだ実装が複数存在するような状況ではないらしいが
schemeとは文化が違うんで実用性に舵切った仕切りになりそうね

201:デフォルトの名無しさん
20/04/30 02:18:30.11 7t452aCV.net
>>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を行う最初と最後はそれぞれ先頭と末尾でなければならないのに途中はランダムでも可というのは不自然すぎる
(なぜ最初と最後だけは変更を許さず先頭と末尾に確定させるのか?、ランダムを許すならば最初・最後も含め全部がランダム可にするのが自然)
ということだ
もし最初および最後だけはそれぞれ先頭および最後だけに限定し、それ以外の途中の順番だけは規定したくない、という極めて不自然な仕様にしたいならば
誤解させないように、「但し、最初・最後以外の途中の順番は自由で規定しない」という趣旨の語句を挟む必要がある

202:_
20/05/03 15:45:23 XyvLD4Kl.net
そうこうしているうち Racket 7.7 リリースされたよ。
URLリンク(blog.racket-lang.org)
個人的なトピックス
・イミュータブルで高速なハッシュテーブルHAMT(hash array mapped trie)がインプリされた。
・コンパイラの最適化でコードサイズ20%減。
・GC1,2割高速化。
・ドキュメント改善。

203:デフォルトの名無しさん
20/05/03 18:58:12.70 BS5ww13P.net
今の Racket は
ChezScheme をバックエンドにしたやつと従来からのやつがどちらも配信されているけど、
これって将来的には一本化される予定ってあるのかな?

204:デフォルトの名無しさん
20/05/04 08:02:38.27 QFOyDpRt.net
hy言語をwindows10で使いたい
pip install hyは成功するが
コマンドプロンプトでhyと入力してもhyが実行されない
変なパスの設定がいる?

205:デフォルトの名無しさん
20/05/04 17:14:51 WvOaLqMC.net
>>204
管理者権限でインストールしたなら C:\Program Files\Python37\Scripts だけど、
ユーザ権限なら %LocalAppData%\Programs\Python の下のどこからしい。

206:デフォルトの名無しさん
20/05/07 13:26:34 fANici3H.net
>>202
キタ━━(゚∀゚)━━!!

207:デフォルトの名無しさん
20/05/29 15:53:20 Xj9bBIl5.net
URLリンク(www.indeed.com)
ここで何度も募集かかってる企業って人が辞めるのも早いってこと?
防衛産業の企業は人気ないとかなのかな

208:デフォルトの名無しさん
20/05/31 00:46:42 RkS0wDCU.net
Common Lispは使い込まないと頭に入ってこないが
Racketにはドキュメント読んだだけで頭にすっと入ってくる綺麗さがあった
最近のRacketって昔と同じ感じの綺麗なままなんだろうか

最近読んだRacketの() []の括弧を区別する方法のドキュメントがわかりにくくて
RacketもCommonLispと同じなってしまって,これならCommon Lispでいいじゃん
と思ったのだが

209:デフォルトの名無しさん
20/05/31 16:35:47.71 6jrbJecg.net
> 最近読んだRacketの() []の括弧を区別する方法
racketがschemeから枝分かれして10年だがracketになるよりまえのr6rsからだろ
たまにしか書かない程度ならなんでも良いだろ大袈裟だな

210:はちみつ餃子
20/06/01 02:26:33.76 0yVOdbpz.net
Racket は元は教育用途で使われていたこともあってドキュメントはかなり整備されている部類だと思うが。

211:デフォルトの名無しさん
20/06/02 22:21:53 0sTsfEfs.net
他の言語と比べてCommon Lispっぽい書き方、Schemeっぽい書き方ってどんな書き方ですかね

212:デフォルトの名無しさん
20/06/03 00:06:28.05 OT4MJN13.net
そら末尾再帰をふんだんに使うとか変数はなるべく使わないとか

213:デフォルトの名無しさん
20/06/03 00:18:32.67 5C2VTXl3.net
CLっぽい書き方はマクロを使いまくった超絶技巧だろう
Schemeっぽい書き方は兎に角無理矢理に再起呼び出しを使った超絶技巧な書き方だろう

214:デフォルトの名無しさん
20/06/03 01:17:24.97 gRMTE3Wt.net
ダイナミックスコープ活用してるの見るとcommon lispだなぁって思う

215:デフォルトの名無しさん
20/06/03 09:04:50 yr2/b+Mr.net
括弧のやまがある時点でlispっぽい。あとはまあ、ラムダ式とかもほかに普及してきてるから、マクロかなぁ。

216:デフォルトの名無しさん
20/06/05 13:14:24 dnBRE6E+.net
hy言語良いのにpython使いが良さをわかってくれない

217:デフォルトの名無しさん
20/06/05 23:11:11.70 gXepSjvX.net
見るからに検索に引っかからなそう
名前って大事だよね・・・

218:デフォルトの名無しさん
20/06/26 20:41:33.71 zhAvJTli.net
LispworksのprofessionalとhobbyistDVどう違うの?

219:デフォルトの名無しさん
20/06/27 16:06:22.83 9QvR4hLZ.net
Lispworksのprofessional 32bitかhobbyistDV 64bitどっち買うか迷う

220:デフォルトの名無しさん
20/06/29 08:04:38.82 bwiS8r2m.net
>>218
hobbyistDVは業務で使うことはできんくて作成したEXEも配布できないです
professionalは業務用途で無制限の配布ライセンス込みです
業務で使用するEXEの配布をするのが目的かどうかでしょうね

221:デフォルトの名無しさん
20/07/21 23:47:51 WS1OAOc5.net
Pythonぽい独自言語をpythonに変換したい
Lispは使わずpythonのパーサー使った方が楽だろうか

222:デフォルトの名無しさん
20/07/22 00:07:10 Rr/gpg4T.net
>>221
PythonぽいならPythonに変換すればいいだろ!

223:デフォルトの名無しさん
20/07/22 19:30:54.17 Cq/LgZJ4.net
hyこういう時に使えるのか

224:デフォルトの名無しさん
20/08/21 21:28:14.79 l/GdGvyy.net
racketでデバッグするのは
DrRacketを使うしかない?
コマンドラインでデバッグできたらいいんだが

225:はちみつ餃子
20/08/24 02:59:00.85 ko9AntT7.net
デバッグってどういうレベルのことだろ。
REPL はあるんだからそこから実行してみればいいんじゃね。

226:デフォルトの名無しさん
20/09/08 18:30:45.57 L2ZCtfX62
ノロケツイートがバズって起業! カップル・夫婦向けサービス「ふたり会議」が反響を呼ぶワケ
URLリンク(www.itmedia.co.jp)
コロナで細る“起業”を手助け。クラウド会計freee、スマホアプリで設立書類を作成できるサービス
URLリンク(www.businessinsider.jp)
岐阜大に「起業部」誕生 行動力ある人材を育成
URLリンク(www.chunichi.co.jp)
日本発 “世界最強グローバルEC”を率いる起業家・原田真帆人の挑戦
URLリンク(news.yahoo.co.jp)
起業家から事業家へと自らを進化させなければ、さらにスケールすることはできない
URLリンク(diamond.jp)
爆速で成長する2社の成長の秘訣とは?オンラインイベント 『爆速で成長するスタートアップの始め方』を開催
URLリンク(prtimes.jp)
医師兼起業家の草分け 医療事故隠蔽事件が転機に
URLリンク(style.nikkei.com)
NHKを辞めてユーチューバ―に。起業は「縛られない自由な生き方」なのか
URLリンク(www.itmedia.co.jp)
会社のDNAとも言えるミッション、ビジョン、バリューをどのように策定すればよいのか?
URLリンク(diamond.jp)

227:デフォルトの名無しさん
20/10/05 07:37:00.61 VkmQCekf.net
Python のpandasが日時関係処理充実しすぎて手放せない
しかしlispで似たことできるなら乗り換えたい
Pandasのデータからガントチャート作ってくれさえすればいいのだけど
Lispに相当するものないでしょうか

228:デフォルトの名無しさん
20/10/05 23:29:50.84 +akcWJTJ.net
既に手放せないほどのものを漠然としたlispへの印象で乗り換えたら全てが満足したという話は寡聞にして知らない

229:デフォルトの名無しさん
20/10/07 06:01:50.72 K2xU1fKa.net
pandasはRの劣化コピーで
Rはschemeと相性がいいから
Rに乗り換えると良いのでは?

230:デフォルトの名無しさん
20/10/07 11:49:58.33 jq/8+j7g.net
邪道かもしれないが
hy使えばlisp でpandas使える

231:デフォルトの名無しさん
20/10/16 17:12:58.14 PUF6e3pG.net
lispは他の言語に寄生して生きていくしかないね
pyレベルのライブラリなんて期待できないし

232:デフォルトの名無しさん
20/10/16 18:49:22.22 gzagFIoh.net
Luaみたいな用途なら需要がある気がする

233:デフォルトの名無しさん
20/10/16 19:26:16.21 eDnfO719.net
時期にcommon lisp でできるようになるかも
最近numpyのcommonlisp版作るnumcl ってプロジェクトあるし

234:デフォルトの名無しさん
20/10/16 19:47:49.92 gzagFIoh.net
カッコなし、字下げか空白だけで繋ぐlispとかあったら3レス分くらい流行るかも

235:デフォルトの名無しさん
20/10/16 22:46:57.54 uQ0QovW5.net
>>234
たとえば(/(+ 1 2 3 4 5) 5)はどうなるの
/
 +
  1 2 3 4 5
 5
こうかな?

236:デフォルトの名無しさん
20/10/16 22:55:51.98 uQ0QovW5.net
無限ループ
((lambda(x)(x x))(lambda(x)(x x)))
こういうのだと字下げだけでは対応できないから補助キーワードが必要になる
call
 lambda x
  call x x
 lambda x
  call x x
こうかな
無意味に行数が増える時点で自分的に却下だけど

237:はちみつ餃子
20/10/17 01:28:29.67 EbfBq8oa.net
>>234-236
Scheme での提案として存在はする。
URLリンク(srfi.schemers.org)
でも使われているのを見たことは無いなー。
そこまで括弧が嫌いならあえて Lisp の系統の言語を使わなくても
他の選択肢はいくらでもあるわけだしな。

238:デフォルトの名無しさん
20/10/17 09:40:24.61 aI2oeiUv.net
なんていうか、何も変わらんなあ…
カッコがないのにカッコが見える

239:デフォルトの名無しさん
20/10/17 13:45:30.78 FBaj+4Vy.net
AST をそのままかけるのが lisp の欠点であるし強みでもあるんだから、それが嫌なら他言語で AST をいじれるライブラリーを使ってかけって話だしね

240:はちみつ餃子
20/10/17 16:11:43.70 EbfBq8oa.net
>>238
Indentation-sensitive syntax ( I 式) は S 式との間での単純な変換規則なので
S 式を忘れて書けるほどの抽象度ではないという感覚はわかる。
むしろ脳内で S 式に展開しようとしてしまって変に負荷がかかる感じがある。
最初から I 式で学んでいればまた違う感覚なのかもしれないけど、
そういう学習ルートは確立してないしなぁ。

241:デフォルトの名無しさん
20/11/03 18:17:12.28 mQdztdM9.net
趣味プログラマでLispしか知らないんだけど、
みんなはやりたいことの応じて言語を使い分けてんの?

242:デフォルトの名無しさん
20/11/04 09:41:10.74 lIQnEWld.net
>>241
そりゃ使い分ける
たとえば速さや移植性を重視するときは今でもCが手放せない
一時Rustも使ってみたけどLLVMに縛られるのでCに戻った
あと複雑なことをしないグループログラムだとPythonが楽
ネットを探せば必要なライブラリはだいたい手に入る

243:はちみつ餃子
20/11/04 12:06:16.91 gK1y19nz.net
なんだかんだで C だけは手放せない感じはあるかな。
低レイヤを支配してるのはやっぱ C だわ。
それもこれからは一部は Go や Rust に置き換わっていくとは思うけど。

244:
20/11/04 19:46:38.68 P7pHA7N2.net
>>243
>これからは一部は Go や Rust に置き換わっていくとは思うけど。
……
C で記述された lib を Go や Rust は気軽にコールできるのですか?
まさか…

245:はちみつ餃子
20/11/05 17:06:21.53 CL/4cqPq.net
>>244
そりゃ当然できるよ。 呼び出すだけなら難しい手間は何もない。
ただ、 C の側のコードの保証が弱すぎる。
たとえば (C側で) malloc で確保したメモリは Go や Rust の側でいつ解放するのが
正しいのかわからないのでそのあたりのつじつま合わせは手動で頑張るしかない。
多少のラッパーを書く必要はあったりする。

246:デフォルトの名無しさん
20/11/14 17:07:17.70 sHUc2peo.net
趣味でやっててhyperspec引きながらやりたいことできるようにはなってきたんだけど、
ガッコで系統的勉強したわけじゃないし、自分でやっててもうちょっとええ方法あってもいいよなあとか思うんだけど、
なんかいい勉強方法ある?PAIPはイヤ。

247:デフォルトの名無しさん
20/11/15 01:33:48.20 A4lXbstU.net
SICPとCTMCPとかどうかな。
LISPじゃなくてプログラミング全般を体系的に学ぶ話になるけど。

248:はちみつ餃子
20/11/15 03:50:11.96 x+/Z2zzY.net
日本語で書かれた Common Lisp の本はほとんど絶版になっちゃってるしなぁ……。
ガチの初心者なら Land of Lisp とかもアリかと思うけど、自分でリファレンスを調べられる程度ということになると
逆にちょうどよい書籍ってあまりない感じだよね。

249:デフォルトの名無しさん
20/11/16 14:24:47.42 0hfDZfuV.net
使ってる処理系のソースを読んだり処理系を作ってみる

250:デフォルトの名無しさん
20/11/16 20:37:45.98 ui1G6s5+.net
on lisp好き
let over lamda変態チックで好き
でも今はsmalltalkerになってしまったよ

251:デフォルトの名無しさん
20/11/17 01:49:08.02 k3t+4yVm.net
lolのワクワク感はすごい、とりあえず写経したけど理解が追いついてないのでg!無し版を実装中
初心者だけどlisp関連の良書はかなりネットに上がってるよね、cltl2、onlisp,、lol、sicpなどなど
初心者だけど評判良さそうだからとホイホイ買ったのをネットで見付けてはヘコんでる

252:デフォルトの名無しさん
20/11/17 01:59:11.44 k3t+4yVm.net
(大事なことなので)

253:デフォルトの名無しさん
20/11/28 21:43:05.36 IG5x2Tcu.net
みんな、fletとかlabels使うの?
俺全然使わないんだけど。

254:デフォルトの名無しさん
20/11/29 02:14:37.33 JzQZ+ZwM.net
labelsはよく使う
fletはネストが深くなって読みにくくなるので嫌い

255:デフォルトの名無しさん
20/12/01 23:12:43.95 Ul2ITO5q.net
スキーム手習いなんですけど
前の章までしっかり理解してから読み進めてくださいとのことですが
継続渡しから急に難しく感じます
そこまでが理解できてないってこと??

256:はちみつ餃子
20/12/02 11:19:13.62 wCsCmSK2.net
>>255
私はその本を持っていないから具体的なことはわからんけど、
不慣れな初心者にとって継続渡しは実際に難しいと思う。
でも「難しい」だけで「理解できない」わけじゃないならたぶん前章まで一応の理解はできてるんじゃないかな。

257:デフォルトの名無しさん
20/12/02 12:39:58.54 2sTDa/BO.net
継続渡しスタイルに書き換える方法がわからないではなくて継続渡しスタイルに書き換える意味がわからないからかな?

258:はちみつ餃子
20/12/02 13:45:58.76 wCsCmSK2.net
ああ。 なるほど。
継続渡し形式でプログラムを書くことは実際にまず無いし便利でもないので
その点では意味不明と感じられても仕方がないことではあるな。
後の話 (第一級継続) に繋がる前振りだと思うので、
この時点ではパズルとでも思ってとりあえずこなすしかないわ。

259:デフォルトの名無しさん
20/12/02 22:18:09.20 3rT4yRJc.net
>>257
そんな感じです
例で挙げられてる渡される側の関数が何したいのかよくわからないし
多分、教育的に意図的にそうしてるのかもしれないけど
その意図がいまいちわからなくてモヤモヤするんですよね
>>258
一応追っかけることは出来るんですが
直で継続教えてもらったほうがわかりやすいような気がするのですが…
つまり、読めてないってことなんだろうなと

260:256
20/12/02 22:40:35.57 2sTDa/BO.net
俺はsicpでcall-cc出てきてもさっぱり理解できなかったけど、
onlispで継続の実装を読んでやっと理解できた。
継続でできることってのは超高性能goto(?)が使えるようになることなんだけど、
そのためには継続渡しスタイルで今までの状態(実際はクロージャだけど)の全部または一部を渡して計算をしていくんだよ。
渡されたクロージャのどれかを呼び出す事によって以前の状態に復帰できる。
みたいなことだったと思う。空覚えなんで誰か突っ込んでね。
それと本のわからんところのコードを貼れば誰か解説してくれんじゃない。

261:デフォルトの名無しさん
20/12/02 22:45:58.51 2sTDa/BO.net
超高性能gotoって書いてるのは普通の言語のgotoって同じ関数内でしかジャンプできないんだけど、
継続なら安全に関数間でもジャンプできるっていう意味。

262:デフォルトの名無しさん
20/12/02 22:48:34.44 2sTDa/BO.net
継続はわかってしまえば当たり前でどこにでも存在してるんだけど、
継続を考えたやつは本当頭いいわとおもった。

263:はちみつ餃子
20/12/02 23:20:42.42 wCsCmSK2.net
>>259
「プログラミング言語 Scheme」や「プログラミング Gauche」でもそういう手順で説明されている。
ネット上で見つかる解説でもよくあるパターン。
URLリンク(www.shido.info)
URLリンク(www.nct9.ne.jp)
ようするに定番なんですわ……。

264:デフォルトの名無しさん
20/12/03 00:08:17.53 BSRv8eBD.net
なんでも継続
URLリンク(practical-scheme.net)
はよ完成させて

265:デフォルトの名無しさん
20/12/03 12:12:09.32 vc9+WZu6.net
Landin's J operator の糖衣みたいなもんじゃ?
call-ccって.

266:デフォルトの名無しさん
20/12/03 14:15:21.78 sf+VFKLQ.net
普段cl書きなんでこのまま動くか知らんが、雰囲気はたぶん
(define call/cc (lambda (func) (func (J (lambda x x)))

267:デフォルトの名無しさん
20/12/03 19:48:43.98 1MHSKMz8.net
>>259
継続渡しの初期の用例にヒューイットのアクター理論があるように
並行性が絡むと有り難いこともあるけど
Schemeの規格にそういうのがないから
Gaucheを使ったウェブアプリサーバーにKahuaってのがあったけど
あれが継続渡しを使ってたはず

268:デフォルトの名無しさん
20/12/04 22:12:04.78 9AUT9QCq.net
エンジニアが教えるの下手くそな理由を論理的に解説してみた【教育の本質】
URLリンク(www.youtube.com)
派遣エージェントの言う事は9割ウソである理由【カモられない方法】
URLリンク(www.youtube.com)
IT業界のヤバすぎる落とし穴5選
URLリンク(www.youtube.com)
絶対にエンジニアになってはいけない人とは【ハイクラス人材】
URLリンク(www.youtube.com)
りゅうけんKENTAマナブは怪しいアフィ勢だとベテランエンジニア(笑)に言われるらしいwww
URLリンク(www.youtube.com)
【個人で稼ぐ】会社を辞める前に習得しておくべきスキル5選
URLリンク(www.youtube.com)
【聞いてください】「会社員」という働き方の本当のヤバさ
URLリンク(www.youtube.com)
サラリーマンが知らないフリーランスの真実
URLリンク(www.youtube.com)

269:デフォルトの名無しさん
20/12/07 13:18:23.95 kze+rPTU.net
結局call/ccは実装読んだ方が早い

270:デフォルトの名無しさん
20/12/08 00:25:26.96 g/rTchWW.net
そういう発想はschemeっぽくないと思う
これはコンピュータにかける魔法言語なんだからぁ

271:デフォルトの名無しさん
20/12/08 10:24:39.14 7buWiz9t.net
schemeは知らんがclでcall/ccエミュってるぞ、こういうのは勉強になる
閲覧無料の論文もたくさん出てくるし、確かrosetta code(だったか)に少し残念だけど動く実装載ってた気がする
デフォでdynamic scopeのclの方が(エミュる)のはむしろ簡単な気がする

272:デフォルトの名無しさん
20/12/10 03:16:14.79 FVBY7yTa.net
clデフォでdynamic scopeじゃないな
どういうcps実装なん

273:デフォルトの名無しさん
20/12/10 19:52:56.52 m5YUCflP.net
dr.schemeを起動したらada lavelaceが表示された。12月10日が誕生日らしい。

274:デフォルトの名無しさん
20/12/18 00:23:57.39 xE2tdWzM.net
3月にサスマンの新しい本が出ますね

275:デフォルトの名無しさん
20/12/18 00:35:54.39 wHl77nxB.net
Software Design for Flexibility
How to Avoid Programming Yourself into a Corner
URLリンク(mitpress.mit.edu)

276:
21/01/02 01:05:03.40 wp0Bo1A/.net
>>6
この冬、職場から休暇をいただいたことをきっかけに a little schemer への再チャレンジを始めました
2週間では >>6 までは進めなかったけれども、しつこくてべたな精読を今後も継続することにしました‥‥個人的な話でごめんなさい

277:デフォルトの名無しさん
21/01/02 09:30:41.51 DXffwUjS.net
頑張れ

278:はちみつ餃子
21/01/02 12:55:01.66 rf+zWHQf.net
2018 年の話題へスレ内でアンカーできるあたり、だいぶん進みの遅いスレだなぁ……
ところで先月、 Gauche の 0.9.10 がリリースされたよ。

279:デフォルトの名無しさん
21/01/03 10:49:20.27 mBVSXSJw1
DrRacket起動すると400~500Mくらいメモリ消費するんだけど
こんなもん?

280:デフォルトの名無しさん
21/01/11 12:28:40.23 evx8yw3j.net
最近Clojureをさわって思ったんだけど、コンスって必要?ただのリストじゃだめなん?

281:デフォルトの名無しさん
21/01/11 22:00:08.80 TgqHKx3G.net
最近はlistと言いつつ狭義のlist(linked)じゃなくlinked arrayな事が多いけどclosureもそれかな?(触ってないごめん
(三十年前の言語だけど)Pythonのコード読んだけどそうだったはず
計算量の議論なんかだとlinked listとarrayは一長一短ってことになってるが、アーキテクチャと殆どのデータの性質によって連結配列が実質万能なんで仕方ないね
抽象データ型としてcons/car/cdrというインターフェイスを提供してるなら十分lispだよ
consがなんでそんな大事なのかというと、普通に使われる抽象データ型の中では最も表現力が高いこと
単に自由に伸ばせるリストのようなモノでは、構文上バイナリツリーより複雑な構造は書きにくい(ポインタを駆使しない限り)
consが提供されていれば自然に平面DAGが、そしてちょっと読みにくくなる程度で任意のグラフが表現できる
化学構造やグラフをconsで扱ってるけどほんと便利だよ

282:デフォルトの名無しさん
21/01/11 23:51:15.24 TgqHKx3G.net
書きにくい/やすい、ってのは環や分岐がcarとcdrとconsだけで書けるって意味ね
これらのアクセサが提供されていない言語、例えはPythonやcではリストのインデックスに対応する参照/ポインタを明示的に取り出して記録し、アドレスを格納する必要がある
またアルゴリズムにかける時に素の型とポインタ型を区別して場合分けする必要まである
そのまま文字列として吐くのも実装しなくていいし(リンク先のインデックス表示が読みやすいとは言わないが)
PythonなんかだとオブジェクトがリッチなのでnetworkXのような巨大なライブラリを使えば木を超えた表現も自然にかけるので、一時浮気をしたが…

形式言語の分野だともう線形な文字列や二分木の括弧文法は研究され尽くしてるので、グラフ文法なんかが最近流行ってlisp系言語で論文書かれてるね

283:デフォルトの名無しさん
21/01/12 00:03:51.23 XqNkUArk.net
連投してごめんだけど、環や分岐がポインタ使わず自在に描けるのはかしこいsetfの寄与もある、って書き忘れてた(schemeはset-cdr!だっけ)
念のため

284:デフォルトの名無しさん
21/01/13 22:45:17.14 c60O+Iz7.net
>>281
興味深い内容をありがとう
ちょこちょこ遊んでいるだけなので到底そこまで使いこなせる気がしないけど、
データをプログラム中にストレートに表現して操作できるというのはよく分かる
他の言語だとデータを保持するためにわざわざクラス設計からしないと
いけないような強迫観念にかられるけど、lispはそういう気にならない

285:デフォルトの名無しさん
21/01/14 12:13:04.15 /NlgSZrU.net
データ型を定義しないのはトイプログラムだけだけどな
Lispはリストだけ使うのが通だとか善意で広めないでくれよ

286:はちみつ餃子
21/01/14 22:43:13.17 9qLPLWCT.net
(カッチリした型を中心にする言語に比べれば) 最初はラフに
書き始められるというのはあると思うよ。
でも、そのままだと千行くらいの規模でももうだいぶんキツいんじゃないかな。
人によってはコードを書く腕力 (?) というか強引に行けちゃう人もいるけど、
雑に試行錯誤できるということとそこから部品として確立するのは別の段階なので、
試行錯誤で弄ってるときと同じノリでどんどん拡大していったら
すぐわけわからんようになる。
世間で思われているよりは型定義はすると私も思う。

287:デフォルトの名無しさん
21/01/15 01:43:39.29 Hai3vgIl.net
そういう後付けのボイラープーレトにはCLOSやジェネリックよりコンパイラマクロが便利ね

288:デフォルトの名無しさん
21/01/15 21:24:11.84 6113KkR6.net
ここでいう型定義はdeftypeのことを指しているのでしょうか

289:はちみつ餃子
21/01/16 09:43:26.51 uH9KWN6j.net
Common Lisp でなら deftype とか defclass とかいったものを使うことになるんかな。
私は Scheme しか知らんからよくわからんけど。

290:デフォルトの名無しさん
21/01/17 08:06:30.53 MtDeBO+C.net
>>287
嘘でしょ
人口無能が生成した文かこれ

291:デフォルトの名無しさん
21/01/17 11:47:31.37 9ajuvsmH.net
>>290
defgeneric/methodは勢いで書き上げた触りたくないコードに機能追加するにはコード触らなくちゃならない
型の付いていない複雑なconsはどうせdestructuring-bindして振り分けるしかないんだから分けてdefmethodする利点もない
define-compiler-macroなら一切既存のコードに触れる必要は無いからすごく便利だよ
既存のライブラリに手を入れたいけど、直接書き換えるとアップグレードで無かった事にされるから嫌、って時にも活躍する
もちろんリファクタリング出来るならした方がいいけど、取り敢えず動けば良い時の話ね

292:デフォルトの名無しさん
21/01/17 12:14:47.80 fZnccXPg.net
この場合、 alist はどっち側に分類されるのかな…
個人的にはだいたい alist で済ませてるけど。

293:はちみつ餃子
21/01/17 12:16:55.56 ERThMJgw.net
Lisp 的なスタイルだとかなり短いサイクルで開発が進むので、
リファクタリングしないまま手の付けられないほどグダグダになった状態は単にサイクルを
回すのが下手なように思うんだけど。
まあ上手くいってないときでもどうにかする方法があるのはありがたい話ではあるけどさ。

294:デフォルトの名無しさん
21/01/17 12:22:48.91 16Ro+9sx.net
既存のコードには手を入れず振る舞いだけに着目して付け足して行くってスタイルはaspect oriented programmingとか言うんだっけな
まあ盲で付け足してゆく事と同義ではないが

295:デフォルトの名無しさん
21/01/17 12:36:52.37 16Ro+9sx.net
>>292
plistの方が好きだな、pprintでkey-valのカラムに並べられるし、alistが要求されれば一段flattenすれば済む
consの数も同じだし好みでは
ただvalがlistだと(a . (b c))=(a b c)とformatされてしまうので(a . ((b c))) = (a . (b c))と書いてる
aとリストのペアなので意味的にも正しいはず

296:289
21/01/17 12:38:34.26 16Ro+9sx.net
最後は(a (b c))が正しい、.が余計だった
なんかid変わってたけど289です

297:289
21/01/17 12:54:42.47 16Ro+9sx.net
真意を掴めてなかった感がある
alist-pとplist-pを定義してる、よく見るし受け入れられてるイディオムだと思う
deftypeしておくといい
すると振り分けをdefmethodに任せる事が出来る

298:デフォルトの名無しさん
21/01/17 22:27:16.25 MtDeBO+C.net
deftypeしたtypeはclassじゃないからdefmethodできない
コンパイラマクロはプログラムの意味をかえたらいかんし
パッチするなら別定義のファイルを追加でloadすれば上書きされるのでコンパイラマクロする意味0
嘘ノウハウいらないです・・・

299:デフォルトの名無しさん
21/01/17 23:38:13.35 4VqziDiv.net
>>298
そうだっけ、ごめん確認してきます

300:デフォルトの名無しさん
21/01/20 01:48:17.88 9Gv1v6nA.net
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 ) …に展開される
URLリンク(www-formal.stanford.edu)
pdf17p
evalのボトムケースでもある大事なassoc、俺にはplist版は思いつかない
evenpが欲しいところだけど算術の定義がまだだし…
clのcx^nrがn=4までなのもcaddarまで使ってるからだろうかね

301:デフォルトの名無しさん
21/01/20 01:59:40.44 9Gv1v6nA.net
ffとかappqとか見慣れない面白関数出てきて面白かった
first/restは単なるエイリアスでなくL-exp(線形リスプ?)における相似物としてちゃんと別に定義されてるとかも
あとpairがpairlisに改称した理由とか気になってる、次は1.5マニュアル読むか
小並感

302:デフォルトの名無しさん
21/01/22 02:54:51.68 GlnM3g/q.net
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とか定義しとくと便利ね

303:デフォルトの名無しさん
21/01/22 08:32:42.17 hEWi2BMh.net
jmcはラムダ教徒だったろうになあ
いくらlispが形式言語処理向けとはいえ、機械的に処理するには置換が面倒過ぎる

304:デフォルトの名無しさん
21/01/26 22:54:00.78 +x6NTk+g.net
>>301
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を使う限りは循環定義だな

305:デフォルトの名無しさん
21/01/26 23:06:50.96 +x6NTk+g.net
誤解してた
M式apply[f; args]の引数はシンボルなのでS式のapplyに渡ってくるのはfunction fじゃなくてシンボルfか
グローバルでdefunしたfなら多分呼べるはず、試してないけど

306:デフォルトの名無しさん
21/01/28 03:52:37.47 52TUUvk8.net
cons-car-cdr公理主義者への反発として最近妙に感心してしまったポエムを貼っとく
URLリンク(arxiv.org)
本当の基本関数はc、a、d、rでした
paulのon lispに載ってる(explode 'bomb) → (B O M B)がハマりそうと思い、実装してみたは良いけどなんに使うんだコレ…
楽しいからいいか

307:デフォルトの名無しさん
21/01/30 20:57:39.91 RuyxT2u7W
中学数学からはじめる微分積分
URLリンク(www.youtube.com)
中学数学からはじめる相対性理論
URLリンク(www.youtube.com)
中学数学からはじめるAI(人工知能)のための数学入門
URLリンク(www.youtube.com)
中学数学からはじめる三角関数
URLリンク(www.youtube.com)
中学数学からはじめる複素数
URLリンク(www.youtube.com)

308:デフォルトの名無しさん
21/02/06 00:01:36.05 7zAE1WPt.net
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も定義せねばならない
後はまかせた

309:デフォルトの名無しさん
21/02/12 22:14:51.72 rBgVuMm7.net
わたばさんのところ見て知ったけど
井田昌之先生のHPで
bit 1996-4、5月号、Guy L. Steele Jr.『Scheme 過去◇現在◇未来』(訳 井田昌之)
などの歴史資料PDFが読めるね

310:はちみつ餃子
21/02/15 14:15:58.52 GNSRFiac.net
Racket のメジャーリリース。
URLリンク(blog.racket-lang.org)
ついに Chez Scheme の実行エンジンを組み込んだものがデフォになった。

311:デフォルトの名無しさん
21/02/16 17:43:38.86 05vP8Ot3.net
普通のやつらを超えろおじさんのarcヲチするのにちょっとracketしてるけどフレンドリーかつ尖ってるね
どんどん尖ってゆけ

312:デフォルトの名無しさん
21/02/16 18:27:11.46 6gVrqubW.net
グラハムさんは今はBel言語では

313:デフォルトの名無しさん
21/02/16 19:02:11.29 05vP8Ot3.net
>>312
現在の俺がもしjmcだったら?とか言い出したので見限った
今ざっと目を通しても目新しいところ、興奮するところが全然ないんだなこれが
URLリンク(sep.yimg.com)
ofは便利くらいの感想しか出ない
あと整数nをnth nへオバロは、逆なんじゃないかな?
push n へオバロならforthライクに発展できるのに
おじさんは自分に求められてるのは変態テクニックやインスピレーションだと自覚しろ

314:デフォルトの名無しさん
21/02/16 19:13:16.29 RZ7vFu0i.net
>>312
グレアムの方が近いはずだが

315:デフォルトの名無しさん
21/02/16 21:26:58.99 6gVrqubW.net
>>313
言語が自分自身を書くことが出来る、ということをよりうまくやれれば
ってことでしょ
lisp1.5マニュアルを彼なりにアップデートしたいんだよ

316:デフォルトの名無しさん
21/02/17 03:29:33.90 PFWUQJwx.net
関数やマウロの実体もリストというのはだいぶん振り切れていると思うがおまえらには目新しくはないのか>bel

317:デフォルトの名無しさん
21/02/17 03:49:42.83 KZUgEKHz.net
>>316
むしろ昔ながら/手抜きlispがそんなもんでは
lit(eral)はマッカーシーのappqだし、elispは対話モードならちゃんとcarでlambdaが取れる

318:デフォルトの名無しさん
21/02/17 04:32:37.72 KZUgEKHz.net
後は語り尽くされたlisp1/2の分化の話になるのでその辺はググって


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch