Lisp Scheme Part40 [転載禁止]©2ch.net

1デフォルトの名無しさん2015/03/16(月) 13:45:52.92ID:EEYZoZ1i
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part39
http://peace.2ch.net/test/read.cgi/tech/1408017352/

■テンプレ
ttp://wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その11【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1411307361/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
http://peace.2ch.net/test/read.cgi/tech/1272469779/
【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
【魔法】リリカル☆Lisp【言語】
http://peace.2ch.net/test/read.cgi/tech/1183396621/

2デフォルトの名無しさん2015/03/17(火) 01:44:14.25ID:wiNtO9kJ
>1乙

3デフォルトの名無しさん2015/03/17(火) 09:53:16.13ID:DlMQwoSW
>>1

4デフォルトの名無しさん2015/03/18(水) 23:56:10.72ID:/VH+nDBr
ho

5デフォルトの名無しさん2015/03/19(木) 00:28:58.08ID:azHU8zeY
もー前スレおちたぁ

6デフォルトの名無しさん2015/03/19(木) 21:49:34.34ID:huDE+3Pz
そりゃ980超えたら落ちるって

7デフォルトの名無しさん2015/03/19(木) 21:50:55.51ID:gfNdMEUZ
チンコそそり立ちましたぁ!!

8デフォルトの名無しさん2015/03/19(木) 22:37:25.40ID:xkSYEtbo
OnLisp難しい
みんなどれぐらいで読めた?

9デフォルトの名無しさん2015/03/19(木) 22:45:10.30ID:vj62FvKk
読むだけなら三〇分だったなぁ(速読なんで)
理解するのは3月以上かかった orz

10デフォルトの名無しさん2015/03/19(木) 22:45:39.09ID:W/Yj+6+X
OnLisp を読んで、ユーザー定義のマクロは害悪だと、あらためて認識しました

11はちみつ餃子 ◆8X2XSCHEME 2015/03/20(金) 10:11:21.50ID:zxNcWGv0
極端なマクロを作るべきではないし実際にそれほど使われないけど、
マクロを使いたいときというのは汚いコードを隠蔽したいときだったりするので、
マクロを定義できないとたぶんもっとひどいことになる。

12デフォルトの名無しさん2015/03/20(金) 11:05:47.23ID:O5J2wnNt
On Lisp読んでmacroを害悪って感じるのが不思議だわ
使いどころを間違えると確かに非道いものになるが、使うべき所で使わないのも非道い事になるって明確に述べられているじゃん

13デフォルトの名無しさん2015/03/20(金) 11:51:10.65ID:T3pE7L+s
マクロのおかげでいちいちクオートせずに済むのが吉

14デフォルトの名無しさん2015/03/20(金) 12:15:37.76ID:tzi7z/rK
マクロあってこそ唯一無二のLisp族なのに、マクロを否定したら読み辛いだけの欠陥言語やないか〜い!

15デフォルトの名無しさん2015/03/20(金) 12:22:46.09ID:1skyWr+5
マクロなくても読みやすくね?
コードが視覚的に構造化されてるし

16デフォルトの名無しさん2015/03/20(金) 12:41:17.89ID:UxTdHBIs
>>12
OnLispの内容を、隣の同僚に説明することまで想像してください

17SCHEME餃子 ◆8X2XSCHEME 2015/03/20(金) 13:11:21.51ID:zxNcWGv0
>>14-15
構造化と言えば構造化だけどどの構造も同じように括弧で表されるのは微妙。
慣れれば読み難いとは思わないけど、読み易いというほどでもないんじゃないか。
読み易いかどうかと言うよりも許容可能かどうかという話だと思う。

どの構文にも名前 (記号によって表される名前のこともあるけど) が付いているから検索しやすいとか、
本物のマクロを使えるとか、そういうのは利点としてカウントできるから見難さを上回る利点になるけど、
簡単に覚えられる程度の決まりきった構文しか使わないという人には利点がないわけで、欠点が上回ってしまうということは考えられる。

>>10
そんなわけで、マクロを否定しつつそれでもLISPを使いたいというのは何が嬉しいのかよくわからない。
それともLISP自体が駄目と言いたいのかな?
わからないというのは言葉通りの意味で、批判とかではないよ。
わかるように是非とも説明して欲しい。

18デフォルトの名無しさん2015/03/20(金) 14:26:01.18ID:40hCSndp
カッコいいから

19デフォルトの名無しさん2015/03/20(金) 19:33:58.42ID:zrSU6lyb
理系女を引っ掛ける時の武器になるじゃない

俺「つまり、リスプで無名再帰をランダムでYコンビネーターするわけさ。実際見てみたい?」
女「うん」
俺「(*´σー`)エヘヘ、そそり立ったマクロをランダムに君のYにプス。ニップルにもプス、さあさあ、リスプリスプ」
女「リスプ・スゴー!ズコーってスゴー」

20デフォルトの名無しさん2015/03/20(金) 20:20:04.43ID:h7LYVeHC
ラテン語みたいなものだろう
知ってると箔が付く

21デフォルトの名無しさん2015/03/20(金) 20:55:26.84ID:O5J2wnNt
>>20
ラテン語はEUの大学出のインテリだったらほぼ必須と思って良かったはず
エゲレスはラテン語圏じゃないからしらん

22デフォルトの名無しさん2015/03/20(金) 22:05:05.58ID:A7MaPU0q
はっきり言ってマクロなしでもLISPを使いたい

23デフォルトの名無しさん2015/03/21(土) 06:38:20.56ID:A3oIMbrm
チンコそそり立つ奴うぜえと思ってggったら個人特定できてワロタw

24デフォルトの名無しさん2015/03/21(土) 08:30:58.58ID:DmU1FDu0
ふふふ、俺に嫉妬してるな
よし、中国五千年の秘法、少漏多接でおまえもチンコ鍛えろ

25デフォルトの名無しさん2015/03/22(日) 13:48:56.65ID:UD5BMgeo
>>15
むしろ Lisp 使うときのモチベーションがマクロ
専用エディタがなくても使う人はいるのかどうか

26デフォルトの名無しさん2015/03/22(日) 15:24:08.46ID:EgqLl3qo
OnLispにてベジエ曲線とかで詰んだ

27デフォルトの名無しさん2015/03/22(日) 17:14:41.36ID:JNKpaAnB
ショートリフの医薬品エキスパートシステムではマクロは使われてたんかいなぁ?

28デフォルトの名無しさん2015/03/22(日) 17:37:58.34ID:sE6THi50
>>27
使われてたというか、無しだと難しいでしょう
プロンプトとのインターフェイスだけはマクロの方が読みやすいのは、さすがの私でも認める

29デフォルトの名無しさん2015/03/22(日) 20:29:13.56ID:qgxjSyJi
積み木の世界は?

30デフォルトの名無しさん2015/03/26(木) 17:33:28.39ID:nOM28eq7
記号処理ベースのAIは絶滅したのだろうか。

31デフォルトの名無しさん2015/03/26(木) 21:15:18.80ID:3jWPMno2
巷で話題のDeep Learningとは対極だしね

32デフォルトの名無しさん2015/03/27(金) 07:49:53.83ID:P/37pHtr
>>22
S式単位の編集、評価が便利すぎるんだよな

33デフォルトの名無しさん2015/03/30(月) 00:47:47.89ID:Ti6GzTDJ
最近はCommon LispとSchemeの人口はどっちが多いんだろう?

34デフォルトの名無しさん2015/03/30(月) 01:29:55.42ID:YnE17X1Q
githubとかの活動状況みて、人口数だとclojureがうなぎ登りな感じする
schemeって何かするときに処理系に依存するのが多いのが厭
clって何かするときに過去のしがらみが厭
みたいな理由でclojureに流れた人なので余計にそう感じるのかも<<俺

;;;ちなみにjvmと.net(clojure cli)の狭間で同じように嫌いになりかけてる orz

35デフォルトの名無しさん2015/03/30(月) 04:41:55.03ID:Ti6GzTDJ
Javaが嫌いなのでClojureは使いたくない

36デフォルトの名無しさん2015/03/30(月) 05:26:22.68ID:yk1mvYNm
>>33
ttp://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/

しっかし改めてみて見ると、Lisp方言の中ではClojureが抜きん出てるな

37デフォルトの名無しさん2015/03/30(月) 10:26:51.41ID:gPkdujhq
clojure は Lisp の皮をかぶせた Java って感じだから、
伝統的 Lisp が好きな人はイマイチに感じるかもね。
それでも Clojure がそれだけ伸びたってことは
「伝統」が Lisp 人口を抑制する理由になってたってことだ。
具体的にどれというわけでもないけど、文法的にもコミュニティ的にも。

38デフォルトの名無しさん2015/03/30(月) 10:40:43.11ID:R7/d5mE9
ここに詭弁がある

それでも Clojure がそれだけ伸びたってことは
「伝統」が Lisp 人口を抑制する理由になってたってことだ。

39デフォルトの名無しさん2015/03/30(月) 13:03:44.37ID:O4/bZba6
Paas上にサービス作ろうと思うとたいていJVM上になるからClojureになっちゃう
ホストしてくれるところがあるならCommon Lispで書いてもいいんだけど

40デフォルトの名無しさん2015/03/30(月) 17:01:50.37ID:NYibuce/
clojure は repl のあるjavaです
だんじてlispではない

41デフォルトの名無しさん2015/03/30(月) 20:12:54.65ID:YgdRSR6f
PaulGrahamの言う大理石みたいな言語ってやっぱりHaskellのこと?

42デフォルトの名無しさん2015/03/30(月) 23:07:48.12ID:E0z7vvS1
>>40
え、どうみても Lisp じゃんか?何が嫌なの

43デフォルトの名無しさん2015/03/31(火) 14:56:40.38ID:8nbXovb7
ベクタが嫌

44デフォルトの名無しさん2015/03/31(火) 16:15:14.17ID:mK8B2Vnm
馬鹿丸出しだな

45デフォルトの名無しさん2015/03/31(火) 20:50:47.45ID:O1cF667I
俺も一々 java が顔出してくるので嫌になって clojure 辞めた

46デフォルトの名無しさん2015/04/02(木) 02:50:22.14ID:T+WMNlyT
Dot 対が無いのが嫌って人が居たな>>clojure

47デフォルトの名無しさん2015/04/02(木) 06:33:27.84ID:s2WfleIg
しばらく前に触った時は、時々エラーメッセージがまんまjavaで出てきて、デバッグし辛くて嫌になった。
今は改善されてるかな?

48デフォルトの名無しさん2015/04/02(木) 07:41:26.03ID:Q+R7YirZ
car/cdrがないなんて
オッパイとチンコがない人類みたいじゃないか

49デフォルトの名無しさん2015/04/02(木) 08:40:08.68ID:prY5HrbT
凸と凹が無いレゴブロックだよ

50デフォルトの名無しさん2015/04/02(木) 11:44:11.10ID:vfTDdwEU
確かにエラーメッセージが意味をなしてないことは多々ある
REPLでNullPointerExceptionとか言われても困るし

51デフォルトの名無しさん2015/04/04(土) 00:19:09.41ID:ot6qeumL
>>48がうまいこと言ったな

52デフォルトの名無しさん2015/04/04(土) 11:26:07.69ID:ylJbkIMW
car,cdrに相当するものは有るじゃん

53デフォルトの名無しさん2015/04/04(土) 13:22:24.64ID:ugaLmOKA
car: 吾が身は、成り成りて成り合はざる処一処あり
adr: 我が身は、成り成りて成り余れる処一処あり
cons: 此の吾が身の成り余れる処を以ちて汝が身の成り合はざる処に刺し塞ぎて国土を生み成さむ

54デフォルトの名無しさん2015/04/04(土) 16:57:43.66ID:EJsUpkUQ
list: しか善けむ

55デフォルトの名無しさん2015/04/04(土) 18:41:54.80ID:fmxizuNG
チンコそそり立ちましたぁ!!

56デフォルトの名無しさん2015/04/04(土) 20:08:23.90ID:W+B5XJ7H
そっかー。

57デフォルトの名無しさん2015/04/04(土) 20:25:22.46ID:4SWzUYUy
チンコたたない (´・ω・`)

58はちみつ餃子 ◆8X2XSCHEME 2015/04/04(土) 21:34:18.65ID:W+B5XJ7H
Common Lisp には ed あるからな。

59デフォルトの名無しさん2015/04/04(土) 21:50:15.57ID:fmxizuNG
チンコ萎えましたぁ!

60デフォルトの名無しさん2015/04/05(日) 00:33:34.90ID:XqnpqZbw
>>41
なんだろう?C/C++ のことかな?

61デフォルトの名無しさん2015/04/05(日) 04:26:19.34ID:0qV8//6B
特定の言語を指して言ってるようにも読みとれないし、
指していないものとして読んでも意味は通じると思うのだが。

62デフォルトの名無しさん2015/04/05(日) 12:28:37.93ID:XqnpqZbw
でもポール・グラハムの価値観というか美的センスは知りたいよね

63デフォルトの名無しさん2015/04/05(日) 13:18:57.52ID:eP1s4V8k
Lisper捕まえて価値化とか美的センス問いただすってどうなの

64デフォルトの名無しさん2015/04/05(日) 15:24:39.64ID:S9OEePzZ
PGの経歴考えれば、氏の美的センスに興味持つのは別におかしいことじゃないだろ

65デフォルトの名無しさん2015/04/05(日) 16:48:40.38ID:Mc1LufYO
元の文読んだら出てこない質問じゃないのかな。

66デフォルトの名無しさん2015/04/05(日) 19:07:54.35ID:0+ESVGOs
教祖が思いつきで適当こいたことを信者が一生懸命意味づけしてるみたい

67デフォルトの名無しさん2015/04/05(日) 20:16:22.22ID:jqMEIOdF
PGはセンスないと思う

68デフォルトの名無しさん2015/04/05(日) 20:20:03.29ID:jqMEIOdF
PGは経済的な感覚はするどいと思う
プログラマとして、言語設計者としてはどうかと思う

69デフォルトの名無しさん2015/04/05(日) 20:27:27.33ID:n8yu0sIB
グレアムは現実寄りの感覚を持っていると思う。
言語設計者が陥りがちな罠として一貫性とか対称性とかを過度に重視してしまうことがあるんだけど、
グレアムの場合は逆に「汚くてもこの方が効率的だ」と言えちゃうところがある。
それはそれでプログラマ、言語設計者に必要な資質だと思う。

70デフォルトの名無しさん2015/04/05(日) 20:36:24.36ID:BNV+ndU/
>>67
典型的に恥ずかしいやつだな

71デフォルトの名無しさん2015/04/05(日) 20:39:37.24ID:jqMEIOdF
>>70
教祖様べったりか。おまえ、自分の頭で考えたか?

72デフォルトの名無しさん2015/04/05(日) 20:42:20.66ID:BNV+ndU/
意味わからんだろうから少しだけ説明してやるか

おまえの評価は彼の主張内容への批判にまるでなっていない。彼という人物そのものの評価をしているだけだ。

比較して
>>69は、彼の考え方なり特性についての評価であるから問題はない

>>67
これでも恥じ入らないなら終わってるから底辺でウジウジしてろ

73デフォルトの名無しさん2015/04/05(日) 20:44:44.80ID:jqMEIOdF
だからLisperは・・・

74デフォルトの名無しさん2015/04/06(月) 03:34:53.06ID:iRkvZ+2f
グラハム師は絵かきでもあるんだが?
尊師、いやセンスも抜群であるぞよ?

75デフォルトの名無しさん2015/04/06(月) 13:38:56.01ID:24zntdu4
グレアムですとりとり

76デフォルトの名無しさん2015/04/20(月) 17:42:17.20ID:ic3Zh3EU
ちょっと見ないうちに発展してるんだな
ChickenなんてPython並みにライブラリ充実してるやん

77デフォルトの名無しさん2015/04/21(火) 22:23:55.27ID:k+lIUh1M
☆ 日本の核武装は絶対に必須ですわ。☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆

78デフォルトの名無しさん2015/04/22(水) 21:43:11.85ID:DgtUSZ4O
最初の一発をアメリカに落とすなら賛成

79デフォルトの名無しさん2015/04/26(日) 16:00:13.01ID:2npT22yp
>>77
某大統領はツーマンルールの束縛をも離れ自由に核を行使することができるようになるのですね

80デフォルトの名無しさん2015/05/09(土) 06:59:13.12ID:R7pPsL7j
pythonのdoctestに相当するものって
schemeの実装でもってる処理系ってありますか?

81デフォルトの名無しさん2015/05/23(土) 11:06:22.08ID:B3nG1+3y
SICPは糞訳だから難しいだけで
普通の入門書やで

82デフォルトの名無しさん2015/05/23(土) 12:44:35.08ID:5iWlkXmX
学生がはじめて触るプログラミング言語としてschemを想定している時点で普通ではない

83デフォルトの名無しさん2015/05/23(土) 14:04:59.31ID:CdB4mnZs
学生がはじめてさわる言語として?
は?

84デフォルトの名無しさん2015/05/27(水) 17:02:03.66ID:7qplcBoj
LispWorksメジャーバージョンアップしてたよ〜
http://www.lispworks.com/news/news34.html
Release of LispWorks 7.0
Cambridge, England, 05 May 2015

ARM版がでたり、EE版でなくても64bit版使えるようになってますね。
ただとても高いです(>_<)
64bitだと、
Hobbyist Edtion $750
HobbyistHV Edtion $1,500
Professional Edition $3,000
Enterprise Edition $4,500

Lisp生誕50周年の時に、記念価格で頑張って10万円以下で32bit Pro版買いましたが
もうムリポ

85デフォルトの名無しさん2015/05/27(水) 17:49:32.08ID:zmDBrH1G
>>84
以前お試し版でどうにもならなかったので価格に見合わんと思って捨て置いたのだけど
LispWorksのIDE日本語まともに動くようになりました?(UIで使うのよ)

86デフォルトの名無しさん2015/06/02(火) 01:25:15.07ID:y4V2Np0V
>>85
Windows版しかわからないけど、LispWorks 6.1あたりから日本語は問題なくなってるよ。
インライン入力、日本語フォントの表示など。
ただ、Shell Panelについては相変わらず文字化けするね。
(前から要望は出してたけど結局対応されてない。)

87デフォルトの名無しさん2015/06/02(火) 17:33:15.03ID:6+pzD3Ix
https://github.com/pedropramos/PyonR
Racketとpythonの混合できるって聞いて動かそうとしてるんだけど
Gentoo Linuxだと動いてくれない
ひょっとしてWindowsでしか動かなかったりします?

88デフォルトの名無しさん2015/06/02(火) 17:59:01.82ID:w187aOqK
>>86
>ただ、Shell Panelについては相変わらず文字化けするね
まだ多国語対応未対応な箇所あるのか orz
LispWorksはVSと値段かわらんから購入候補になるんで頑張って欲しいんだが。(DB必須なので必要なのはEnterprize版)
Franzは良いとは見聞きして知ってるけど零細企業で買うのは開発に必要なライセンスは2か3でなんとかなっても再配布ライセンスがちょっと躊躇する(値段が見えないので銀座の寿司屋な気分だ)

89デフォルトの名無しさん2015/06/02(火) 18:44:36.72ID:lN7QylsY
きちんとしたサポート込みで、個別の相談にもかなり乗ってくれるらしいからなぁ。
処理系の値段つーより、ある種のコンサルみたいなもんなんじゃね。
用途を説明して概算を聞いてみてもいいと思うよ。

90デフォルトの名無しさん2015/06/02(火) 18:48:14.93ID:KVObd6cl
issueとpull reqみると、osxは分からんってかいてあるけど、
作者がどの環境で動かしてるかよくわからないね。

91デフォルトの名無しさん2015/06/02(火) 23:33:13.20ID:rOXsVj7y
>>87
Gentoo Linuxだけど動いたよ
動かないってのは具体的にどんな状況?

92デフォルトの名無しさん2015/06/07(日) 03:32:03.18ID:+hGuy5f7
>>91
cd PyonR/examples/numpy_arrays
$ racket sum_arrays.py

sum_arrays.py:2:0: cpyimport: The 'cpyimport' statement is disabled.
To enable it, require the module 'python/config' from Racket and run (enable-cpyimport!)
in: (cpy-import "numpy" as :np)
context...:
/home/niitsumalocal/.racket/6.0.1/pkgs/python/cpy-importing.rkt:65:2
/usr/share/racket/collects/syntax/wrap-modbeg.rkt:46:4
standard-module-name-resolver

93デフォルトの名無しさん2015/06/07(日) 10:39:37.53ID:AwWM8qy1
>>92
そのエラーメッセージに解決法書いてあるよ

> sum_arrays.py:2:0: cpyimport: 'cpyimport' 文は無効になっている。
> これを有効にするには、Racket で 'python/config' モジュールを require し (enable-cpyimport!) を実行せよ。

というわけでこう

$ racket --eval '(require python/config) (enable-cpyimport!)'
The 'cpyimport' statement is now enabled.

$ racket PyonR/examples/numpy_arrays/sum_arrays.py
cpu time: 2197 real time: 2194 gc time: 12
[[ 5.05084018e+08 4.99867603e+08 5.02311555e+08 ..., 4.97975418e+08
以下略

94デフォルトの名無しさん2015/06/11(木) 22:16:49.32ID:XgvKq4Ru
最近流行のdeep learningだけどlispと組み合わせて何かやった研究とかないのでしょうか

95デフォルトの名無しさん2015/06/12(金) 04:54:57.92ID:GYNZ5Dwp
型つきschemeで一番まともなのはbiglooぽいけど
ライブラリが一番充実してるのはracketぽい

Racketのパッケージをbiglooで動かせないものか

96デフォルトの名無しさん2015/06/14(日) 19:10:32.03ID:mXFFHZJ9
::okey::

97デフォルトの名無しさん2015/06/14(日) 19:11:12.06ID:mXFFHZJ9

98デフォルトの名無しさん2015/06/19(金) 08:01:11.57ID:RmIQOIpq
他人の作ったJavaプログラムのバグをとりつつ
自分の使いたい機能を追加したりするなら

Scala
Clojure

どっちがおすすめ?
Javaとの融合はScalaが上っぽいけどLispになれてるのでLispの方がいい

99デフォルトの名無しさん2015/06/19(金) 08:57:20.33ID:688YE8UT
>>98
後者

100デフォルトの名無しさん2015/06/19(金) 11:01:47.02ID:tBR6vKOw
>>98
Lisp慣れしてない自分でもClojureに楽しくはまったのでClojureを押してみるなり
JVM用言語で最も短いコードで最良の結果だす言語の一つだと感じる

101デフォルトの名無しさん2015/06/20(土) 11:39:42.60ID:rk/B/nZr
>>98
後者。
Leiningen の checkout dependency が便利すぎてはげる

102デフォルトの名無しさん2015/06/22(月) 11:59:19.90ID:2Ao8Xtyy
モナドのちゃんとした定義ってあるの?
言語ごとに定義が違う気がするんだけど

103デフォルトの名無しさん2015/06/22(月) 14:13:40.72ID:FwurGF7a
モナド則はモナド則だよ。

104デフォルトの名無しさん2015/06/22(月) 20:47:07.39ID:unToOooi
関数型言語「Racket 6.2」リリース
http://osdn.jp/magazine/15/06/23/063900

 RacketはShemeから派生した関数型言語。旧名称はPLT Schemeで、バージョン5より
Racketに名称を変更した。強力なマクロシステムが特徴で、マクロを使って言語機能
を拡張でき、プロジェクト固有の新しい「方言」を作成できるという。また、Web
サーバーやデータベース、GUI、チャートなどのアプリケーションをサポートする
ライブラリも提供される。ライセンスはLGPL。プロジェクトは米国立科学財団(NSF)、
国防高等研究計画局(DARPA)、米教育省、Exxon Foundation、Microsoft、Mozilla、
Googleなどの支援を受けている。

105デフォルトの名無しさん2015/06/22(月) 23:08:50.19ID:SUvAdIcO
Racket 最強伝説

106デフォルトの名無しさん2015/06/23(火) 00:34:37.16ID:ZAN95P/B
>>104
記事読んだけど、マルチパラダイム言語って誰が言い始めたんだろ
そもそもシングルパラダイム(原理主義)な言語なんて非実用的なものの対義語なんか冠にしても意味ないと思う

107デフォルトの名無しさん2015/06/24(水) 10:17:09.07ID:fsHZ6HK+
typed-racketが変なバグ起こさなくなったの?
安心して使えるようになったのなら使ってみようかな

108デフォルトの名無しさん2015/06/24(水) 18:03:08.01ID:jBd8hVQL
Clojureと同じ文法でC++もwrapしようとしてるプロジェクトを
2つぐらいみつけたんだが2年ぐらい更新がない
JavaからC++の変換はそんな難しくないはずなんだけど
何か違う理由で頓挫してるんだろうか

109デフォルトの名無しさん2015/06/24(水) 23:03:41.63ID:+qhy7yF2
>>108
(その人達に必要な機能は)完成したからではなかろうか

110デフォルトの名無しさん2015/06/24(水) 23:46:08.20ID:PBiySlld
試しに実装してみたぐらいの気がする。
継続して使うのに作ったかは分からない。


型付きといえばshenも、18.1で型チェックが速くなったらしい。
ソースみたら、該当箇所の型が総称型に変わってた。
http://www.shenlanguage.org

111デフォルトの名無しさん2015/06/24(水) 23:50:28.07ID:PBiySlld
相互運用テストのためにakamaiがhttp2のコードをCLで書いてて、少し話題になってたね。
https://github.com/akamai/cl-http2-protocol
https://github.com/http2/http2-spec/wiki/Implementations

112デフォルトの名無しさん2015/06/24(水) 23:56:47.57ID:PBiySlld
cl-llvmってなんだろう。
https://github.com/sellout/CL-LLVM
llvmを吐く?FFI?

http://blog.cnu.jp/2012/12/11/android-gdk/
それとも、androidのjava/llvmみたいな話と同じなのかな?

113デフォルトの名無しさん2015/06/25(木) 00:00:46.68ID:1wCihy2Z
これ3年ぶりのコミットがあったのか。
https://github.com/sellout/CL-LLVM/commits/master

114デフォルトの名無しさん2015/06/25(木) 13:36:07.50ID:q+JEbLja
CL (というより動的型の言語) は LLVM の抽象度では上手く扱えないしたいして最適化できないという話もある。
GC の性能にも強く左右されるし、 LLVM よりも JVM の方が CL とは相性よさそうな気がする。

115デフォルトの名無しさん2015/06/25(木) 14:00:35.66ID:NeoIiVi2
ABCLの性能ってどうなの?

116デフォルトの名無しさん2015/06/28(日) 19:28:01.75ID:8Yznu8U0
昔,kawaからJavaを使おうとして非常に苦労した記憶が
ABCLならだいぶ楽にJavaが使えるのだろうか
Clojureは最初は楽だけどJavaのパッケージマネージャで苦労するね

117デフォルトの名無しさん2015/06/30(火) 06:09:22.32ID:OHT0M0qn
>>116
Java のパッケージマネージャって Clojure 書くのに Maven とか Gradle でも使ってるの?

118デフォルトの名無しさん2015/07/05(日) 11:29:59.98ID:dGwooAgp
一時期Clojureが過剰に持ち上げられていたけど
まったく流行らずに終わったな

119デフォルトの名無しさん2015/07/05(日) 12:29:23.07ID:Fkt4l860
ブラジャーに対抗しようとしても無駄なことだし

120デフォルトの名無しさん2015/07/05(日) 23:54:46.16ID:6U0/+Enp
clojure は、lispの対抗馬とか思ってると、 repl 起動するまでにブチ切れると思う

121デフォルトの名無しさん2015/07/06(月) 05:13:14.19ID:lUS8hza0
普通に流行ってるじゃん

122デフォルトの名無しさん2015/07/06(月) 14:46:34.49ID:Mc9Nlxok
やもえずJavaのウンコなプログラムのメンテしないといけない場合に
Clojureは便利だった

そういう制約ないならRacketが一番

123デフォルトの名無しさん2015/07/06(月) 16:16:59.97ID:VRJTYjkB
>>122
Racketの良さを教えて

124デフォルトの名無しさん2015/07/06(月) 17:47:41.11ID:Mc9Nlxok
srfiがみんな使える上に
pythonとも連携できる
jythonみたいにnumpyが動かないとかもない

125デフォルトの名無しさん2015/07/06(月) 18:34:53.65ID:VRJTYjkB
>>124
ありがとう
pythonライブラリを透過的に使えるなら便利そうだね

126デフォルトの名無しさん2015/07/06(月) 20:10:10.03ID:XAQcetl+
えっ?Clojure って流行ってるの?

127デフォルトの名無しさん2015/07/06(月) 21:13:41.58ID:4dWpMilG
少なくともメーリングリストは相当活発だよ

128デフォルトの名無しさん2015/07/06(月) 21:14:58.54ID:VRJTYjkB
自前でサーバー立てるなら何でもありだけど、実際PaaSのほとんどがJVM前提だからね

129デフォルトの名無しさん2015/07/07(火) 02:14:08.64ID:FANO5u+E
Javaでプログラム書く人達はユニットテストという概念がないらしく
csvに結果を書き出してエクセルで手作業テストを行うという謎慣習があるようだ

こういう人達の書いたJavaコードと付き合わざる得ない環境ではClojureは便利

130デフォルトの名無しさん2015/07/07(火) 05:31:59.64ID:3YG+ylqQ
JUnit…

131デフォルトの名無しさん2015/07/07(火) 13:05:55.75ID:FANO5u+E
eclipseからJUnit使ってみるとわかるけど
エクセルの方が楽

132デフォルトの名無しさん2015/07/08(水) 00:15:24.50ID:j/rYw6w7
>>129
むしろ、java以外のユニットテストツールを使ったことがない

133デフォルトの名無しさん2015/07/18(土) 20:06:26.43ID:cOkep0vN
>強力なマクロシステムが特徴で、マクロを使って言語機能を拡張でき
このLISP系でよく言われる「言語機能の拡張」って全然的を射てねーなと思う
例えばschemeのファーストクラスオブジェクト(FCO)としての継続って
言語プリミティブとしてFSO継続相当を始めから持ってない限りはどうやっても
拡張で得ることはできないし
FCOとしての継続の無い言語から有る言語へ言語機能を拡張するってことは
つまり新規にFCO継続付き言語を作るって事に他ならない
できることは結局言語に既にある機能の延長上の事だけで
言語拡張なんて大それた事は他の言語同様できやしない
「子供騙しですけど強力なマクロシステムで俺構文糖衣が簡単に作れますんで・・・」
とちゃんと書き直した方がいいね!
「プラグインモジュールを使うと言語機能を拡張できます」とかで売った方がまだ納得できると
思わないかね君たち

134デフォルトの名無しさん2015/07/18(土) 23:28:49.86ID:uE0O9hZ+
長くて読めないから3文字にまとめてくれ!

135デフォルトの名無しさん2015/07/19(日) 00:51:10.84ID:yGfbtuav
おかしなひとには
かかわらない
しらんぷり

136デフォルトの名無しさん2015/07/19(日) 05:55:05.73ID:9T0GJGKU

 か
  ん

137デフォルトの名無しさん2015/07/19(日) 06:44:26.04ID:D56BGbCW
>>133
思わない

138デフォルトの名無しさん2015/07/19(日) 06:46:11.77ID:D56BGbCW
>>133
ていうか頭悪いと思います
「言語拡張」の俺的意味からの演繹をしてるだけ

139デフォルトの名無しさん2015/07/19(日) 07:08:41.31ID:rCpqRDah
マクロ展開時になんでもできるのに何で制限があると思うんだ?

140デフォルトの名無しさん2015/07/19(日) 12:23:56.55ID:HOCsiBj3
>>133 みたいな勉強不足の人に黒板先生は本当に便利だ

http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme

> 端的に言ってしまえば Scheme は Lisp ではないです。 この2つを混同するのは味噌糞いっしょ、ってやつで、つつしむべきです。

http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/script-lang

> Lisp の不幸の1つに、
> Lisp を使わない奴に限って Lisp について語りたがる
> というのがあるんですが、今回もう1つ加わったのは、
> Lisp を知らない奴に限って Lisp を他のもの、なかでも自分の自慰行為の結果と比べたがる
> Lisp の評論をとうとうとやるわけです。

141デフォルトの名無しさん2015/07/19(日) 12:48:48.02ID:UMlSSY6R
>>133
マクロは任意の構文木から任意の構文木への変換であって
どんなプリミティブが用意されるかは言語の戦略で決まること
レイヤーの違うことを関連付けて語るのはやめてちょうだい

142デフォルトの名無しさん2015/07/19(日) 13:33:11.61ID:4YSiYgLI
>>140
その理屈でいくなら、CommonLisp も Lisp ではありませんね

143デフォルトの名無しさん2015/07/19(日) 13:42:12.63ID:HOCsiBj3
>>142
それと >>133 とどんな関係が?

144デフォルトの名無しさん2015/07/19(日) 13:58:30.31ID:4YSiYgLI
>>143
Lisp と CommonLisp を混同しながら、Scheme はLisp ではないと主張ている人の意見はほどほどにして聞きましょう

145デフォルトの名無しさん2015/07/19(日) 14:18:17.54ID:HOCsiBj3
>>144
自身のLispの定義を明らかにせずにCommon Lispは違うって言われましてもw
でもCommon LispがLispでないんなら、なおさらSchemeでLispを代表させるような論が成立しないのは同意できるんでないの

146デフォルトの名無しさん2015/07/19(日) 15:30:05.25ID:4YSiYgLI
>>145
まず、Lisp は CommonLisp ではない
Lisp は Scheme ではない

次に
ttp://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf
この↑Lisp1.5 は Lisp であるとする (おそらく、誰も異議をはさまないでしょう)

その上で、CommonLisp は Lisp であると仮定する (つまり、Lisp1.5 と CommonLisp程度の差があっても Lisp の一部であると仮定する)
当然、SchemeはLispである

逆に、SchemeはLispではないと仮定する (つまり、SchemeにもLisp1.5にもないモノがあればLispではないとする)
package にintern できる symbol がある CommonLisp は Lispではない

CommonLisp 側の言い分としては、CommonLisp はSchmeと同じくLisp系の新言語です
(Common Lisp is the modern, multi-paradigm, high-performance, compiled, ANSI-standardized, most prominent (along with Scheme) descendant of the long-running family of Lisp programming languages. )

Confusing Lisp and Common Lisp is permissible once in a human life. です

個人的には、マクロやシンボルが無くてもLispと呼ぶべきだと思います

147デフォルトの名無しさん2015/07/19(日) 16:16:48.77ID:heZn3Xco
>>140
このKURODA Hisaoって人が書いてる他のページも見たが
Abstract Syntaxの概念やこれを設定する意義を理解できない人がSemanticsについて語っても全く説得力がないね
それにSchemeの単一name space批判を自然言語での文脈依存性を持ち出してるが
自然言語の柔軟さというかいい加減さを至上の価値とするのならば所詮は知性ゼロ・常識ゼロのコンパイラやインタプリタですら処理できちゃう
普通のプログラミング言語なんてどれも失格、もちろんCommon Lispもね
理論や論理学について良く判っていない人間ほどFregeみたいな「計算機と深い関係があると世間で言われている」哲学者の名前を出したがる

148デフォルトの名無しさん2015/07/19(日) 16:17:03.59ID:OiytaaWT
 わりと
   どうでもいいよね〜                   ね〜♪
                         _ ‐..::  ̄ ̄ ::::... 、
              . ィ            r'::/ ::ィ:::::::::::j:::::::ヽ::::\
,._.._ .......、._    _ /:/l!            | ::|::/ |::::::::∧:::レ::l:::| :::::rヘ
ヽ :~""''.>゙' "~ ,、、''‐'、|          l ::仏_ノヘ:/ ー- ハ:::!::::::|::::i
 ゙、'、::::::ノ:::::::_,.-=.  _〜:、          /::::リy=ミ ' ィ=ミ /:::::!::::/:::::!
  ``、/:::::::::__....,._ `゙'Y' _.ェ-、..._      |::::{xx     xx/::::::「)'|:::::::|
  ,.--l‐''"~..-_'.x-='"゙ー 、`'-、      lハ:仆 ..._ヽフ /:::: /´ |:::::::|
 "   .!-'",/  `'-‐'') /\ `      Y::::ソ勺 7イV_  !:::::::!
  .-''~ >'゙::    ‐'"゙./  ヽ.    __  |::/ 爻___ん'´ッ'⌒ヽ! :::::!
    //:::::       ',        (__,、\/ /‐―一弋{、  /  ̄_)
   ' /:::::       .:';          \ ' {      :::\   /~::!

149デフォルトの名無しさん2015/07/19(日) 17:56:45.41ID:D56BGbCW
チンコも関係ないもんねぇ

150デフォルトの名無しさん2015/07/19(日) 17:57:39.68ID:KxDpt4xY
これで133も満足だね

151デフォルトの名無しさん2015/07/19(日) 18:28:12.53ID:yGfbtuav
確かに言語拡張でarduinoと連携してドローンを自動航行できますとか言えた方がかっこいいよな
方言作れるとか書かれてもLisp界隈の事情知らん人間にゃ意味不明だし

152SCHEME餃子 ◆8X2XSCHEME 2015/07/19(日) 20:49:45.79ID:bZkSJoy2
>>151
バインディング書けば言語に関係なく出来るだろ。
その手のライブラリがたくさんあるとか、
コマンドひとつで導入できるエコシステムがあるとかならアピールポイントになるとは思うけど。

153デフォルトの名無しさん2015/07/19(日) 22:15:40.89ID:+t5BUUhH
言語は大きい会社や団体が開発してることがほとんど。なので妙な政治意図で故意に機能が削られたりが良くある。マクロありとこういうのは無視出来る。だいたいは誰かが便利なマクロを公開してくれる

154デフォルトの名無しさん2015/07/20(月) 00:59:43.37ID:jCSJmRBw
なんで誰もcl-contを持ち出さないんだ

155デフォルトの名無しさん2015/07/20(月) 01:22:41.63ID:8KYV1D+J
だって、>133の言い掛かりと言語レベルでの継続の必要性とは、まるで関係がないんだものw

156デフォルトの名無しさん2015/07/20(月) 02:49:25.74ID:kupXshGu
フル継続の後付けが難しいのは事実だろ。
cl-cont も Scheme に比べればモドキに過ぎないしな。

そんでもって >>133 は継続は例に出しただけで、
マクロによる拡張が容易であっても言語が持つべきプリミティブの選択が重要だってことじゃないのか?

157デフォルトの名無しさん2015/07/20(月) 17:42:45.96ID:aIRgWq4T
長々書いてるけどマクロでシンタックスを拡張できてもセマンティクスは変えられないってこと?
そりゃそうなんじゃない?この手の話の根はチューリング完全話と一緒だよね
機能拡張という言葉はセマンティクス拡張と同義ではないよなあ

158デフォルトの名無しさん2015/07/20(月) 20:43:14.25ID:ysx1EkA6
それはもう見ているものがLispのマクロによる拡張性ではなくなっている

159デフォルトの名無しさん2015/07/20(月) 21:51:34.43ID:d8TisZYV
特殊形式以外のマクロを使わないという選択

160デフォルトの名無しさん2015/07/20(月) 23:07:56.79ID:kupXshGu
言語の意味論とシンタクス拡張はレイヤが違う話だよ。
DSL は言語の意味論を変えはしないけど系を作ることは出来る。

物理法則は変えられないけど、物理法則の範囲内でサッカーのルールを定義したとして、それが無意味って言えるか?

161デフォルトの名無しさん2015/07/21(火) 18:19:47.73ID:3UOplv+P
上の方の人と偶然被ってるけど、質問。
schemeのdefine-syntaxって何ですか?
defineじゃダメなの?

162デフォルトの名無しさん2015/07/22(水) 02:27:20.21ID:ta5d120D
Scheme のマクロは式の評価の前に展開される。
ものすごく単純化して説明すると処理されるタイミングが違うの。

163デフォルトの名無しさん2015/07/22(水) 10:24:48.10ID:4IMBgQFd
>>161
マクロなら可能だがdefineでは定義不可能なケースを上げておく

defineで定義された関数(procedure)の適用では、まず全ての引数が評価されてからその結果が関数bodyに渡されて関数の結果が決まる。
もし、全ての関数を評価せずに前から必要な分だけ評価する関数を書きたい場合、defineでは無理。その場合はdefineは-syntaxなどをつかってマクロを定義することになる。

マクロは
>>162が述べているように第一段階としてSchemeのS式を生成し、第二段階でその生成されたS式を評価するわけだが、第一段階ではマクロの引数は評価されない点が重要。
それによって、defieとは異なり一部の引数をのみ評価することが可能となる。

or関数はその一例だな
もしdefineでmy_orを定義しようとすると全ての引数を評価するという無駄な関数となるわけだ。
もしaがtrueなら
(or a b c d e)でb以下は評価不要
が(define my_or ……)とすると
aからeまでを必ず評価してしまう

164デフォルトの名無しさん2015/07/22(水) 10:26:49.67ID:TPXSOrgT
>>163
補足
だからmy_orはマクロで定義するというわけな
どうだ?
チンコそそり立つほどわかったか?

165デフォルトの名無しさん2015/07/22(水) 10:28:22.27ID:TPXSOrgT
>>163
訂正
もし、全ての関数を評価せずに
もし、全ての引数を評価せずに

166デフォルトの名無しさん2015/07/22(水) 13:29:11.06ID:wcjgZ6Dx
>>162でスゲーわかった気になったのに、>>163-164で全然わからなくなりました。
defineでも問題なさそうだけど。

(define my_or1
(syntax-rules ()
((_ a b) (or a b))))

(define-syntax my_or2
(syntax-rules ()
((_ a b) (or a b))))

(my_or1 #t (begin (print "!") #f)) ===> #t
(my_or2 #t (begin (print "!") #f)) ===> #t

167デフォルトの名無しさん2015/07/22(水) 21:13:51.17ID:ta5d120D
>>166
試した処理系は何? それは仕様上未定義だよ。
期待した動作をするように見えてもただの偶然。

168デフォルトの名無しさん2015/07/23(木) 00:05:16.72ID:a8nLYx9Z
全部(lambda()〜)で囲って遅延評価すればなんでもできるよ
SICPでマクロが無くても問題なかったのはこのおかげ

169デフォルトの名無しさん2015/07/23(木) 01:48:45.97ID:6c5WF/G8
>>167
gaucheっす。r[567]rsによると、my_or1はこう呼ぶべしと理解したけど、あってます?
(define my_or1 (syntax-rules () ((_ a b) (or a b))))
(let-syntax ((my_or1 my_or1)) (my_or1 #t (error "!!")))

変数と構文キーワードを区別しなきゃならない理由が、いまいちピンときません。
フォームの先頭が(lambda)を評価したものと(syntax-rules)を評価したもので
区別出来そうな気がします。(実際Gaucheはそうしてるから>>166で動いてる?)

170デフォルトの名無しさん2015/07/23(木) 02:53:10.55ID:kIXXXoPi
>>169
構文は第一級ではない。 (実行時に値として扱える存在ではない。)
「マクロ展開フェイズ」が完了してから「式の評価」を開始するので、実行時に束縛するのでは遅すぎるんだよ。

式ひとつごとに「展開」「評価」をする処理系でフェイズの分離を有耶無耶にしている処理系だと区別を曖昧にしてもなんとかなるのかもしれないが……
それは実装方針のひとつとしてそういうのもありえる、可能というだけ。

171デフォルトの名無しさん2015/07/23(木) 03:19:31.89ID:6c5WF/G8
>>170
>構文は第一級ではない。 (実行時に値として扱える存在ではない。)
なるほど、疑問氷解です。

172デフォルトの名無しさん2015/07/28(火) 17:18:38.84ID:HAkHyXxd
.oO( The Little Prover を読んだ香具師がスレの流れを作ってくれる予感 )

173デフォルトの名無しさん2015/07/29(水) 02:05:40.80ID:CRqVMe5R
なぜ自由なlispより不自由なjavascriptが流行ったのか

174デフォルトの名無しさん2015/07/29(水) 02:07:56.15ID:c7scFQol
自由度なんてマニアしか求めてないから

175デフォルトの名無しさん2015/07/29(水) 08:09:17.38ID:F/xNpz+P
ウェブブラウザから使えるのが lisp だったら流行ったんじゃないの?
とはいえそこに lisp が採用されない理由も結局は一緒か。

176デフォルトの名無しさん2015/07/29(水) 20:06:45.42ID:amFWHOPf
IE4やNN4で実装されたスクリプト言語がLISP系だったら…

少なくともfirefoxのnoscriptアドオンは不要だったろうな

177デフォルトの名無しさん2015/07/29(水) 22:07:49.45ID:Gvu0+gpo
逆に考えるんだ、
「lisp でWebブラウザを作ればいいや」
と考えるんだ

178SCHEME餃子 ◆8X2XSCHEME 2015/07/29(水) 22:20:24.82ID:w5hc2Qux
WebAssembly が一般的になれば Lisp にもワンチャンあるで

179デフォルトの名無しさん2015/07/30(木) 00:29:45.75ID:5uamD/zW
Javaがダメ言語とあの時点で判明してればなあ。
当初の予定通りschemeが組み込まれてたに違いない。

180デフォルトの名無しさん2015/07/30(木) 00:35:22.22ID:W1QWz47r
emacs で Webブラウジングが出来るんじゃ無かったか。

181デフォルトの名無しさん2015/07/30(木) 00:51:21.10ID:bNQ7YEFA
技術系のドキュメントとかあまり凝った事してないものしかまともに見れんよ。

182SCHEME餃子 ◆8X2XSCHEME 2015/07/30(木) 01:08:52.34ID:txS92Tc7
Emacs に Webkit 載せたりしてるのもあったぞ。
Emacs 側から Webkit をどれくらい操作できるのかは知らんけど。

183デフォルトの名無しさん2015/07/30(木) 03:10:36.45ID:qAED+lXR
ブラウザ競争っていかにCSSに意図通り対応してるかの勝負だし
サーバサイドならemacsでもjavaでも変わらん

184デフォルトの名無しさん2015/07/30(木) 22:45:29.66ID:e7NCTD1Y
いや javascript が動かないと。

ああ、其処を lisp にするって話だったか。

185デフォルトの名無しさん2015/07/30(木) 22:47:36.32ID:lQHnBAth
いまだに、javascript が scheme だということについて納得できない

186デフォルトの名無しさん2015/07/31(金) 01:38:43.67ID:aJuGxMgm
第一級の継続も末尾呼び出しの最適化もないしねぇ

手続きが無条件でクロージャになるってのがまあ当時としては特徴的ではあったけども

187デフォルトの名無しさん2015/07/31(金) 15:13:29.83ID:Dkg4afbG
CLみたいな余計な装飾子が無いところはschemeと考え方が近い
末尾最適化が標準のluaのがよりschemeに近い
継続は第一級にする必要ってあんのかな
使い所が難しいし言語に例外機構が備わってればいらないし
jsはライブラリ覚えるだけでもしんどい

188デフォルトの名無しさん2015/08/01(土) 07:34:04.74ID:qWCT4wa1
今JSがコールバック地獄になってるからこそ継続がほしいんじゃん。フル継続じゃなくて限定継続でもいいから。

189デフォルトの名無しさん2015/08/01(土) 10:30:34.72ID:c0YSrVc+
javascriptのように通信が頻繁に行われる環境で継続なんか入れたときに、例えば途中でブラウザを切ったときの継続がどうなってるのか考えるとワケ分からなくなる
schemeの継続ですら、資源を使いまくってるサーバが落ちたときにリソースのclose操作とかきちんと行われるのか不安になる

190デフォルトの名無しさん2015/08/02(日) 01:56:02.37ID:MF9TQU9s
>>188
jsはクロージャがあるからCPS方式で継続もどきは作れるんじゃないの
インスタンスが途切れちゃうなら継続使っても同じだし

191デフォルトの名無しさん2015/08/03(月) 18:40:37.91ID:zmSfrGKJ
>>190
CSP?

192デフォルトの名無しさん2015/08/03(月) 23:15:17.18ID:TaloxJI9
継続渡しはCPS
セントラル警備保障はCSP

193SCHEME餃子 ◆8X2XSCHEME 2015/08/04(火) 03:41:56.42ID:T8IrycSA
JavaScript 処理系の Rhino は第一級継続を持ってる。 実在する以上、言語処理系レベルでは可能ってことだろ。
だけど、 Scheme 処理系でも外部のライブラリ (バインディングとか) を通過したところで継続が途切れてしまう制限を持っているものがあることからもわかるように、
継続が処理系の外の世界をまたぐのは難しいんだわ。
(※参考 Gauche のドキュメント http://practical-scheme.net/gauche/man/?l=jp&p=call/cc )

JavaScript はアプリケーションに組込んで使うタイプの言語だから、当然、外の世界とのやり取りはあたりまえで、
そこに第一級継続を持ち込んでも途切れまくりであんまり役に立たんのじゃないか?

Gauche のドキュメントには限定継続の利用を勧めるようなことも書いてあるけど、
フル継続で途切れてしまうところを越えられるって意味ではなくて、
継続の範囲を明確に書けるから変なところをまたがないように注意しやすいって意味だと思う。

194デフォルトの名無しさん2015/08/05(水) 21:47:02.17ID:PeKQT7A5
プログラミングGauche第2版マダー

195デフォルトの名無しさん2015/08/05(水) 22:50:49.33ID:Vg22nrpW
そういやGNU標準言語?だかのはずのguileって使われてるんだろうか

196デフォルトの名無しさん2015/08/06(木) 08:01:11.84ID:e5V4W5I+
待ちguile

197デフォルトの名無しさん2015/08/06(木) 22:25:04.23ID:JI2t4Gst
GNU自体微妙な団体だし
そんな団体の標準になられても気持ち悪い

198デフォルトの名無しさん2015/08/06(木) 23:00:12.98ID:lTjoYGg1
などとにわかschemerが申しております

199デフォルトの名無しさん2015/08/06(木) 23:14:11.05ID:oTKkGTU7
guile って死んでると思ったけど、
結構頑張ってんよ

200デフォルトの名無しさん2015/08/06(木) 23:18:25.94ID:FMimP/gx
unicodeサポートが微妙だったのはもう昔の話なのかな?なんかそれで使うのやめた事がある

201はちみつ餃子 ◆8X2XSCHEME 2015/08/07(金) 01:10:45.06ID:p6pvn2Md
アプリケーションに組込むなら小さい実装の方がいいよな。 Guile は豪華すぎると思う。
かといってリッチな実装というカテゴリだと Racket が強いから Guile は微妙ということに……。
Guile の強みって何?

202デフォルトの名無しさん2015/08/07(金) 01:54:27.51ID:JnTUt1UO
javascriptでscheme組もうと思う
クロージャあるし継続なしで末尾再帰ぐらいなら結構楽勝かな

203デフォルトの名無しさん2015/08/11(火) 14:35:52.92ID:3YusrhQW

204デフォルトの名無しさん2015/08/11(火) 16:13:30.65ID:XEwrhpMG
>>203
ワラタ

205デフォルトの名無しさん2015/08/12(水) 16:29:28.90ID:lGV/dlKr
racket で raco を使って exe 化したらやたらサイズがデカいのが出来たんだけど、
もっと小さくできないものなん?

206デフォルトの名無しさん2015/08/12(水) 23:13:39.90ID:G8qcToBK
自作処理系だと4KBセクタに収まるようにできる
512バイトブロック単位だが
けどschemeコアも含めたりすると結局数十KBにはなる
イメージまるごとexeにするタイプなら
参照切りまくれば小さくなるんじゃないの

207デフォルトの名無しさん2015/08/16(日) 22:04:26.74ID:AZvBPnTZ
Biglooの生成するcコードは恐ろしくシンプル

208デフォルトの名無しさん2015/08/22(土) 09:25:17.20ID:F2lrgiaF
そっかー。

209デフォルトの名無しさん2015/08/25(火) 18:08:56.22ID:8WHoFpvi
初めまして。
早速ですが教えて下さい。
下のcall/ccの定義を解説できますか?

(define call/cc
(lambda (k f)
(f k (lambda (dummy-k result)
(k result)))))

210はちみつ餃子 ◆8X2XSCHEME 2015/09/05(土) 21:46:57.65ID:H6CjR/B1
例えば RnRS の call/cc を使ってこういうのを書いたとする。

(define (foo x)
(+ 3
(call/cc
(lambda(cc)
(if (> x 3) (cc (+ x 1)) x)))))

(display (foo 1)) (display (foo 5))

継続とは何かというのを綺麗に説明するのは難しいけど、
「残りの計算」という言葉で説明するのが一般的だね。
この例でいえば call/cc を呼出された後にするはずの計算、
すなわち「 (+ 3 」が変数 cc に入っている継続。
call/cc を呼出している外側全てと言い換えてもいいかもしれない。
(字句上の外側ではなくて実行時の外側。)
で、 >>209 の言うところの call/cc (名前がまぎらわしいから
ここでは call/cc* と変える) は残りの計算を陽に引数として
渡すバージョンということだと思う。
最初の例を call/cc* で書き直すと

(define (foo* x)
(call/cc*
(lambda(x)(+ 3 x))
(lambda(cc f)
(if (> x 3) (cc (+ x 1)) (f cc x)))))

(display (foo* 1)) (display (foo* 5))

となる。
「(+ 3」の計算を (lambda(x)(+ 3 x)) というクロージャにして渡しているのが
わかるかな。

211デフォルトの名無しさん2015/09/05(土) 22:53:19.39ID:6dKeptfV
>(+ 3 (call/ccc
式中の副作用(call/cc)は評価順序不定の罠が
判ってると思うけど一応

212デフォルトの名無しさん2015/09/05(土) 23:07:18.97ID:6dKeptfV
ついでにこの式の評価順序ってR6RS以降で何か変わったのかなーと思って調べたら変わってないっぽいね
式を多用するlisp族ではついつい書いてしまうからどっちかに決めた方がいいと思うんだけどな
継続は一見副作用に見えなかったりするからややこしい
そういや評価順の問題ってトップレベルにもあったなあ

213デフォルトの名無しさん2015/09/06(日) 07:10:29.28ID:dcG52JSd
横から初心者が何だけど、
>>209の定義のdummy-kって別に無くてもよさそうなんだけど、何か必要な理由って有るのかな?

214デフォルトの名無しさん2015/09/06(日) 11:19:24.63ID:EuTLUxQt
>>210
その例だと継続使っても使わなくても結果が変わらないので微妙。
fを適用する先も間違ってるし。

こんな感じでどうでしょう。

(define (foo x)
(call/cc
(lambda(cc)
(+ 3
(if (> x 3) (cc (+ x 1)) x)))))

(define (foo* x)
(call/cc*
(lambda (x) x)
(lambda (cc f)
(let ((ncc (lambda (x) (cc (+ 3 x)))))
(if (> x 3) (f ncc (+ x 1)) (ncc x))))))

215デフォルトの名無しさん2015/09/06(日) 11:26:17.13ID:EuTLUxQt
連投すまぬ。
引数の名前がきちんと対応していなかったのでfoo*を書きなおした。

(define (foo* x)
(call/cc*
(lambda (x) x)
(lambda (f cc)
(let ((g (lambda (x) (f (+ 3 x)))))
(if (> x 3) (cc g (+ x 1)) (g x))))))

216デフォルトの名無しさん2015/09/06(日) 17:16:35.78ID:AiMOxC1Q
>>215なら素直に理解できた
要するに、これは継続渡しのスタイルの中で使えるcall/ccってことか

あと、さっきの例をちょっといじって
(define (foo& x k)
(call/cc*
k
(lambda (f cc)
(let ((g (lambda (x) (f (+ 3 x)))))
(if (> x 3) (cc g x) (g x))))))

(foo& 1 (lambda (x) (display x)))
としたほうがわかりやすいかもしれない

217デフォルトの名無しさん2015/09/28(月) 20:36:46.42ID:uH2NkENy
LFE(lisp flavor erlang)使ったことあるかたいますか?
どの辺が問題なんでしょうか。
バックエンドがerlangというのは大きいメリットだと考えるんですが。

218デフォルトの名無しさん2015/09/29(火) 00:25:57.14ID:jGfSnnbY
>>217
使われない理由っていうことでいうと、↓のような感じかな。
読み直したら全面的にdisってるが、おもちゃとしては面白いと思ってる

・開発リソースが少ないのでおもちゃの域を出ない
特に、Common LispもしくはClojureを置き換えるほどのライブラリ・
成熟度・勢いは無い。

・そんなに速くない

・Erlang/BEAM自体の需要が少ない
Erlangスレでも書いたことがあるんだが、開発の現場でErlangを本当に必要とする
場面というのは少ない。良くも悪くもフォーカスを絞った言語だから。
エラー処理が楽とかいう人も多いが、乗り換えるほど大きなメリットでは無い
また、現実問題として、システム全部をBEAM上に載せる必要は無い。
一部だけErlangで書けば良いし、そのために
微妙な成熟度の微妙なLisp方言を入れる必要性ってあんまり感じられない

なお、Elixirで騒いでいる人たちも、Erlang系だからってよりはRubyっぽい
関数型言語っていう表面的な特徴で一時的に騒いでいる人の方が多い

・名前がダサい。これは馬鹿にできない

219デフォルトの名無しさん2015/09/29(火) 06:19:23.89ID:nAejDDAX
>・そんなに速くない
これはBEAM特有の問題なんだよね、数値計算がちょっとでもはいるととても遅い
非同期IO処理だけさせるような所だとElixir含めてErlang系はものすごく便利だけど読める人が少ないし

2202172015/09/30(水) 12:49:12.74ID:dQB3jeSs
>>218 さん、
>>219 さん、
ありがとうございました。

Common Lispのライブラリが使えれば状況良くなるのかなぁ
※Lispはこれから勉強するのでどの程度違うものかは判っていなくて言っています。

221デフォルトの名無しさん2015/10/06(火) 06:05:05.21ID:fg1OrsOi
haskellのlhs2texみたいなのって
LispやSchemeにはないの?

222デフォルトの名無しさん2015/10/11(日) 20:09:11.90ID:03dbVZHf
あかんなぁ
俺、馬鹿になってきた
年ってやつかなぁ
Common Lisp始めたけど、あれこれの関数名をすぐ忘れる。
駿馬も老いては駄馬なんとかか

223デフォルトの名無しさん2015/10/11(日) 20:09:38.43ID:03dbVZHf
因みにことし還暦な

224デフォルトの名無しさん2015/10/12(月) 12:06:44.75ID:traP+X+b
>>223
不惑や知命でもぼける人はぼけちゃうからねぇ

225デフォルトの名無しさん2015/10/13(火) 07:25:53.71ID:g15eXpvx
Schemeでsyntax-case使うとき、マッチングの第一要素にkって名前をよく見るし使うけどこのネーミングになんか由来とか理由とかあります?
なんで?って聞かれて答えられないんですが

226はちみつ餃子 ◆8X2XSCHEME 2015/10/13(火) 08:36:38.14ID:4fZWo+Bs
ソースがあるわけじゃないが自分は keyword の k だと思ってた。
仕様の中にある例でも k 使ってるからほとんどの人はそれに倣ってるだけだろうけど。

227デフォルトの名無しさん2015/10/13(火) 09:30:22.70ID:3mL35rpK
i と j じゃ整数の印象が強いんで、次の k を使ってるだけかと思った

228はちみつ餃子 ◆8X2XSCHEME 2015/10/13(火) 10:41:06.68ID:4fZWo+Bs
このあたりの例で使ってる i はたぶん identifier の i じゃないかと思う。
http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-13.html#node_sec_12.7

t は疑問の余地なく temporary だな。 p は pattern で e は expression ってところか。

229デフォルトの名無しさん2015/10/13(火) 20:14:54.52ID:gIZRbrc0
>>228
scheme限定のイディオムなんかね
clojureだと
(defn hoge [coll] (brabrabra))
coll(collection)をわたすんだぞーってイディオムになってるみたいな?

230はちみつ餃子 ◆8X2XSCHEME 2015/10/13(火) 21:10:40.41ID:4fZWo+Bs
パターン変数には全部頭に ? を付けるとかいう流儀もあるし、
そんなに確立したものではないと思うけどね。

231デフォルトの名無しさん2015/10/23(金) 16:08:32.51ID:vFqEchXB
マクロの空をつらぬいて

232デフォルトの名無しさん2015/10/23(金) 18:13:51.87ID:vFqEchXB
継続にkを使う人達もいる

233デフォルトの名無しさん2015/10/23(金) 19:54:46.64ID:PxOWJO4j
>>232
constantな値にkFoo,kBarってつける習慣もあるからcontinuationにkプレフィックスはそんなに違和感持たないなぁ
class指向な処理系で classって名前使えないからClass klass = someObject.class って書くようなものかと思うのであるよ。

;;; 実は歌の続き?としばらく悩んだ

234デフォルトの名無しさん2015/11/01(日) 09:01:12.26ID:FL14q5P6
理解重視でオレオレlisp処理系をhaskellで書いててこれを改良しようとしてます
環境は[(名前,値)]というわかりやすい実装でラムダ式本体部を引用するとこんなのです
let env' = (zip param args) ++ closure ++ env in
last $ map (eval env') body
これって開発言語のスタックを使った実装になりますよね?
このコードはapplyの一部で、evalとapplyの相互再起の中の1コマなのですが
よく末尾再帰とかいいますがああいうのはどうやって判定するのですか?

235デフォルトの名無しさん2015/11/06(金) 12:34:46.91ID:R0CwBCQp
そろそろ何か書き込みないとスレが落ちる?

236デフォルトの名無しさん2015/11/06(金) 15:41:26.45ID:vgByJdCj
それは大変だ

237デフォルトの名無しさん2015/11/06(金) 19:56:44.02ID:FxVaFUyP

238デフォルトの名無しさん2015/11/06(金) 22:19:04.69ID:dYcAh74V
schemeはいい線行ってたと思う
不幸なのはほとんどの機能がjavascriptで足りてしまったこと
大多数の人は末尾再帰すらないjavascriptでいいと言う
繰り返し処理と言えばループしか脳から出てこないんだから
再帰はおろか末尾再帰なんか知らないだろう
再帰処理もスタック構造のコンテナとループで同じことができるんだから
実際知らなくても困らない

239デフォルトの名無しさん2015/11/07(土) 00:27:31.67ID:iMLfUYTc
JavaScriptの末尾再帰はもうすぐ実装されるし高階関数もずいぶん前からあるが

240はちみつ餃子 ◆8X2XSCHEME 2015/11/07(土) 01:25:53.28ID:OLp/9/w8
WebAssembly が一般的になったら JavaScript の勢力は (クライアントサイドでは) 過去の資産を除いてフェードアウトしそう。
そのときこそ Scheme の復権が狙えるかもしれないぞ。

241デフォルトの名無しさん2015/11/07(土) 11:42:14.37ID:Lam93S6q
>>234
末尾コンテキストを判定する
末尾コンテキストの実行時はフレームで確保したスタックは使われない
よってその直前で削除してしまえるから関数呼び出し等でもループに置き換えられる
(define a (lambda (x y) (b x y) (a x y)))
の最後の(a x y)は末尾コンテキスト
最後のa呼び出し前のx yの引数の積み上げが完了した時点でaのフレームは削除できる
削除した後aを呼び出すとまた同じフレームレベルでaの処理が開始する

242デフォルトの名無しさん2015/11/07(土) 12:03:06.20ID:Lam93S6q
末尾コンテキストの伝播
tを末尾コンテキストとする
(lambda ()・・・t)
(if test t t)
(begin ・・・t)
(lambda()・・・・t))
組み合わせると次のように末尾コンテキストが伝播する
(lambda ()・・(begin ・・・×)・・・(begin ・・・(if test t t)))
×は親が末尾コンテキストでの実行でなければ子も末尾コンテキストにはならない事を示す

243デフォルトの名無しさん2015/11/07(土) 12:15:41.27ID:Lam93S6q
関数適用の末尾コンテキスト
上で(a x y)を末尾コンテキストと書いたが
より正確にはtの呼び出し時点が末尾コンテキストとなる
表記的には(t 引数)となるがt自身がいつ評価されるかはschemeでは規定されていない
よって処理系の都合順にt x yを評価した後、tの呼び出し前に末尾コンテキスト処理(フレーム削除等)が発生する

244デフォルトの名無しさん2015/11/07(土) 12:37:03.29ID:Lam93S6q
末尾コンテキストが移動する構文
(set! var exp)
(while test body)
set!はvarがフレーム内変数ならexpの評価、フレーム外変数ならvarをexpの結果で破壊した時点が末尾コンテキストになる
whileはtestで偽になった時点かbody内からbreak等で抜けた時点だが、
そもそもschemeでのループ構文は末尾再帰の構文糖衣として定義されることが多く、この限りではない

継続呼び出しの末尾コンテキスト
継続呼び出しは継続を保存した位置に移動すると共に環境も入れ替わるため
末尾コンテキストの対象外となる(考慮しなくて良い)

245デフォルトの名無しさん2015/11/09(月) 10:47:59.41ID:zOMtLBxM
http://tech.grammarly.com/blog/posts/Running-Lisp-in-Production.html
割と知られている英文法チェッカーがCommon Lispだった

246デフォルトの名無しさん2015/11/09(月) 15:11:05.97ID:nI2VMo2q
ドクじゃん

2472342015/11/09(月) 20:47:58.44ID:uBSPw/8w
>>241-244 素晴らしいIDですね
末尾コンテキストの伝播については理解できたと思います
ifは末尾コンテキストが2つに増えるので
もしif文が末尾に連なってたら末尾コンテキストがたくさんになるわけですね
これを使って末尾コンテキスト判定をするis-tailrecみたいなのを作れば
考え方として、関数fの定義でもしis-tailrecが真となる箇所以外でfが
呼ばれていれば末尾再帰でないと判定すればいいですよね
set!の部分がちょっとまだ理解できてませんが考えてみます

>>237
紹介サンクス
かなり読みやすくなってる気がする

249デフォルトの名無しさん2015/11/11(水) 14:40:05.71ID:oQgebZ0I
Haskellのclassとinstanceに相当する型演算をSchemeで擬似的に作る方法ないのだろうか

250はちみつ餃子 ◆8X2XSCHEME 2015/11/11(水) 17:14:51.88ID:ECN7vnC1
Picrin にはそんな感じのオブジェクトシステムが入ってるよ。
作者による紹介記事がある。

http://wasabiz.hatenablog.com/entry/2015/01/12/170025

クラスじゃなくてプロトコルという名前になってるけど、やってることはほぼ同じ。

実装はこのあたり。 意外に小さい。

https://github.com/picrin-scheme/picrin/blob/master/contrib/50.class/piclib/picrin/class.scm
https://github.com/picrin-scheme/picrin/blob/master/contrib/80.protocol/piclib/picrin/protocol.scm

251デフォルトの名無しさん2015/11/11(水) 18:24:03.85ID:hvXzryLw
ピクミンかと思ったらピクリン

252デフォルトの名無しさん2015/11/17(火) 21:41:10.87ID:j2zk6VQe

253デフォルトの名無しさん2015/11/18(水) 02:32:25.06ID:3JxuKBB4
うーん、、、、

254デフォルトの名無しさん2015/11/18(水) 06:45:07.50ID:D8xoadz9
>>252
何だこれ。晒してるつもりなのか?
こんなことすべきじゃない。

255デフォルトの名無しさん2015/11/18(水) 13:46:02.89ID:mDzX1/ZQ
>>252
これ読んでいるだけでも、すごく勉強になるよな

256デフォルトの名無しさん2015/11/19(木) 00:09:30.94ID:d0YkbYhs
なるよな?
同意を求めないで欲しい
気持ち悪いbot作ったなーとしか…

257はちみつ餃子 ◆8X2XSCHEME 2015/11/19(木) 00:38:47.15ID:cuUnetrq
SICP は専門書なわけで、どこの 140 文字を抜き出したって勉強になるってほどの情報量ないよ。

258デフォルトの名無しさん2015/11/19(木) 00:46:43.61ID:dXEAV4H+
情報量うんぬん以前に
何言ってんのかわからない
日本語なのか
これは

259デフォルトの名無しさん2015/11/19(木) 00:51:29.41ID:dXEAV4H+
ワードサラダにしか見えん

260デフォルトの名無しさん2015/11/19(木) 01:04:54.84ID:H4K8uZul
変な翻訳を抜き出して笑うためのbotだと思うんですけど
SICPで翻訳と言えば例の翻訳炎上のはてブ勢の気持ち悪いこと気持ち悪いこと

261デフォルトの名無しさん2015/11/19(木) 02:17:36.76ID:sAMKa/4u
アスぺの人、和田訳を執拗に擁護するのはなんなんだろうな
専門知識で足りない英語力を補っているから、minghai訳よりはマシって程度なのに

262はちみつ餃子 ◆8X2XSCHEME 2015/11/19(木) 03:23:10.97ID:cuUnetrq
>>260
笑うためってのは言い過ぎだと思うけど、まあ、余興だよな。

263デフォルトの名無しさん2015/11/20(金) 01:28:32.20ID:sUCS+w9M
和田訳こそ英文が読めなくて、日本語を適当にでっちあげた
真鍋のいうところの腐臭のする糞訳なのに、
どういうわけか擁護するんだよな

264デフォルトの名無しさん2015/11/20(金) 21:27:40.60ID:ph+B6Bvv
擁護とか一体何と戦ってるんだこのおっさん

265デフォルトの名無しさん2015/11/20(金) 22:14:38.36ID:qdgYLPrR
照り輝くbotはもともと糞訳をまとめたおもしろbotだろ
そもそも照り輝く自体相当前からネタにされてるし

266デフォルトの名無しさん2015/11/21(土) 00:58:11.83ID:ACMxKEDN
糞約とはいえ他人の著作物云々の問題はクリアしてるのか?

267デフォルトの名無しさん2015/11/21(土) 01:23:42.79ID:ksFSpKOf
SICPを糞訳と言うと、おかしな連中が絡んできて面倒だったけど
これからはこれ貼るだけですむから楽でいいわ
https://twitter.com/illmnt_SICP_ja

268デフォルトの名無しさん2015/11/21(土) 02:17:10.09ID:kXonXFHs
>>260
はてブ気持ち悪いのだけ一貫してて主張がコロコロ変わってて面白い
主張は変わってないのに同じ人が擁護したと思ったら次の記事には叩いてんのな

269デフォルトの名無しさん2015/11/21(土) 03:16:47.47ID://2/HV1n
推奨NGワード: illmnt

270デフォルトの名無しさん2015/11/21(土) 04:49:29.21ID:pdN059iT
機械翻訳みたいな変な訳ばっかり
こういうのダメ出しするのも出版社の仕事だろ
アメリカの教科書はリーダブルじゃなきゃならないと聞くが
悪文で書いた教科書なんてのはそれこそ日本の悪文化だよ
ましてMITの教科書を改悪、悪文化するのはおかしいゾ

271デフォルトの名無しさん2015/11/21(土) 04:50:19.99ID:pdN059iT
まして、はおかしいか。俺も悪文化。

272デフォルトの名無しさん2015/11/21(土) 09:08:25.40ID:bRToh1Ye

273デフォルトの名無しさん2015/11/28(土) 18:52:48.98ID:D0YQLzhL
プログラミングGauche尼で売り切れてオライリーが入荷待ちなんだけど
絶版?第2版?

274デフォルトの名無しさん2015/12/02(水) 00:31:49.93ID:amR8vvu9
>>213
ラムダ式返したい

275デフォルトの名無しさん2015/12/15(火) 02:43:12.56ID:SCkT4Wmk
本当はLisp使いたいのに急ぎだとpythonとかbashで使い捨てスクリプトを書いてしまう

276デフォルトの名無しさん2015/12/15(火) 02:54:48.05ID:RaTSkkL3
そうか。

277デフォルトの名無しさん2015/12/15(火) 12:22:58.17ID:HzjVt2sa
それで良い。

278デフォルトの名無しさん2015/12/16(水) 10:19:05.23ID:7XnugsYC
(定義 (長さ リスト)
 (もし (空? リスト)
  0
  (加算 1 (長さ (残余 リスト)))))

279デフォルトの名無しさん2015/12/16(水) 13:19:26.38ID:RBWQyPz5
(定義 (右から畳み込み リスト 乗算 単位元)
(もし (空? リスト) 単位元
(乗算 (車 リスト) (右から畳み込み (残余 リスト) 乗算 単位元))))

280デフォルトの名無しさん2015/12/16(水) 13:30:51.38ID:7BuiFt2H
「車」…w

281デフォルトの名無しさん2015/12/16(水) 14:27:37.96ID:V4z/b3Ey
(管 リスト)

282デフォルトの名無しさん2015/12/17(木) 08:55:39.39ID:hUsjEVq7
Schemeを勉強しだす→「なんてシンプルかつエレガントなんだ!これさえあれば何でもできそうだ!」
Schemeで何か作ろうとしだす→「なんて面倒なんだ!CommonLispみたいに統一してくれよ!」

「R{5,6,7}RS準拠だぞ」
「けどここは各実装で好きにしていいぞ」
「皆自分でSchemeを作るんだぞ」

283デフォルトの名無しさん2015/12/17(木) 19:15:09.86ID:WdhrFOHs
Scheme は「俺自身が Scheme になる事だ」が奥義だから

284デフォルトの名無しさん2015/12/17(木) 23:13:43.49ID:kltDf5Nv
(もしもし? もしもし? ただいま留守にしております お掛けになった電話番号は)

285デフォルトの名無しさん2015/12/18(金) 00:12:22.66ID:OqK6hc4t
> 俺自身がscheme
それは違うが

286デフォルトの名無しさん2015/12/18(金) 02:10:52.71ID:FhfWj/9P
真の Scheme は世界で俺だけだもの

287デフォルトの名無しさん2015/12/18(金) 02:18:32.82ID:OqK6hc4t
「俺の母語はschemeだぞい」とかいうなら分かるんだけど。
俺がschemeってどういうことよ?もっと具体的に。

288デフォルトの名無しさん2015/12/18(金) 06:05:40.32ID:dzRG5p0J
俺がガンダムだ! 的な。

289デフォルトの名無しさん2015/12/18(金) 11:39:18.75ID:8LE7CEy/
今度生まれる時は側溝に生まれたい的な

290デフォルトの名無しさん2015/12/18(金) 12:10:58.73ID:eorQTm9j
マジレスするとオサレマンガの台詞

291デフォルトの名無しさん2015/12/18(金) 21:41:51.11ID:px/TD8Yb
> 俺自身がscheme
これは自分にはかなり納得がいく言い方だった。
自分はC++が主なんだけど、schemeを学んでから、その知見を取り入れて、
C++のスキルが顕著に上がったと思う。
自分の書くコードの質も、先輩の書いたコードに対する読解力も。
なんというか、schemeで考えてC++で書くようになったというか。

292デフォルトの名無しさん2015/12/20(日) 20:34:16.08ID:jgTVJogO
lispの入門書って何がおすすめなん?Land of Lisp?The little schemer(scheme手習い)?

293デフォルトの名無しさん2015/12/20(日) 20:39:06.04ID:jgTVJogO
>>292
(質問スレに書くべきだったけど許して)

294デフォルトの名無しさん2015/12/20(日) 21:58:56.19ID:l3TBRkh9
Realm of Racketの翻訳って誰かやってんのかな?shiroさん?

295デフォルトの名無しさん2015/12/20(日) 22:10:47.02ID:/efUAUTJ
>>292
漠然とした本なんかより処理系のソースコード
かといってgcc級の糞でかいの読めっても無理だろうから規模がちっこいやつね
ついでにその処理系で動作確認もできるし

296デフォルトの名無しさん2015/12/20(日) 22:36:57.89ID:jgTVJogO
>>295
ありがとうございます

297デフォルトの名無しさん2015/12/20(日) 22:38:45.09ID:AMk4fv31
>>292
プログラミングGauche

298デフォルトの名無しさん2015/12/21(月) 02:08:17.88ID:4Mx5VRPH
>>292
前者は読んでておもしろい、後者はまじめに勉強にはなる
お金あるならどっちも読むと良いよ

あとは上の方に書かれてるけどソースコードはとっても勉強になるけどこれは結構しんどいと思うな(割と時間かかるから)。

299はちみつ餃子 ◆8X2XSCHEME 2015/12/21(月) 04:18:41.62ID:hvoGiEsW
基本的な考え方くらいはおさえとかないとソースから意図を読むのは難しいと思うよ。

300デフォルトの名無しさん2015/12/21(月) 06:40:36.36ID:aas71e/k
>>298
>>299
ありがとうございます、やはりソースをそのまま読むのは辛いですよね…

301デフォルトの名無しさん2015/12/21(月) 23:04:52.99ID:yR7SLlOg
ttp://www.amazon.co.jp/dp/B018KXY55Y/
「LISPでわかる!プログラミング・自由に生きるための英語学習法」
何この…何これ?
kindleでサンプル見たんだけど、これで理解できる初学者いるの?

302デフォルトの名無しさん2015/12/22(火) 00:34:26.45ID:qJHZYnmU
一人称が予な著者らしい
https://twitter.com/tadachika_j

303デフォルトの名無しさん2015/12/22(火) 04:34:23.25ID:3g+tKjgA
個人出版のデジタル本で1200円は高いな。
50円なら買ったかもしれないのに。

304デフォルトの名無しさん2015/12/22(火) 16:23:19.45ID:FIUTNb/j
>>301
Kindle出版のオナニー書籍にしか見えないんだけど内容どうだった?(prime会員だからタダでよめるんだけどなんか触るのイヤな感じ)

305デフォルトの名無しさん2015/12/23(水) 14:03:22.77ID:f3OkJGUt
miniKanrenの日本語解説本
誰も書かないなら個人出版で出しちゃうぞ

306デフォルトの名無しさん2015/12/23(水) 14:48:16.43ID:7PvFiWtw
>>304
サンプルの範囲では
「○○が出来ます」+コードサンプル
で1n
それが延々続いてた
目次見るとそこそこ解説もコードも書かなきゃいけなさそうなことも取り扱っているはずなんだが

307デフォルトの名無しさん2015/12/27(日) 21:55:10.69ID:3xQA5Ryh
自分もサンプル版を読んでみたけど、言語の解説という雰囲気ではなく、自分の勉強した内容を箇条書きっぽく書いてあるように感じた。
サンプルは最初の方しか読めないから、LISPそのものの説明のところだけしか読めてないけど、後半の応用部分は面白くなる可能性はあるかもしれないな。

英語学習法の部分については、
http://primitive-lisp.blog.so-net.ne.jp
独学でこのくらい書けるようになるのであればスゴイと思うし、ブログを日本から発信するのには十分かと。
でもネイティブの人はカタコトのように感じるレベル。

3083072015/12/27(日) 21:56:57.03ID:3xQA5Ryh
英語学習法の部分はサンプルに入ってないので、自分テキトーなことを言ってるぜ!?

309デフォルトの名無しさん2015/12/28(月) 08:21:49.27ID:7tFHoB70
Lispの別スレ出来てる

310デフォルトの名無しさん2015/12/28(月) 09:49:46.17ID:1a7EtF6d
キチガイコテスレじゃん

311デフォルトの名無しさん2015/12/31(木) 23:31:36.96ID:qS77pLNQ
Deep Learningの人達はpythonフレームワークを乱立させてるけどlispのマクロ下位互換マクロ作ってるだけなのにいつ気がつくんだろ。lisp使えばフレームワークとかそもそも必要ないのに

312デフォルトの名無しさん2016/01/01(金) 03:49:37.78ID:xJBQ4MUG
フレームワークを乱立させやすい言語は流行る
Lispもそうだった

313デフォルトの名無しさん2016/01/01(金) 16:20:50.48ID:0qf9SqH8
え、あ、うん

314デフォルトの名無しさん2016/01/04(月) 02:33:01.83ID:cqU/6Lnz
Theanoとかlispで書き直したらかなりスッキリするのに
ごちゃごちゃしすぎ

315デフォルトの名無しさん2016/01/04(月) 17:11:28.45ID:Bo8UyxL4
他人の書いたpythonコードを解析しないといけなくなって
「めんどくさい
何でLispで書かないんだ
解析させられる俺の身にもなれ
Lispなら長さが半分以下の読みやすいコードになるのに」
という感情がとても高まってきている

316デフォルトの名無しさん2016/01/05(火) 12:25:36.29ID:o0yppUdN
お前が書いたlispのコードの方がもっとひどいんだがw

317デフォルトの名無しさん2016/01/06(水) 02:03:24.51ID:DSMnLqrW
windows内蔵言語のvbscriptでschemeモドキを作ろうと目論んでる
つってもちゃんとやるのはマクロと末尾再帰だけでね
variant型使ったリスト処理がどんだけ遅くなるか見ものだ

318デフォルトの名無しさん2016/01/08(金) 22:26:33.75ID:V05Ed+eX
100Gぐらいのメモリーに入りきらないデータを扱う時にpythonではジェネレター式というのを使うけどschemeやlispではどういうふうにするの?

319はちみつ餃子 ◆8X2XSCHEME 2016/01/09(土) 00:13:08.70ID:5sGg2rIv
典型的なのはストリーム (srfi-41)
http://srfi.schemers.org/srfi-41/srfi-41.html

ジェネレータの形にする場合もある。
http://practical-scheme.net/gauche/man/?l=jp&p=gauche.generator

Gauche だと遅延シーケンスがある。
でも、これは処理系自体に組み込みじゃないと後付けでは難しいので遅延リストに依存したコードは移植性に難があるかもしれない。
http://practical-scheme.net/gauche/man/?l=jp&p=%E9%81%85%E5%BB%B6%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9

単なるバイト列やテキストであればカスタムポートも使いやすいと思う。

320デフォルトの名無しさん2016/01/14(木) 11:57:12.25ID:PerBWHT+
https://github.com/dherman/c.rkt
これでC言語のプログラムを自由に加工したりできるっぽいのだけど
ドキュメントらしきものがない
誰かexample usageみたいなものどこかにないか知りませんか?
使えればかなり便利そうなんだけど

321デフォルトの名無しさん2016/01/14(木) 13:17:40.77ID:6Qr9td66
Racket はなんだか独自の世界で生きてるよね

322はちみつ餃子 ◆8X2XSCHEME 2016/01/14(木) 17:10:36.81ID:c+6p1wle
>>320
拡張子が scrbl のファイルはドキュメントだぞ。
Scribble で html などに変換できるはず。

323デフォルトの名無しさん2016/01/16(土) 22:19:21.86ID:80NpOkXH
Edi Weitzの新著の書評誰かplz.

324デフォルトの名無しさん2016/01/19(火) 19:19:06.15ID:85OnXpOR

325デフォルトの名無しさん2016/01/19(火) 22:51:56.91ID:GxT4J/Gp
>>324
いや違うと思う。CLって多分思考(若しくは試行)ツールなんだと思うよ
俺が使いこなせないのは普段から抽象を扱ったりしてないから

326はちみつ餃子 ◆8X2XSCHEME 2016/01/26(火) 01:38:54.53ID:k1cf3USC

327デフォルトの名無しさん2016/03/20(日) 14:40:59.70ID:B3NGK1ug
schmeme 手習いを反復してやってます
(cond ((eq? a (car lat)) ....
で eq? が真を返すときの実行文の文法がわかりません

教科書では
(cond ((eq? a (car lat))(cdr lat))
となっていますが
(cond ((eq? a (car lat))(print "abc")(cdr lat))
と真の時の従属節に関数実行のS式を追加することはOKでしょうか?

目的はデバッグのため
処理系はgauche です,プログラミングgaucheを手元に置いていますがよく読めてません
よろしくお願いいたします

328デフォルトの名無しさん2016/03/20(日) 21:20:49.05ID:8k7APoZN
beginすればいいんじゃね

329デフォルトの名無しさん2016/03/20(日) 21:41:03.51ID:B3NGK1ug
>>328
if のときじゃなくて cond のときはどうでしょうか?

330デフォルトの名無しさん2016/03/21(月) 00:04:00.00ID:4m5Wnyvm
>>329
condはifとbeginに置き換えられる
condをマクロとして実装してる処理系は多い
まず処理系のソースを見てごらんよ
(cond (test1 body1) (test2 body2) (else bodyn))は
(if test1 (begin body1) (if test2 (begin body2) (begin bodye)))
に一旦展開された後で項書き換えとかコンパイルとかされる
要するにcondのbody節は複文相当で最後の式の値が全体の式の値になる
構文が判らないレベルなら教科書は一旦捨てて処理系のソース読んだ方が早い

331デフォルトの名無しさん2016/03/21(月) 00:27:45.71ID:4m5Wnyvm
ちなみにschemeはマクロを除いて基本構文は5つしか必要ない
define lambda set! if beginだったかな?
でも厳密にはquote関係も数に入れると10個ぐらいかもしれない
それ以外は全て上の5構文を組み合わせたマクロとして定義できる
つまり上の5構文だけマスターしとけばよい

例えばletがマクロなら(let((var value)) 〜)は((lambda(var) 〜)value)
のように意味を全く違えずに置き換えられる
残りのマクロも同様に基本構文への展開形を連想できるようになれば
schemeの基本はマスターしたと思ってよい

ただし肝心のschemeのマクロの定義は手段が沢山あってカオスなので
schemeマクロの闇については自分で調べて下さい
gaucheなら大きく分けて2つだろうけど

332はちみつ餃子 ◆8X2XSCHEME 2016/03/21(月) 02:54:24.39ID:+baaFkVo
最近の Gauche には explicit renaming マクロ変換器が入ってるよ。

333デフォルトの名無しさん2016/03/21(月) 23:00:02.23ID:b2VQ+ga6
ノートぱちょこん買い替える非業界人なんだけど、最近話題沸騰中の
LispとSchemeにちょっと興味があって。やっぱりマックにしたほうが
幸せになれるんでせうか?それとも、今までのぱちょこんをLinixに
したほうがいいのかな?

334デフォルトの名無しさん2016/03/22(火) 00:06:38.20ID:RD0Fka3a
割とどうでもいい

335デフォルトの名無しさん2016/03/22(火) 10:26:28.38ID:R/0zYJ9m
マックにArchLinux入れろ

336デフォルトの名無しさん2016/03/22(火) 13:25:51.72ID:YJW8F40f
>>333
LispとSchemeで遊びたいならWindowsでもMacでも好きな方買って大丈夫
WindowsならWindowsに適したものが、MacだとUnix処理系から普通にって感じで入れられるよ。

337デフォルトの名無しさん2016/03/22(火) 13:35:28.39ID:dJvZYtfq
最近どこで話題沸騰中なんだ?

338デフォルトの名無しさん2016/03/22(火) 13:36:45.17ID:dBsj80+9
Windowsでコーディングとか正気か

339デフォルトの名無しさん2016/03/22(火) 14:50:32.81ID:mpnhn3sE
Gauche で OpenGL 使うときは Windows の方がよい

340はちみつ餃子 ◆8X2XSCHEME 2016/03/22(火) 18:32:27.01ID:0IAY/SZb
メモリを多めに積んだやつに VMware なり Virtual PC なりの仮想化ソフトを入れて使い分ければいいよ。

341デフォルトの名無しさん2016/03/22(火) 20:45:35.89ID:58hJQcjT
レスありがとうございます。質問者です。
やっぱりマックがいいという意見が多いみたいですね。
そろそろ新型出るという噂もあるようなので様子見て買ってみたいです。
LinuxはArchってのがいいんですかね?
昔のスラックウェアみたいなかんじなのかな。古いPCでも遊べそうですね。

342デフォルトの名無しさん2016/03/22(火) 21:21:52.81ID:+NAfQbj2
・・・!?

343デフォルトの名無しさん2016/03/23(水) 01:26:34.91ID:wTacfG6W
Lispで書かれた対話botか?!

344デフォルトの名無しさん2016/03/24(木) 16:51:59.81ID:l5cXeIqY
はじめてのLisp関数型プログラミング――ラムダ計算からリファクタリングまで一気にわかる (Software Design plus) 五味 弘
ていう本が出てるけど、これはISLispなの?CL?

345デフォルトの名無しさん2016/03/24(木) 17:29:50.47ID:swZqoyDh
>>344に限らず本スレの皆様への質問とお願い

> これはISLispなの?CL?

そもそもISLispを主たる対象とした日本語で書かれた本(言語仕様の詳解中心でもプログラミング中心でもどちらでも可)って
(個人や大学・研究所などのWebサイトにPDFファイル等の形でアップされているとかでなく印刷され商業的に通常の書店で
購入可能な形で販売されているという意味で)出版されているのですか?

日本語でLispの本というとSchemeかCLかしか存在しない(英語圏でも状況は変わらない)と個人的には思っていたのですが?
日本語に限らず英語でも構わないのでISLispを主題とした書籍をご存知でしたら教えて下さい

346デフォルトの名無しさん2016/03/24(木) 18:12:32.28ID:l5cXeIqY
ISLisp は、Lisp言語のISO標準であり、1997年にISO規格が制定されました。
ISLispは、業界標準となっていたCommon Lisp の言語仕様の巨大さに対して、
処理系の効率と学習・利用の容易さを向上するために, Common Lispを継承
しつつ EuLisp, Le Lisp, Scheme を参考としてコンパクトで一貫性のある
言語を目標に 開発されました。


とあるけど、そういえばISLispの本って見たことないかも。

347デフォルトの名無しさん2016/03/24(木) 18:48:59.27ID:kQfTb2jB
ISLisp、惹句はいいんだど、いかんせんまともな実装が無いのがな。

348デフォルトの名無しさん2016/03/24(木) 23:12:30.66ID:hVZ/HIjt
著者「関数型おしえます!」(お?どれどれ)
著者「Lisp最高です!」(あ、うん)
著者「…islispデス…」(は?!なにそれ?伊豆lisp?)

ブロガーA「良著なのでコードをschemeで書きなおしました」(いいねえ)
ブロガーB「haskellでかきました」(うおおおおおおお!!!!!)

という反応になるよね。一般的には。
common lispかschemeで書き直したものをHPにアップすべきだと思う。

349デフォルトの名無しさん2016/03/25(金) 01:17:44.26ID:FCMJUdPN
せめて伊豆用slimeぐらい用意しないと女子高生には読んでもらえないと思うんだ

350デフォルトの名無しさん2016/03/25(金) 01:47:25.19ID:U5kXnQYj
はじめてのLisp関数型プログラミング、昨日買ったばかりなんだけど
ハズレ感が半端ない

351デフォルトの名無しさん2016/03/25(金) 03:50:58.11ID:Ah1QRPII
で、ISLispなんですか?

352デフォルトの名無しさん2016/03/25(金) 15:57:20.68ID:NttqmT06
ISLisp でggrと「ISLISPを使うべきでないたった1つの理由」がトップに並ぶ哀しさよ

353デフォルトの名無しさん2016/03/27(日) 18:34:21.16ID:0WFKXpdM
サンプルプログラムダウンロードしてみればわかるのでは。

354デフォルトの名無しさん2016/03/27(日) 18:46:04.64ID:0WFKXpdM
ちなみに本の最初の方ではclisp導入してた。

355デフォルトの名無しさん2016/03/27(日) 18:57:11.14ID:0WFKXpdM
最近は、RHがclojureでうまく整理して、関数型含めてjsに広まる概念もあったりする。

逆の流れでいうとtransducerをhaskellで説明しようとしたけどちょっと足りない話。
https://reddit.com/r/haskell/comments/2cv6l4/clojures_transducers_are_perverse_lenses/

いまだとshapeless使えば静的な型検査通る可変な型扱うコレクションつくれるらしいので、上のやつみたいなのも着実に減っててるとは思う。
https://github.com/mandubian/scaledn

結局のところC#などにもそうやって取り込まれてるんじゃないかなと。
react(.js)もphpのテンプレートエンジンの置き換えからだそうで。

356デフォルトの名無しさん2016/03/27(日) 20:51:20.75ID:0fEHBexO
clojure が lisp方言として紹介されてると違和感がある

357デフォルトの名無しさん2016/03/27(日) 21:15:00.46ID:/EOuwLtH
>>356
すまぬが理由がわからないのでkwsk解説を求む

358デフォルトの名無しさん2016/03/27(日) 21:24:01.32ID:0fEHBexO
>>357
・特に [ ] のあたりの文法が違うのでLispの資産を移行できないから
・Lisp の ( ) の対応に慣れた人には、罠のようにはりめくらされた文法不一致があるから
・S式だけで構成できないから
・再帰末尾最適化に制限があるから

359デフォルトの名無しさん2016/03/27(日) 21:47:19.72ID:/EOuwLtH
>>358
1の[]に関しちゃ大昔のスーパー閉じ括弧の存在を忘れてもらっては困ると思うしschemeの一部処理系も括弧の代わりに表現力の強調で括弧と同等に扱う等に導入してるからそこまで嫌わんでもと思う
2の部分は許容してもらうしかないんじゃないのかなぁ、まぁ否定はしない
3は1と2の事だよね?
4はLispというよりscheme好きの人なら反発するのとてもよくわかる。(jvm側の問題でもあるけど)

[]に関しちゃむしろ良く出来てると思うのだよね、3が許せないとどうしようもないけど。

リーダーマクロが普通に扱えないって言う意味で怒ってるのかと思ったのでちょっとびっくりしました。>>358

360デフォルトの名無しさん2016/03/30(水) 01:19:52.13ID:4Lxy3Poc
>>358
> ・再帰末尾最適化に制限があるから

「再帰末尾」じゃなくて「末尾再帰」
元の英語は "tail recursion"

361デフォルトの名無しさん2016/03/30(水) 11:18:07.37ID:7zl3Df3d
> ISLisp でggrと「ISLISPを使うべきでないたった1つの理由」がトップに並ぶ哀しさよ
これ根本的に間違えてんね.ユーザーいないし訂正する人もいないからこのページが消滅するとよいね

362デフォルトの名無しさん2016/03/30(水) 23:06:00.56ID:7AHXAhDb
算法表現論ゲット
読みやすそうで少し安心

363デフォルトの名無しさん2016/04/01(金) 19:48:09.65ID:3RzF36/0
>>361
ちょうど、昨日、そのページ読んだばかりだった。
どこらへんが間違ってるの?

364デフォルトの名無しさん2016/04/01(金) 23:04:20.67ID:cY7z571b
> 「実行時情報」が使えないということは,つまり,自分で定義した関数によるマクロの展開は行えない,ということです.
ココ。つまりこのページの主張全部

365デフォルトの名無しさん2016/04/01(金) 23:32:51.04ID:TfQnAKLt
自分で定義した関数ってコンパイル時情報だよな?

366はちみつ餃子 ◆8X2XSCHEME 2016/04/02(土) 04:27:14.45ID:4LcO4yg1
仕様から関連しそうな箇所を抜き出してみた。

> 4.8 定義演算子
> 定義形式によって定義される名前は、最上位有効範囲全体で使うことができるが、
> ISLISP テキスト単位における実行準備された最上位形式は、左から右に順に実行される。
> (略)
> (defun function-name lambdaform*) → <symbol>
>
> defun 形式は、 function-name を、関数名前空間の識別子として定義する。 function-name は、 (lambda
> lambda-list form*) と等価な関数オブジェクトに束縛される。

> 8. マクロ
> (略)
> マクロは、実行準備時に展開される。 いかなる実行時情報も使えない。使用可能な操作は、単純なデー
> タ構造の生成及び処理に制限される。すなわち、(端末への入出力のような) 環境への副作用、(記号の属
> 性リストの変更のような)外部的にアクセスできるデータ構造への副作用、及びマクロ形式自身への副作用
> を起こす操作は禁止する。

「4.6 評価モデル」も関連するけど長くなるので要約。
・ まず実行準備される
・ 実行準備が完了してから実行される
・ 実行準備完了時点でマクロ展開は終わっている
・ 実行準備のための処理は処理系依存

断言できるほどはっきりしてないけど、関数の定義名はマクロ展開時にも見えてて、
関数名と関数オブジェクトを結びつけるのは「実行」だと解釈するのが妥当だと思う。
マクロ定義中にユーザー定義関数を使えないとする解釈を私も支持する。

ただ、全体を通して見ると副作用のない (プログラマが定義した関数を含む) 関数なら使えると想定しているっぽい雰囲気
はあるような気がする。

3673632016/04/02(土) 07:29:47.03ID:A2SWmCys
>>364,365,366

みなさん情報ありがとう。
ISLISPの日本語の仕様書はどこかなと思ったら、ここにあった。
http://www.jisc.go.jp/app/pager?id=1759608

ダウンロードしての閲覧禁止って。変な制限かけてるなぁ。

368はちみつ餃子 ◆8X2XSCHEME 2016/04/02(土) 12:56:38.38ID:4LcO4yg1
>>367
その URL では見れないよ。
URL 中の番号はあなたがアクセスしたときのセッション番号。
文書に固有の番号ではないので、パームリンクとして使えない。
ダウンロード禁止なだけじゃなく、たぶんサーチンエンジンのクロールも避けてるんだと思う。

369デフォルトの名無しさん2016/04/02(土) 13:43:35.05ID:5+CR+tn7
表示中オフラインにするとpdf中のjsに怒られたような記憶がある

370デフォルトの名無しさん2016/04/02(土) 15:42:26.21ID:qu6I3qRA
普及させる気ないんだろうね

371デフォルトの名無しさん2016/04/02(土) 15:51:19.10ID:5+CR+tn7
買ってもらってるから、不公平って話だと思われる。
紙も実費で配れる財源あるといいんだけどね。

isoは販売になってるけど、他団体と共同でたまに公開されてるのがある。
草稿は公開してるところもある。

372デフォルトの名無しさん2016/04/02(土) 15:59:10.41ID:5+CR+tn7
ここで公開してたやつも草稿であって、ってリンク切れしてるのな。
http://www.open-std.org/JTC1/SC22/WG16/

http://www.islisp.com/jp/ISLisp-spec-jp.html

373デフォルトの名無しさん2016/04/02(土) 16:12:01.04ID:5+CR+tn7
isoやansiよりはjisの方がweb公開進んでるのだけど、
ecmaならecmascript(js)やclr(.net)みたいに公開されるのか。

374はちみつ餃子 ◆8X2XSCHEME 2016/04/02(土) 17:41:26.10ID:4LcO4yg1
日本の法律だと JIS 規格に著作権が認められるかどうかははっきりしない。
総合的には認められないとする説の方が有力らしいんだが、
ISO は規格の著作権を主張してるからそれに加盟してる JISC も倣うしかなくて、
間をとって閲覧だけは無料という曖昧なところでぼやかしてるらしい。

375デフォルトの名無しさん2016/04/02(土) 18:45:29.01ID:8BHbSdoO
工業規格は事実上の業界標準を後追いで規格化したのがほとんどだから、著作権どころか特許が生きてるのが混じってるので注意が必要

376デフォルトの名無しさん2016/04/02(土) 23:14:35.48ID:1yEjd1gy
> 366
> 断言できるほどはっきりしてないけど、関数の定義名はマクロ展開時にも見えてて、関数名と関数オブジェクトを結びつけるのは「実行」だと解釈するのが妥当だと思う。

入手できたISLISP Working Draft 23.0をベースにして述べるが,その理屈だと備え付けの関数も展開には使えないように思える.
備え付け関数もユーザ定義の関数もpreparation for executionの間に実行可能という記述はない.
不可能という記述もない.(定義はしないとある)

仮にユーザ定義の関数は使えないとしよう.
ローカル関数 (flet labels)が,defmacro 内で使えないようには見えないのでこれで対処できる.
また,マクロは使用場所に先行して定義があることが必須とあるということは,ユーザ定義のマクロは使えるように見えるので,補助関数の所を補助マクロとするのも良いだろう.
CommonLispでもマクロ展開の補助でユーザー定義関数の利用は必須ではないし,利用するには評価フェイズを合せなくちゃならない問題がある.(ISLISPはこれを回避したのかもしれない)
これをもって「ISLISPを使うべきでない」とするのは誇張が過ぎるし,真に受ける者が出るとしたら害悪だろう.

377デフォルトの名無しさん2016/04/03(日) 00:12:06.32ID:TLDHNLo8
そのページの害悪よりも、isLispの素晴らしさが伝わるようなページが
検索トップに来ないことの方がずっと問題だと思うけど

378はちみつ餃子 ◆8X2XSCHEME 2016/04/03(日) 01:50:33.42ID:KHszJMdl
>>376
「実行準備」「実行」の繰り返しがどういう単位なのかっていう、フェイズの分離の仕方の問題だよな。
ひとつの式ごとなのかプログラム全体にわたってなのかでも解釈が違ってくる。

まあ最大限に安全な方向に見積もって未定義だと解釈しても、
それで ISLISP の有用性が全部失われるわけではないということには賛成できる。
あの記事はよくある誇張した煽り記事だろ。 センセーショナルなタイトルをつけてるだけで大したこと言ってない。
しょうもない記事が上位にきてしまう程度に ISLISP に関する記事が少ないってだけ。

379デフォルトの名無しさん2016/04/05(火) 19:32:30.73ID:wN+QNOe5
ISLispを普及させるために必要な10のこと
・ISLispBoxを無償提供する
・ISLisp Hyperspecを無償提供する
・SICPをISLispで書き換える
・On ISLisp、Little ISLisper、Land of ISLispを出す
・ISLisp for Dummies、すごいISLisp楽しく学ぼう!も
・WhyのISLisp感動的ガイドを公開する

380デフォルトの名無しさん2016/04/05(火) 23:12:23.26ID:XIj7GX7+
他の実装へのトランスレータがあれば普及させる必要はない

381デフォルトの名無しさん2016/04/07(木) 01:17:53.66ID:y6T+G0tp

382デフォルトの名無しさん2016/04/07(木) 02:51:00.20ID:J/4BCUlz
>Lispを普及させるために必要なこと
括弧が少ない言語の方が好まれる傾向にある
よって括弧が一切存在しないLispが誕生すれば爆発的に普及するだろう

383デフォルトの名無しさん2016/04/07(木) 03:03:03.39ID:69hNyYMv
今年のscheme workshopは日本
いつもwebdbfと重なって行けなかったが今年は行けそう

384デフォルトの名無しさん2016/04/07(木) 13:28:18.97ID:bXWnnDCw
言語で使う括弧の量と、括弧打つのが面倒な場面の数ってあんま関係ないよね。

括弧使う言語を書いてるときに面倒なのは、今書いた式を引数にして別の関数を更に適用しようかとかなったときに、
後に閉じ括弧つけてカーソル前に戻して関数名書いて括弧つけて、ってやるときがほとんどなんだけど、
例: foo(x,y)_ → bar(_foo(x,y)) # "_"はそのときのカーソルの位置
Emacsなら一発で飛べる分、むしろLispの方が楽なときがある。

そういう意味だとOCamlの foo x y _ → foo x y |> bar_ は便利だった。

385デフォルトの名無しさん2016/04/09(土) 00:31:51.25ID:V5jcD4gz
Lispが普及しないのはEmacsで開発するのが当たり前ってところでしょ?それじゃ新規は増えないよ。

386デフォルトの名無しさん2016/04/09(土) 01:09:17.67ID:K2fjpu1X
それはいいんだよ
CLやscheme, Racketに比べてISLISPが普及してないのはもったいないよね
という話

387デフォルトの名無しさん2016/04/09(土) 07:59:30.45ID:vy7ZgTpp
>>385
F#はVisual Studioだけど普及してないし

388デフォルトの名無しさん2016/04/09(土) 12:25:09.55ID:RLrf2DHR
>>387
F#は好きな言語ではあるが、C#と比べるとVSの動作が重くてしんどいよ。
型推論が遅いのか構文解析が面倒なのか、自動でエラー箇所表示させると凄く反応が悪くなる。
FParsecとか関数型言語ならではの便利ライブラリ使うとより顕著に。

ISLispはロクな実装無いし真面目に使っている人がいないから、どこが便利でどこに課題があるかも分からんのがね。

389デフォルトの名無しさん2016/04/10(日) 00:55:16.70ID:o+jF8W/p
>>387
なら開発環境と言語の両方に魅力がないとダメってことじゃない?

390デフォルトの名無しさん2016/04/10(日) 01:04:07.52ID:FW5ih/4i
smalltalkは普及してないけど、objective-cは普及した
つまり、Lispを普及するには中間言語をcにして、、、

391デフォルトの名無しさん2016/04/10(日) 01:05:20.48ID:FW5ih/4i
そういえばsqueakがレイヤごとに言語変えるとかどっかでチラと読んだような気がする

392デフォルトの名無しさん2016/04/10(日) 09:59:42.62ID:OHXqjM6F
>>390
Objective-Cは絶滅危惧種だったがジョブズのおかげで生き延びた

393デフォルトの名無しさん2016/04/10(日) 13:13:21.92ID:FW5ih/4i
最も愛されているプログラミング言語や技術

1. Rust(79.1%)
2. Swift(72.1%)
3. F#(70.7%)
4. Scala(69.4%)
5. Go(68.7%)

http://news.mynavi.jp/news/2016/04/07/062/

Most Loved Programming Languages Of 2016 ? Rust, Swift, F#, Scala, Go
http://fossbytes.com/loved-programming-languages-rust-swift-go/

だそうです

394デフォルトの名無しさん2016/04/10(日) 14:19:08.33ID:OHXqjM6F
>>393
愛人にしても本妻には決してしたくない言語だね

395デフォルトの名無しさん2016/04/10(日) 15:37:29.95ID:1G8jL9C/
Rustは好き。C/C++が引き受ける低レベルな領域に型システムの安全性と利便性を突っ込んでみたっていう発想は良い。

けど、コンパイル時間がコード量から予測しづらい(イテレータやジェネリクスを使ってると特に)のと、
莫大なライブラリを資産に持つC/C++と比べたときの実用性の差を考えると、
潤沢な計算資源があって、比較的優秀な人材が揃えられるところ向け。

Schemeのような、スタンドプレーの生産性を莫大に高める言語じゃあないと思う。

396デフォルトの名無しさん2016/04/10(日) 16:24:09.38ID:GJqGP9+Q
俺もRust好きだな、ただObjective-Cみたいに言語のはらわたまで触れる(smalltalk由来の部分ね)緩さをもった言語も大好きなんだよな
あとはClojureが好き、これはWebアプリ書いてるとき限定だけど。

LispスレなのにLisp系がClojureとかでスマヌ

397デフォルトの名無しさん2016/04/10(日) 19:11:20.69ID:bGdugtOr
Lisp系言語のネックは言語実装じゃなくて実行環境だと思う

398デフォルトの名無しさん2016/04/10(日) 20:22:50.36ID:OHXqjM6F
>>397
マルチプラットフォームでコンパイラで実行バイナリも吐けるし何が問題?

399デフォルトの名無しさん2016/04/10(日) 20:44:51.47ID:bGdugtOr
>>398
「Common Lisp なら問題なく安定して高速な実行バイナリを吐ける」 という前提が必要かと

400デフォルトの名無しさん2016/04/10(日) 21:07:38.87ID:fTRAmtFw
マルチプラットフォームとかより.NET Frameworkとか使えるかが問題

401デフォルトの名無しさん2016/04/10(日) 21:42:33.45ID:hia67FmN
Biglooは高速なんじゃないの?

402デフォルトの名無しさん2016/04/11(月) 19:30:23.23ID:B6eduLpk
Hyper Specが日本語に翻訳されたら増えるかもね。
日本語の情報が少なすぎだよ。

403デフォルトの名無しさん2016/04/12(火) 07:35:10.05ID:cHC5205s
Racketからpython使うだいぶ楽になったけど、逆はどうすればいいんだ?

404デフォルトの名無しさん2016/04/15(金) 16:27:17.39ID:SDnTU4FS
Deep Learningライブラリkeras
がニューラルネットワークのグラフ処理と数式処理を組み合わせた
ちょっと気の利いた自動処理をやってくれてたんだけど,バグだらけで
pyrhonで数式処理やるの無茶だしこんなものだろうと思ってたら
最新版で気の利いたグラフ処理を全部削除してきた

数式処理をLisp以外でやるのは,やっぱり無理だったんだな

405デフォルトの名無しさん2016/04/15(金) 17:44:56.79ID:h+7uFu1K
sympy ないからね〜♪

406デフォルトの名無しさん2016/04/15(金) 18:27:07.12ID:SDnTU4FS
SymPyはテンソル処理できないし

数式を評価して数値にしないで式のまま扱うには
どうあってもマクロの機能が必須

407デフォルトの名無しさん2016/04/15(金) 18:29:44.90ID:SDnTU4FS
もうちょっと具体的に言うと
x_iのiも数値じゃなくて数式になってるような処理がmaxima以外じゃできないんだよ

408デフォルトの名無しさん2016/04/16(土) 09:53:49.06ID:dMPS3Rkb
ややスレ違いで申し訳ないのですが、
Common Lispで記述されてるMaximaのWindows版バイナリの
GCLやSBCL版がDEPの対象からから外さないと動かないのって、
多分fasl絡みだと思うのですけど、これってどうしようもないのでしょうか?

4094082016/04/16(土) 09:55:12.62ID:dMPS3Rkb
をを専ブラじゃなくってIEで書き込めたぞ

410デフォルトの名無しさん2016/04/16(土) 22:21:58.39ID:jF3WTL87
windows10のubuntuサブシステムってguile動くのかな?

411デフォルトの名無しさん2016/04/17(日) 12:42:24.64ID:OFPJm6rS
ubuntu subsystemはterminal関連やプロセス情報周りまだ調節してるみたいなので、起動で使ってるととまるかも。

cygwinと違いlinuxのバイナリがwindowsのシステムコールに変換してそのまま動くらしいが、プロセスfork周りとか安定するのかな。

docker for windowsでも結構いろいろ出来るけど、
こちらはファイル連携の効率が鬼門?

412デフォルトの名無しさん2016/04/18(月) 00:23:19.09ID:7XwxtGPN
schemeでSDL使ってなんかやってみたいのだが
guileでもgaucheでもうまく使えるようになってくれん・・・(´・ω・`)

週末おわったからまた来週までおあずけ・・・

413デフォルトの名無しさん2016/04/24(日) 20:26:59.87ID:0x0aJXRe
>>374
規格そのものには著作権はない
規格書にはある
JISはお役所っぽいとはいえ
規格書は著作権法の除外対象である
「憲法その他の法令」「告示・訓令・通達等」「判決等」などには含まれない

414はちみつ餃子 ◆8X2XSCHEME 2016/04/24(日) 23:36:40.58ID:dj3kRx0x
>>413
というはっきりした根拠がないという話な。

415デフォルトの名無しさん2016/04/25(月) 02:32:42.65ID:i2M++PuM
著作権法の保護対象は、思想や感情などを創作的に表現したものだから、規格書が該当する可能性は低いんだよね。
執筆者の思想や感情に染まった創作的な規格書とかアレだし。

416デフォルトの名無しさん2016/04/25(月) 02:51:04.57ID:UQm4t1FS
規格化されたから安心して使えるよね、ってのが長所だろうに
なぜ規格書を半クローズドにするのか全然意味が分かんないw
パンピーから見て「馬鹿なんじゃねえの?」ぐらいある

417はちみつ餃子 ◆8X2XSCHEME 2016/04/25(月) 03:49:21.76ID:H1EfbN1H
Wikipedia にもそのあたりの経緯は書かれてる。

https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E5%B7%A5%E6%A5%AD%E6%A8%99%E6%BA%96%E8%AA%BF%E6%9F%BB%E4%BC%9A

公官庁が作ってるとは限らない (つまり原案が民間からの提案による) というのが著作権が保護される根拠になってるな。
でも、規格票やハンドブックの売り上げは規格団体の活動資金であって (原案の) 著作者に還元されてるわけでもないみたいなので、
その点でも説得力に欠ける気がする。

418デフォルトの名無しさん2016/04/25(月) 10:21:16.35ID:J5O1W2lq
誰かが法廷で争って白黒付けん限りはどうにもならん

419デフォルトの名無しさん2016/04/25(月) 18:12:09.23ID:NhSdIii9
>>417
それは権利が移譲されてるだけ

420デフォルトの名無しさん2016/04/25(月) 18:33:02.98ID:RM5Zqug+
権利守るためには普及しなくてもいいや、ってことか

421はちみつ餃子 ◆8X2XSCHEME 2016/04/25(月) 18:47:45.03ID:H1EfbN1H
>>419
手続き上どうなってるか知らんけど、民間の権利を保護することを理由にしてるのに
権利を移譲させているのなら保護する理由として説得力が欠けることにはかわらん。

422デフォルトの名無しさん2016/04/25(月) 21:57:50.21ID:RsNFjZ9o
問題は特許の方だったりする
規格化されてる技術でも、民間企業の特許権が放棄・委譲されてない場合があるから注意ね

423デフォルトの名無しさん2016/04/27(水) 01:17:14.13ID:0mhH1Qow
いつのまにか Chez がオープンソース化されとるんやけど。
https://github.com/cisco/ChezScheme

424デフォルトの名無しさん2016/04/27(水) 09:36:40.00ID:NqgLzB8V
ライセンスは Apache License 2.0 か

425デフォルトの名無しさん2016/05/01(日) 12:07:59.87ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
7

426デフォルトの名無しさん2016/05/17(火) 17:05:48.70ID:YgbAgXws
The Little Prover (MIT Press)
by Daniel P. Friedman et al.
Link: http://amzn.com/0262527952

427デフォルトの名無しさん2016/06/17(金) 14:09:15.00ID:aKyWkGS/

428デフォルトの名無しさん2016/06/19(日) 15:31:25.37ID:ZDqZVbmO
Scheme workshopに間に合わなかった論文を投稿できる国際会議って他にないものでしょうか?

429デフォルトの名無しさん2016/06/19(日) 19:41:59.96ID:TTlCeyJj
elispで"で囲まれる文字列をエディター上で複数行にわたって一行の
文字列を作るにはどうやりますか?

430デフォルトの名無しさん2016/06/20(月) 00:32:31.05ID:UyWTAm1z
>>429

"foo
bar
baz"



"foobarbaz"

にするってこと?

431デフォルトの名無しさん2016/06/20(月) 03:54:27.98ID:1sGgDOGd
>>428
ACMのプログラム言語系国際会議だとここらへんに
http://www.sigplan.org/Conferences/
https://en.wikipedia.org/wiki/SIGPLAN

Scheme workshopはICFPと併設か
http://conf.researchr.org/home/icfp-2016
http://scheme2016.snow-fort.org/
Submission deadlineJune 24th, 2016

似た時期にやってるSPLASHと併設はアブストラクト提出があるみたいで締め切りがはやそう?
http://www.sigplan.org/Conferences/SPLASH/

POPLが1月、PLDIが6月みたいだけど、この時期は各種言語系の併設少ない

European Lisp SymposiumもACMと共同みたい?だけど
来年は4-6月ぐらいなのかな?
http://www.european-lisp-symposium.org/

そして、ILSの開催はよくわからない

432デフォルトの名無しさん2016/06/20(月) 09:52:51.85ID:WTi3RfiH
>>430
ということです

433デフォルトの名無しさん2016/06/20(月) 10:19:02.98ID:UyWTAm1z
例えばリージョンを指定して
(replace-regexp "\n" "" nil (region-beginning) (region-end))
とするとか。

434デフォルトの名無しさん2016/06/20(月) 10:31:53.16ID:zNtNJydN
こういう改行を自動的にオミットしてくれるraw文字リテラルとか言語によってはあるよね。

435デフォルトの名無しさん2016/06/20(月) 17:28:02.84ID:3ZWHStpW
バックスラッシュで改行をエスケープしたらできました
ありがとうございます

436デフォルトの名無しさん2016/06/22(水) 09:00:57.86ID:y1M9DB0/
Racketのメモリ使用効率が最近、劇的向上したと聞いたがソースが見つからない

437はちみつ餃子 ◆8X2XSCHEME 2016/06/22(水) 09:59:37.32ID:es+zuR1i
適当なコードをプロファイラ付きで動かしてみれば自分で確かめるのも簡単にできそうに思うが

438デフォルトの名無しさん2016/06/24(金) 15:03:54.34ID:kFtEs5yG
scheme workshop のホームページが落ちてる

439デフォルトの名無しさん2016/06/24(金) 19:38:06.30ID:WmRGQvXX
scheme on you!

440デフォルトの名無しさん2016/07/11(月) 05:29:45.06ID:VKBZ9FDE
python のdoctestっぽいのが
コメント領域
#|
...
|#
で囲まれた範囲に書かれている
https://github.com/JeffBezanson/femtolisp/blob/master/examples/bq.scm

こういうテストの記述方法使えるscheme処理系って他にないものでしょうか

441はちみつ餃子 ◆8X2XSCHEME 2016/07/11(月) 13:22:30.31ID:lXJnj28H
>>440
doctest ではないけど、同じファイルにテストを書ける方法がある。

SRFI-22 で、 main 手続きがあるとそこをエントリーポイントにする機能があるんだが、
Gauche では -m オプションでモジュール名を指定すると
そのモジュール内にある main (通常は実行されることはない) を実行できる。
ライブラリとして書いたものをスクリプトとしても実行できる仕組みなんだけど、
実際のところそういう使い方は普通はしないので main にテストを書いておくという使い方も出来る。

あるいは、 -F オプションの有無で cond-expand を使って分岐してテスト部分を走らせるという方法もある。

442デフォルトの名無しさん2016/07/11(月) 13:30:48.11ID:vMXg/Dlp
Clojureだと関数定義にmeta情報としてtestを登録できるけど
Schemeのマクロでtest呼び出し可能なdefine-with-testみたいなの作れないものなの?(あたしゃSchemeいぢった事ないのでわからん)

443はちみつ餃子 ◆8X2XSCHEME 2016/07/11(月) 13:37:54.26ID:lXJnj28H
>>442
出来る。

444デフォルトの名無しさん2016/07/21(木) 08:53:46.11ID:w8JCXqYb
http://ecraven.github.io/r7rs-benchmarks/benchmark.html
Chez が圧倒的なんだが、何故か string のテストだけ突出して順位低いな。

445デフォルトの名無しさん2016/07/21(木) 18:52:01.52ID:dtsOUE7n
文字列の取出しや結合を繰り返すベンチだな。
Chez の実装をおおざっぱに見てみたら、文字列はただの配列らしい。
string-append も新しくアロケーションしてコピーするだけ。

https://github.com/cisco/ChezScheme/blob/fe172bfdfbf2f606db611013e7689d6a2b117d5e/s/5_4.ss#L33

文字列が rope ならこの種類のベンチは高速になるはずなんだけど、
それはそれで string-ref などが少し遅くなるという欠点もある。
R6RS は string-ref や string-set! が定数時間と要求してるのでそっちを優先したのかも。
(要求といっても `should` はその処理系でコストが大きかったり他との兼ね合いで難しいようなら無視してよい緩い要求。)

あと、 Chez のこういった基本的な手続きは Chez 自身によってコンパイルはされるが、
C で書かれている場合と比べると遅くなると思う。
C で書かれているライブラリを呼出したら、呼出されている間は C の速度ってことだからな。
それらと比較して多少遅い程度で戦えてるならかなり強いんじゃね。
他の実装がどうなってるか知らんけど。

446デフォルトの名無しさん2016/08/10(水) 14:38:28.91ID:gLMRd7tQ
>>434
どういうraw文字リテラル?

447デフォルトの名無しさん2016/08/10(水) 15:57:23.41ID:xNwBTsOU

448はちみつ餃子 ◆8X2XSCHEME 2016/08/12(金) 02:03:20.00ID:r3pIqi6x
Gauche 0.9.5 のリリースが近いみたいだよ

449デフォルトの名無しさん2016/08/12(金) 02:04:26.52ID:iSmX+r7l
まだメンテとかしてたのか…

450デフォルトの名無しさん2016/08/12(金) 09:58:06.23ID:YdMh7QBO
バージョン1にならないうちにプロジェクトが消滅しそう

451デフォルトの名無しさん2016/08/12(金) 12:09:41.03ID:IkcCQ8j3
中の人が存命な限り続くだろう
本人が使ってるんだし

452はちみつ餃子 ◆8X2XSCHEME 2016/08/13(土) 00:53:10.41ID:zk6Wqji8
リリースの間隔は長いけど、かなりの頻度でコミットはされてるよ。

453デフォルトの名無しさん2016/08/22(月) 19:03:07.53ID:oW9zLe2W
Gaucheはschemeである限りschemeの1処理系にしかすぎない
schemeのノロノロした規定の縛りに従っていくのもアホらしいと感じているだろう
.NETに対応して誰もを唸らせるLispやSchemeという分類を超えた新たなLISP族が誕生してもいいんじゃないっか

454デフォルトの名無しさん2016/08/22(月) 19:06:35.37ID:oW9zLe2W
powershelがマルチプラットフォーム&オープンソース化して化けたしここらで標準で使えるpowerLispっぽい何かが欲しいとこだに

455はちみつ餃子 ◆8X2XSCHEME 2016/08/23(火) 12:58:56.94ID:2DFoQv2G
JVM にとっての Clojure みたいな?
特定の VM に縛られる方が特定の言語仕様に縛られるよりあほらしくない?

.NET の世界でのスタンダードな LISP 系言語があったらいいなぁというのはわかるけど、
.NET なライブラリを呼び出すだけなら適当なバインディングを作れば Gauche からだって出来るので、
Scheme の仕様が足かせということはないと思う。

456デフォルトの名無しさん2016/08/23(火) 19:12:17.79ID:UTRMGA4h
ttps://github.com/clojure/clojure-clr
clojureは.net版もあるね,JVM版とバージョンは一緒だけど
clojureでよく使われているプロジェクトはjavaライブラリのjarに依存してるのも多いからどうなんだろ?

457はちみつ餃子 ◆8X2XSCHEME 2016/08/24(水) 15:03:29.26ID:nZ9rDf/L
>>453 について意見した >>455 にもうちょっと意見を付け足し

どちらを軸にするかという問題だから、
Java の世界を軸にすれば厳密に Scheme の仕様に従おうとするといまいちなところは出てくるだろうし、
Scheme の仕様を軸にすれば Java (JVM) のデザインがクソザコに思えたりもするだろう。

Scheme からでも Java やら dotNET の機能は呼び出せるが、
単に呼び出せるというのと全体として違和感なく統合されているというのは別物なので、
dotNET ユーザにとっては dotNET の世界に合わせた LISP が欲しいというのは納得のいく意見だと思う。

でもそこで Scheme を引き合いに出されると違和感あるわ。
Gauche は別に dotNET を想定してデザインしたわけじゃないしハナから Scheme 処理系なんだから
軸足は Scheme にあるわけで dotNET 的に制約に感じられても当たり前の話。
勝手な評価軸で「アホらしい」なんてのはそれこそアホらしい。

458デフォルトの名無しさん2016/08/24(水) 18:47:43.67ID:urM54ZXn
.netはc#,f#に集約されているので、S式使った組み込みDSL向けか、replなどのユーティリティー系しか用途がない気はする。

最近はnotebook形式のツールが増えてきたので、そっちも限られてきた気はするが。

459デフォルトの名無しさん2016/08/24(水) 18:56:20.06ID:urM54ZXn
.netはDLRが出た時に.net言語の実装増えたけど、利用者少ないし、ほとんどがメンテできてないんじゃないかな
JVMだと使える処理系としてkawa、abclもメンテされてるはず。
それとリッチ・ヒッキーは.netでscheme実装やってみたけど、意図的にclojureからjvmに移行したという記憶が。

clojureは組み込みデータ型がJVMに寄ってるので、cljsもclojureclrも組み込みのデータ型で苦労してるし、clrは特にサードパーティーのライブラリが対応してなくて苦労してる。
ただ、ニュートラルにするとshenとかFantomみたいにあんまり他の言語と相互利用できなくなる。
clrは、unity使えるけどスマホで使えないし、WPF対応させたりしてるけどクロス環境では使えないみたいな話も。

JVMは末尾再帰辛いけどindyやgraalvm+truffleみたいにネタが増えてて実装オタク向けの新しい題材が増えてるし、他のVMでも.netよりもerlangのvmや、llvmあたりの方がまだ活発なイメージがある。

460デフォルトの名無しさん2016/08/24(水) 22:03:15.08ID:kzFjQi4C
>>459
> clojureは組み込みデータ型がJVMに寄ってるので、cljsもclojureclrも組み込みのデータ型で苦労してるし、clrは特にサードパーティーのライブラリが対応してなくて苦労してる。

なんでそういう勘違いしてるのか気になるな
clojureの組み込みリテラルは数値、シンボル,キーワード、文字列、キャラクタ、list、vector、dictionary(map)とsetでCLRでも問題無い奴しか無いよ

> clrは、unity使えるけどスマホで使えないし、WPF対応させたりしてるけどクロス環境では使えないみたいな話も。
スマホはiOSが実行時評価禁止してるからunity上でのclojure.clrは制限があるのは事実だけど、これも誤解が入っていると思うぞ

> JVMは末尾再帰辛いけどindyやgraalvm+truffleみたいにネタが増えてて実装オタク向けの新しい題材が増えてるし、他のVMでも.netよりもerlangのvmや、llvmあたりの方がまだ活発なイメージがある。
JVMは末尾再帰を完全に保証できないからclojureのrecurが生まれたのだけど、順序間違ってない?

461デフォルトの名無しさん2016/08/25(木) 03:01:28.74ID:EcGIN1F9
フォローありがとう。
unity+clojureclrってiosで動くようになったのか。

javaの規格では末尾再帰最適化はないけど、
ibmのj9 vmでは、末尾再帰最適化してくれる。

462デフォルトの名無しさん2016/09/12(月) 17:44:10.20ID:qDbI1d2i
S式はいつまで日陰なのか
なんでXMLは普及したのか
XMLの前身のHTMLはなぜS式ではなかったのか
無茶苦茶汚くなるスクリプト埋め込みやCSSとかをなぜ苦労してまで使うのか
そんなにS式が嫌か

463デフォルトの名無しさん2016/09/12(月) 18:18:05.53ID:q3qEXh1t
手習いの推薦図書で興味を惹かれたんだけど
物まね鳥きちんと読むと、どうなるの?
Lispをやるのにどんなご利益があるの?

464デフォルトの名無しさん2016/10/08(土) 11:21:36.68ID:fiaM9vLl
>そんなにS式が嫌か
はい

465デフォルトの名無しさん2016/10/08(土) 12:09:44.18ID:1yrGmOsT
括弧の対応わかんなくてインデントで対処したら
だったらインデントあれば括弧いらなくね?ってなって
いまでは立派なHaskeller

466デフォルトの名無しさん2016/10/08(土) 17:17:37.57ID:4LO02OW+
ごめんなさい、殺さないで

467デフォルトの名無しさん2016/10/08(土) 20:59:11.69ID:MxYncUTD
にわかHaskellerだけど立派ではないだろ盛るのもいいかげんにしろ

468はちみつ餃子 ◆8X2XSCHEME 2016/10/08(土) 21:05:09.85ID:vq0777oC
Gauche 0.9.5 出たよー

469デフォルトの名無しさん2016/10/09(日) 01:16:51.64ID:0XqPv4tB
いつまで0.9彷徨ってんだよ
そんなハードル高く設定して何になる

470デフォルトの名無しさん2016/10/10(月) 23:42:14.48ID:goEL863s
今のバージョンを何と呼ぼうと手に入る機能は変わらないのに、バカなの?

471はちみつ餃子 ◆8X2XSCHEME 2016/10/13(木) 14:55:07.45ID:j1zwT3+2
ナンバーが 1 未満だと未完成という印象になっちゃうのかな?
バージョンナンバーの振り方はそれぞれのプロジェクトでのポリシーで決める話。
Gauche の場合はこういうマイルストーンが設定されてる。
http://practical-scheme.net/gauche/devinfo-j.html

たぶん作者が考える一通りの機能がこれだけということではあるんだろうけど、
バージョン 0.9.5 は 0.9.5 という完成品だし、 1 を過ぎたからってそれで終わりってわけでもない。
所詮は一区切りの目安。

472デフォルトの名無しさん2016/10/13(木) 19:48:53.96ID:PkuNke6K
セマンティックバージョニングみたいなのがあるし、最近だと1.0を出さないのは個人で開発してるとおおいのかな?
昔はtexみたく収束していく系やってる人は多かったけど、やっぱり個人かね。

473デフォルトの名無しさん2016/10/14(金) 01:22:40.11ID:XWvLcjKQ
というかそのドット別に小数点じゃないし・・・
混同するのは間違いないのでいっそコロンやセミコロンで区切ったほうが理解しやすいかもしれない

474デフォルトの名無しさん2016/10/14(金) 10:16:22.13ID:vLfiDK4O
いや、本来は小数点だったよ
「0.9の次だけどまだ未完成だから0.10にしたよー」とかやらかしたから信用を失っただけで

475デフォルトの名無しさん2016/10/14(金) 18:32:55.43ID:7nOZHdhP
>>474
具体的なソフト名挙げろや。普通 0.91 とかに行くだろ。

476デフォルトの名無しさん2016/10/14(金) 19:07:47.56ID:zN4aic2C
社内業務ソフトですらバージョン番号が0.xなのってざらだと思うのだけどなぁ
1.0ってほぼこれで完璧的な意味で付ける会社もあるだろうし
(売り物のくせにVer 3の倍数から完璧の会社もあるけど:老舗のOS屋さんとか)
なお、1.0以降になるとちょっと仕様が変わっただけでメジャーバージョンが上がる会社もあるけど(猫科の動物の名前付ける所とか:Ver 9までクソだったような気もするけど)

ようするにバージョン番号って作者が自由に付ける物じゃないの?

477はちみつ餃子 ◆8X2XSCHEME 2016/10/14(金) 19:53:07.72ID:njZqyYby
>>476
自由でいいけど、ひとつのソフトは一貫した (わかりやすい) ルールを持っておいてほしくはあるね。

478デフォルトの名無しさん2016/10/14(金) 21:35:46.95ID:5nO9NwFR
まあ linux もいきなり 3.x になったり,よく分からない理由で 4.x になったり

479デフォルトの名無しさん2016/10/14(金) 21:53:32.26ID:SkqOUpcH
Windowsも10になったけど中身は8なんだろ?

480デフォルトの名無しさん2016/10/15(土) 10:14:21.43ID:C9liqmNs
0-originでバージョン付けたっていいじゃない。

481デフォルトの名無しさん2016/10/15(土) 21:27:25.53ID:bOlsxR9R
0.x.yは劇的な変更があっても泣くなよ、という意味合いだと思っている

個人的にはセマンティックバージョニングを付けてもらえるとありがたい
1.x.yなら、機能追加でxを1つ増やして、バグ修正でyを1つ増やすってやつ
0.a.bは開発途中だから後方互換性は無くてもいいので、開発者が試行錯誤しているうちは1未満だとはっきり分かる

firefoxやchromeの馬鹿みたいなバージョン上げはマーケティングの意味合いが強くて好きになれない

482デフォルトの名無しさん2016/10/15(土) 22:15:44.10ID:pvROaeUb
つーても実際非互換変更頻繁に入るから厳格に管理する意味ないだろ

483はちみつ餃子 ◆8X2XSCHEME 2016/10/16(日) 02:21:56.19ID:5wsvLL7T
仕様バグの修正なんかだと、バグ修正でもあるし、非互換な変更でもある。
ライブラリのバージョンにセマンティックバージョニングを採用した場合、
パッチバージョンの変更があったときにそのライブラリを使うアプリケーションが本当に正しく動くのかは
厳密にいえばライブラリの個別のバージョンを確認しないとわからんだろ。
あまりあてにならない。
ライブラリにバグがあってもそのバグの挙動に依存しているアプリケーションだってありうるわけで。

目安としてセマンティックバージョニングを導入するのは賛成だけど、厳密にしきれない部分はどうしてもあるわな。
そこらへんは柔軟に対処するしかしゃあねぇべ。

484デフォルトの名無しさん2016/10/16(日) 09:37:20.54ID:PjXU2mUU
>>482はJSブラウザエンジンの話な
何にしても各言語なりの界隈の慣習に則ればいい

485デフォルトの名無しさん2016/10/16(日) 18:47:56.29ID:dK/+e+o+
>>479
Windows8.1までは6.3とかだったけど
10は10.0が返ってくる

486デフォルトの名無しさん2016/10/17(月) 06:02:40.67ID:IeaGZ3RQ
そういうことにしちゃっただけで、実質8.xx(6.xx)みたいなもんでしょ

487デフォルトの名無しさん2016/11/15(火) 14:34:16.46ID:rex6X+v0
http://lipn.univ-paris13.fr/~bennani/CSRank.html
コンピュータ関連国際会議ランキングをlispで検索すると
European Lisp Workshop
しかなかった

488デフォルトの名無しさん2016/11/15(火) 22:07:24.81ID:Ei/g+r4v
https://en.m.wikipedia.org/wiki/International_Conference_on_Functional_Programming
時代の流れにより96年にFPCAとLFPがICFPに置き換えられた。

489デフォルトの名無しさん2016/12/07(水) 03:48:27.70ID:tATsD5IS
これがリストのランクcにすら入ってないのは何故
もうじき締め切りだけど
http://www.european-lisp-symposium.org/

490デフォルトの名無しさん2016/12/07(水) 10:57:02.71ID:IYOLLYww
何か革新的な話題無いの?

491デフォルトの名無しさん2016/12/08(木) 08:26:21.07ID:v+J3OHGS
Anything.el再起動と革新的話題では?

492デフォルトの名無しさん2016/12/15(木) 23:40:28.38ID:Z/98FfuD
>>462
つ WebAssembly

493デフォルトの名無しさん2017/01/25(水) 16:59:16.79ID:IDNrNCFj
>>492
命令セットの検討を優先したからとりあえず柔軟なS式ということにしただけで、
ずっとあれを使うつもりはないみたいだよ。

494デフォルトの名無しさん2017/01/25(水) 17:18:28.01ID:IDNrNCFj
ところで R7RS-Large は Red Edition (データ構造に関する部分) がワーキンググループの Wiki に上がってる。

http://trac.sacrideo.us/wg/wiki/RedEdition

ほぼ SRFI から名前を変えてそのまま導入する形になる模様。
今のところ Sagittarius が積極的にサポートしている。

http://compassoftime.blogspot.jp/2017/01/r7rs-large.html

Larceny もライブラリの名前を除いてサポートできているとのこと。

495デフォルトの名無しさん2017/02/12(日) 07:48:00.04ID:fljd0HzI
並列処理で高速化できるlispってないの?
GPU使えるのはハーランだけ?

496デフォルトの名無しさん2017/02/13(月) 18:51:16.49ID:tGnu7zYw
>>495
高速ブン回しと違うけど、Lisp Flavoured Erlangとかだめ?
ttp://lfe.io

497デフォルトの名無しさん2017/02/13(月) 19:49:20.99ID:19NXxZ/v
これはclojureの資料だけど、いまのところfloatをSSE2に投げるみたいな、なんでもGPUに投げるみたいな仕組みはないんじゃないかな。

http://dragan.rocks/talks/EuroClojure2016/clojure-is-not-afraid-of-the-gpu.html

498SCHEME餃子 ◆8X2XSCHEME 2017/02/13(月) 20:41:00.93ID:B8yZNpnE
ある程度大きな単位でならバインディング作って投げてしまえばいいんだけど、
ちまちまやると境界を超える部分のオーバーヘッドで逆効果になったりするので、
本格的にやろうとすると処理系自体がサポートする必要はあると思う。

499デフォルトの名無しさん2017/02/17(金) 09:12:11.58ID:SQwgU5dB
Racketのプログラムを並列化して高速化したい。ハーランに書き直すのが1番手間かからずに高速化できるのだろうか

500デフォルトの名無しさん2017/02/23(木) 05:43:04.17ID:hf6cZ/5o

501デフォルトの名無しさん2017/03/04(土) 17:46:48.41ID:ASS1Dwl9
『scheme手習い』読み始めた
この本自体はめっちゃ面白いけど実際に自分のPCでschemeを走らせる方法が全く分からないのはどうすれば

502 ◆QZaw55cn4c 2017/03/04(土) 17:50:05.86ID:bKHrRL1/
>>501
goche を入れればよい

503デフォルトの名無しさん2017/03/04(土) 18:14:56.86ID:ASS1Dwl9
>>502
ぐぐったらGaucheじゃないかってGoogleに怒られた
チュートリアルがないみたいだけど絶版の『プログラミングGauche』を買った方がいいの?

504デフォルトの名無しさん2017/03/04(土) 19:28:05.44ID:cw8QUsOc
プログラミングGaucheはそろそろ次版が欲しい

505デフォルトの名無しさん2017/03/05(日) 09:40:39.32ID:ZY1iiKPn
>>501
特にこだわりが無ければ、Racketが最も簡単なのでおすすめ。
ダウンロードしてインストールするだけでプログラミングに必要な環境が全て整うぞ。

506デフォルトの名無しさん2017/03/05(日) 15:16:43.40ID:g3CQlQFl
>>505
簡単でいいね
言語選択はR5RSでok?

507デフォルトの名無しさん2017/03/05(日) 18:35:17.08ID:PeNyQ7CN
>>506
オッケー

508SCHEME餃子 ◆8X2XSCHEME 2017/03/06(月) 19:02:32.45ID:4f//mV7K
個人的にはそろそろ R7RS (の処理系) を前提にしてもいいんじゃないかと思ってるが、
総合的な開発環境の便利さとしては Racket が優勝だわな。
少なくとも初心者にすすめられるものとしては。

509デフォルトの名無しさん2017/03/07(火) 15:34:16.05ID:d/UktTsb
>>508
> 個人的にはそろそろ R7RS (の処理系) を前提にしてもいいんじゃないかと思ってるが、

R7RSはsmallの範囲は言語仕様書のドラフトが提出されたというのを何かで見た覚えがあるが
R6RSで巨大化した範囲に対応largeの部分の仕様書はドラフトでも出たのか?
あれがまとまるとは思えんのだが

それに処理系側もR7RSへの対処は結局はsmallだけへの対応で終わる…R6RSが処理系屋からほとんど無視されたように…のでは、と
個人的には予想している
そしてその予想が正しいならば、R5RS対応の処理系を使う前提で十分な気がする
(R7RSで言語仕様をsmall/largeの2階層モデルにした意図が、Come back! R5RS! Good bye R6RS! X-p にあるのは明らかだからね)

510はつみつ餃子 ◆8X2XSCHEME 2017/03/07(火) 15:59:23.09ID:Jusdeq18
>>509
Large の状況については >>494 の通り。
全部の議論が終わるのはまだかなり先のことになるだろうし、
処理系の対応がどうなるかはまだなんとも言えないところはあるのは確かだと思う。
でも、 R7RS Small については R5RS を少し拡張するにとどまったからこそ、
その程度の小さな差を導入することをためらわなくていいんじゃないかという意図だった。

R5RS でも十分といえば十分なのかもしれないけど
特にライブラリなんかは結局のところ R5RS 処理系でもそれぞれの処理系ごとに機構を持ってたりするし、
SRFI を使ったりするときに統一的な書き方ができた方が教える方もやりやすいよ。

511デフォルトの名無しさん2017/03/07(火) 16:36:42.01ID:d/UktTsb
>>510
詳しい説明どうもありがとう
なるほど、そういうことですか、了解しました

512デフォルトの名無しさん2017/03/27(月) 00:34:43.57ID:vvNcurYK
ここはスレチかもしれんがGo言語の勉強兼ねてR7RS片手にScheme処理系組んでみようとしてるけどトークナイザ書くの面倒すぎて心折れそう、お前らどうやってコード書くモチベ維持してるの?

513デフォルトの名無しさん2017/03/27(月) 11:59:36.16ID:rJ5GwHyl
schemeレベルで面倒つったら他の演算子入りの言語じゃどうなるんだ

514デフォルトの名無しさん2017/03/27(月) 12:19:08.00ID:wLrtvEW7
トークナイザなら特に変わらん

515はつみつ餃子 ◆8X2XSCHEME 2017/03/27(月) 13:04:02.91ID:X8O8C+77
>>512
最初から完全である必要はないよ。
数値を整数だけにして文字列や識別子のエスケープも全部省略くらいのものから始めたらいいと思う。
限定的にでも動くものが目の前にあればモチベーションを維持しやすい。

516デフォルトの名無しさん2017/03/27(月) 16:27:52.97ID:do2TA6Gp
>>515
なるほど、とりあえず簡単なとこからやるか

517デフォルトの名無しさん2017/04/02(日) 12:22:30.38ID:aBxOBDdQ
通常のletのように使うだけでgensym済みのlet文を生成するマクロ用コードを作ったのですが、このような挙動をする関数名を教えてください。
(let ((foo (gensym))) `(let ((,foo ,x)) ...)

(my-let* ((foo x)) ...)
と書ける感じです。再発明でなく役立つのであればここにCC0で貼りたいです。

518デフォルトの名無しさん2017/04/02(日) 12:34:36.86ID:3lfrxhSb
On Lisp に with-gensyms っていうマクロが載ってるけど、
それとは違う?

519デフォルトの名無しさん2017/04/02(日) 12:49:44.85ID:aBxOBDdQ
with-gensymsではたぶんこうなると思います。
(with-gensyms (foo) `(let ((,foo ,x)) ...))

520デフォルトの名無しさん2017/04/02(日) 13:06:11.52ID:aBxOBDdQ
突然死しないうちにとりあえず貼りますね。
アカウントは消すのでいいものであればbase64で書き残します。
ttps://gist.github.com/lla/f9244aefb7eee18db4cd

521デフォルトの名無しさん2017/04/02(日) 19:23:02.31ID:28FWzFad
レキシカルスコープのletやlet*でgensym必要なの?
使い道が良く判らない

522デフォルトの名無しさん2017/04/03(月) 10:05:01.53ID:+t4V64u5
こういう時に要ると思うのですが...。要りませんか?
ttp://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-10.html#node_sec_8.2

523デフォルトの名無しさん2017/04/03(月) 15:23:03.92ID:dRI+3qaq
要るよ

524デフォルトの名無しさん2017/04/03(月) 21:22:49.93ID:e3RabMtG
`((lambda (foo) ...) ,x)と展開すりゃ要らないんじゃないの

525デフォルトの名無しさん2017/04/03(月) 21:45:51.66ID:hrRYx8PC
schemeでは衛生マクロを使うので不要だと思います。
commonlispでも仕様が中途半端なので不要だと思います。
そのまま書くのと手間が変わらないですし。

526デフォルトの名無しさん2017/04/04(火) 12:16:18.07ID:ugpuQ2R8
バカにマクロは無理だと何度

527デフォルトの名無しさん2017/04/04(火) 16:11:24.87ID:L5RxkvgF
(define-macro (my-or a b) `((lambda (x y) (if x x y)) ,a ,b))

>>524 こうですか? 副作用に対してはより良いと思いますが、関数化した時lambdaが二重になって連続使用した時嬉しくないと思います。

>>525 仕様が中途半端という点、gensymのプレフィックスがないこと以外で何か不都合の起きる文があれば知りたいです。それともgensym名の変数は込み入った文や副作用でセットすることが多く、最初に全てのシンボルに値を入れられると不便ということでしょうか?
 ネストが一つ減る程度の関数は不要ですか?

528デフォルトの名無しさん2017/04/04(火) 16:15:12.41ID:BUhgl6Ma
そもそもgensymがなんで必要なのかを理解しているのかという

529はつみつ餃子 ◆8X2XSCHEME 2017/04/04(火) 16:56:46.16ID:qLzzmr/Y
>>524
要るよ。

530デフォルトの名無しさん2017/04/04(火) 22:10:42.70ID:QobCLqKi
>>527 once-only っていう定番マクロしらないの?
(defmacro square (x) (my-let* ((g x)) `(* ,g ,g)))
(defmacro square (x) (once-only (x) `(* ,x ,x)))
それは中途半端なonce-onlyの再発明なんよ

531デフォルトの名無しさん2017/04/05(水) 11:30:15.85ID:must9X5J
and や orって短絡評価な気がして>>527はもやもやする
それと副作用のある式を同一式に並べるのは未定義だった気がする

532デフォルトの名無しさん2017/04/05(水) 11:40:21.51ID:0wF5qf+D
>>530
素敵です! ありがとうございます! これが探し求めていたものです。より良いものがあることを願っていました。

533デフォルトの名無しさん2017/04/05(水) 11:59:09.52ID:FrHqCsnx
>>531
確か評価順が未定義なだけ。

534デフォルトの名無しさん2017/04/05(水) 12:49:06.15ID:must9X5J
((a b c) d)の評価順序は
a b cの順序は決まってなくて(a b c)の後にdが評価されるのだけは保証されている。で合ってるよね?
もちろんマクロや特殊形式の引数は除外だけど>>527の展開結果は(a b c)と同じことになってる

さらに(or a b c)ならaがtrueの時点で評価打ち切りでb cは評価されない(短絡評価)
(or a b c)がマクロなら以下のように展開されないといけない
((lambda(x k) (if x x (k))) a (lambda() ((lambda(x k) (if x x (k))) b (lambda() c))))

535デフォルトの名無しさん2017/04/05(水) 12:51:42.98ID:must9X5J
>a b cの順序は決まってなくて(a b c)の後にdが評価されるのだけは保証されている。で合ってるよね?
これ合ってないわ。評価されるからそれを見越して>>534の最後のように遅延評価を入れとくって話
もういいです。

536デフォルトの名無しさん2017/04/05(水) 12:59:10.45ID:must9X5J
評価されるから、じゃなくて評価の順序が決まってないから
それを見越して無引数lambdaを1つ挟む必要があるだった。

537デフォルトの名無しさん2017/04/05(水) 13:01:01.45ID:must9X5J
気持ち悪いからまとめると、
((a b c) d)のa b c dの評価順序は何も決まってないから気をつけてねって事。

538デフォルトの名無しさん2017/04/05(水) 15:11:50.69ID:I9ofuKtd
最初の要素を最初に評価しないとマクロかどうか分からないかと思ってたが、その前の段階でマクロかどうかを判断することができるらしいんで、仕様では決まってないのか
((begin (display "1st\n") +) (begin (display "2nd\n") 2) (begin (display "3rd\n") 3))
をchezとgaucheで評価したら
2nd
3rd
1st
5
って順番だった。guileやchickenだと
1st
2nd
3rd
5
って順番になる。

539はつみつ餃子 ◆8X2XSCHEME 2017/04/05(水) 16:19:09.69ID:Paj3QjV7
最適化や諸々の都合で、同じ処理系でも順序が変わることはあるので、
単純な事例だけでは処理系の性質を推し量ることは出来ない。

540デフォルトの名無しさん2017/04/05(水) 17:06:07.45ID:0wF5qf+D
(define-macro (my-once-only1 x . body)
(let1 tmp (gensym)
`(glet1 ,tmp ,x
(let1 ,x ,tmp ,@body) )))

(use srfi-1)
(define-macro (my-once-only vars . body)
(let ((names (map (lambda (_) (gensym)) vars)) )
`(glet* ,(zip names vars)
(let ,(zip vars names) ,@body)
) ))
念願のものが作れました…。これで心残りはありません。

541はつみつ餃子 ◆8X2XSCHEME 2017/04/05(水) 20:28:07.58ID:Paj3QjV7
Scheme でやるなら syntax-rules でやったほうが楽だと思うが。

542デフォルトの名無しさん2017/04/06(木) 03:23:23.24ID:A4tBLGW+
>>533
> >>531
> 確か評価順が未定義なだけ。

少なくともSchemeではandやorでの式の評価順序は未定義でなくは左から順番に評価すると一意的に規定されているぞ
CLはどうだが知らんが

543デフォルトの名無しさん2017/04/06(木) 07:25:30.75ID:/2aNxn9F
>>542
そうだった。間違えた。
未定義なのは関数呼び出しの引数の評価順だね。

544デフォルトの名無しさん2017/04/06(木) 16:32:44.68ID:R/lK+iME
やっとリスト処理に慣れてgensymであーだこーだしてる人にsyntax-rulesは敷居高いと思う

545デフォルトの名無しさん2017/04/06(木) 16:36:20.16ID:sOUw0TpV
syntax-rulesはR7RS眺めてもよくわからんかった

546デフォルトの名無しさん2017/04/06(木) 18:46:00.39ID:b3KdhuXf
むしろSchemeから学ぶとマクロ入門にはsyntax-rulesしか書いてなくてdefine-macro&gensym触る機会が無かった

547はつみつ餃子 ◆8X2XSCHEME 2017/04/06(木) 21:09:32.30ID:HwCzkOKu
伝統的マクロの方が動作モデルを想像しやすくはあるかもね。

548デフォルトの名無しさん2017/04/13(木) 05:14:19.83ID:x8ZfQnJg
Racketは死んだ

549デフォルトの名無しさん2017/04/13(木) 16:03:04.54ID:RXvGitp8
>>546
> むしろSchemeから学ぶとマクロ入門にはsyntax-rulesしか書いてなくてdefine-macro&gensym触る機会が無かった

>>547
> 伝統的マクロの方が動作モデルを想像しやすくはあるかもね。

Schemeの場合、何でもありのマクロを排除して意味や動作を形式的に定義でき、
展開結果の正しさ(変数が展開したとたんに突然バインドされたりしない等)を保証できる範囲に留めたいという発想が
根底にあるからね

だからsyntax-rulesなどSchemeでの「マクロ」はあくまでも構文の拡張(カスタマイズ)のためなんだよね
つまり字句レベルを勝手に弄らせるとどんなトラブルでも起こし得るから勝手に弄らせたくたくない、
プログラマがお好みの構文を既存構文を使って定義して追加したいというならそれは許してあげよう
(例えばCみたいにwhile文…ループ条件の判定が最初に行われる構文…がある言語にrepeat〜until文を追加したいなら
許してあげように相当)というのがSchemeの基本的なスタンス

つまり、Schemeの場合はソースレベル(テキストレベルと言っても良い)で好き勝手な操作を許す本来のマクロ
(ソースコードレベルのメタプログラミング手段)でなくて、抽象構文レベルでの変換規則を定義し使用する範囲だけに
限定しているんだと考えれば良いと個人的には思ってるけどね

だから(メタ)プログラムの動きで理解するタイプの人(プログラマには多い、特に優秀な人ほど)にとっては
古典的なマクロのほうが却って理解しやすく、逆に理屈が好きで系統的に理解したがる(代わりにプログラムの腕は
さほどでないのが多い)人間にはSchemeの構文拡張のほうが理解しやすくそちらを好む人が多い

もっともsyntax-rulesとかを提案して実現した向うの連中はプログラミングの腕力も上級者以上ばかりだけどね
(でも殆どの凡人は、プログラミングの腕か理屈かの高々どちらかしか得意でない、まあだからこそ凡人なわけでして
どっちも両立できちゃったらGuy Steele, Jr.みたいになれちゃうよね)

550デフォルトの名無しさん2017/04/13(木) 16:37:53.95ID:UOOoC4Ge
syntax-rulesの動きがよくわからなくて理解できなかったけど古典的マクロなら単純で理解しやすかったな、準クォート使えば面倒でもなかったし(プログラムの腕はだめです)

551デフォルトの名無しさん2017/04/13(木) 21:50:42.52ID:KIw0CyXw
>>549 あくまでも構文の拡張のため
他のlispでもそうでしょ.具体的にそれ以外の他になにがある?

552デフォルトの名無しさん2017/04/14(金) 01:29:59.73ID:ktX2OX7O
>>551
他のLispに限らずマクロは構文の拡張と言えるほどの系統的な代物にはなってないでしょ
だからマクロを展開した途端にグローバルだったはずの変数が束縛されてローカルな変数に化けたりする(変数のキャプチャね)
つまり通常のマクロは(必要に応じて実行時と同じ計算も許して)ソーステキストという文字列データを処理しているだけ

それに対してsyntax-rulesなどに代表されるSchemeのは抽象構文上での操作とすることでテキストという文字でなく構文の句構造のレベルで扱い
変数のキャプチャなどを起こさないように保証するわけだ

ソースコードを文字データとして処理するのか句構造として処理するのかでは考え方も保証できる正しさや展開の安全性も全く違う

553デフォルトの名無しさん2017/04/14(金) 02:55:56.83ID:f5XItAeI
>>552
> lispマクロは構文の拡張と言えるほどの系統的な代物にはなってない.
そんなお前定義しらんし,そんならsyntax-rulesも違う.
はなしが無限退行しそうだからもういいわ.

554デフォルトの名無しさん2017/04/14(金) 03:00:40.04ID:obKv6Nr0
Common lispにschemeのmatchマクロを移植したのないのでしょうか?

555デフォルトの名無しさん2017/04/14(金) 07:39:01.84ID:a6xDhPFv
さあ、わかんなくなってきました。
とにかくsyntax-rulesの方が高級で、実装がめんどくさくて、低機能で、とりあえずほとんどの用はたりる。

556デフォルトの名無しさん2017/04/14(金) 20:02:05.16ID:E0l2Apap
そのめんどくさいの一点だけでLISP系にsyntax-を導入する価値は微妙
パターンマッチだからLISPじゃなくていいわけよね
syntax-rule/caseを日本語で詳細解説した本とかWebページってない?

557デフォルトの名無しさん2017/04/14(金) 20:06:23.95ID:E0l2Apap
なんだっけsyntax-rule/caseの他にもう2つぐらい別種があるんだよね
重複しないシンボル名の管理の観点では手間は同じだけど概念的にはより簡単な感じだったと思う

558デフォルトの名無しさん2017/04/15(土) 09:36:50.92ID:MGc4G7Yt
case は削除されなかった?他の2つも結局どうなったんだか

559はつみつ餃子 ◆8X2XSCHEME 2017/04/15(土) 11:21:48.74ID:7hkWD0i5
>>556
> そのめんどくさいの一点だけでLISP系にsyntax-を導入する価値は微妙

一概には言えない。
たとえば letrec のようなものをマクロで書こうとするとフォームを分解したり
衛生的にしたりする処理はいずれにしても必要なことで、
それを自動的にやってくれる syntax-rules だと簡単に書ける。

syntax-rules や syntax-case は言語のプリミティブな機能としては高級すぎるのは確かで、
これは低水準の部分でどのパラダイムを採用するかで意見が一致しなかった末の妥協案として
いきなり高級な機能を持ち込んだ結果。

参考: http://blog.practical-scheme.net/shiro?20100425-scheme-macro

実際の処理系では explicit renaming や syntactic closure を基礎に据えてその上に
syntax-rules や syntax-case のインターフェイスを実装している場合もよくある。

560デフォルトの名無しさん2017/04/15(土) 15:50:40.85ID:HoujqO6s
schemeだとread macroの定義ってどないなっとるん?
自分common lispとバージョンが上がるといつ消えるか解らないclojureのしか知らんのだけど。

561はつみつ餃子 ◆8X2XSCHEME 2017/04/15(土) 16:38:57.94ID:7hkWD0i5
>>560
リードマクロについては Scheme の仕様には含まれないし SRFI にもないし、デファクトスタンダードといえるものもない。
処理系が独自にやっている場合はあるけど。

私見だが、 Common Lisp に比べて Scheme はモジュール化を強く意識していると思う。
R6RS でフェイズの制御について一応の考え方が確立したものの、
リーダの適用範囲をうまく制御するにはまた別の軸を持ち込む必要があるので厄介なのだと思う。

562デフォルトの名無しさん2017/04/15(土) 18:36:19.85ID:HoujqO6s
>>561
あ、やっぱりなかったのか探しても定義みつらんわけだ
DSL書きたいので処理系の小さい実装のschemeでやろうとおもったのだけど駄目か orz

ありがとね

563デフォルトの名無しさん2017/04/15(土) 19:13:45.64ID:zbZeczCO
Racket はどうや?

564デフォルトの名無しさん2017/04/15(土) 19:35:50.51ID:6k6YVb1i
schemeのリードマクロってCL踏襲じゃまずい理由でもあるの?
健全とか関係なくね?

565はつみつ餃子 ◆8X2XSCHEME 2017/04/16(日) 01:42:41.27ID:H6tmXYoH
>>562
それはいっそプリプロセッサ的なものを書いてしまえばいいんでないかい?

566デフォルトの名無しさん2017/05/20(土) 21:49:25.89ID:hZyWUkTA
Lispの論文で英語表現とか定理の書き方みたいので参考になる論文ってどこらへんみればいいでしょう

567デフォルトの名無しさん2017/05/20(土) 21:54:10.22ID:1QdXRE7A
>>566
定理はともかく英語表現はRnRSの原本読んどけばいいんじゃないかな
後はこんなのとか
http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-353.pdf
wikipediaのScheme系の記事の参照元を読み漁るといいと思う

568デフォルトの名無しさん2017/05/22(月) 19:02:01.63ID:qyIfdaRr
RnRS は仕様書っぽい言い回しだけど論文と同じかなぁ、論文読む方に賛成

569デフォルトの名無しさん2017/05/24(水) 08:06:22.98ID:HxetDgQ4
>>564
リードテーブルの状態によってプログラムの意味が変わってしまうのは不健全さを嫌うScheme的にはだめでしょ

570デフォルトの名無しさん2017/05/24(水) 15:27:40.12ID:jXaLafTB
>>569 の主観なのかそれとも論文にまとまってたりするのか.
racket#!langはどうなる.

571デフォルトの名無しさん2017/05/25(木) 19:06:27.53ID:XPkyG+P/
>>570
そもそもRacketはScheme的にだめでしょ

572デフォルトの名無しさん2017/05/25(木) 21:07:52.50ID:1hi1bgKK
わかったおまえの主観ってことな.あんがと.

新着レスの表示
レスを投稿する