X



Lisp Scheme Part40 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん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/
0469デフォルトの名無しさん2016/10/09(日) 01:16:51.64ID:0XqPv4tB
いつまで0.9彷徨ってんだよ
そんなハードル高く設定して何になる
0470デフォルトの名無しさん2016/10/10(月) 23:42:14.48ID:goEL863s
今のバージョンを何と呼ぼうと手に入る機能は変わらないのに、バカなの?
0471はちみつ餃子 ◆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 を過ぎたからってそれで終わりってわけでもない。
所詮は一区切りの目安。
0472デフォルトの名無しさん2016/10/13(木) 19:48:53.96ID:PkuNke6K
セマンティックバージョニングみたいなのがあるし、最近だと1.0を出さないのは個人で開発してるとおおいのかな?
昔はtexみたく収束していく系やってる人は多かったけど、やっぱり個人かね。
0473デフォルトの名無しさん2016/10/14(金) 01:22:40.11ID:XWvLcjKQ
というかそのドット別に小数点じゃないし・・・
混同するのは間違いないのでいっそコロンやセミコロンで区切ったほうが理解しやすいかもしれない
0474デフォルトの名無しさん2016/10/14(金) 10:16:22.13ID:vLfiDK4O
いや、本来は小数点だったよ
「0.9の次だけどまだ未完成だから0.10にしたよー」とかやらかしたから信用を失っただけで
0476デフォルトの名無しさん2016/10/14(金) 19:07:47.56ID:zN4aic2C
社内業務ソフトですらバージョン番号が0.xなのってざらだと思うのだけどなぁ
1.0ってほぼこれで完璧的な意味で付ける会社もあるだろうし
(売り物のくせにVer 3の倍数から完璧の会社もあるけど:老舗のOS屋さんとか)
なお、1.0以降になるとちょっと仕様が変わっただけでメジャーバージョンが上がる会社もあるけど(猫科の動物の名前付ける所とか:Ver 9までクソだったような気もするけど)

ようするにバージョン番号って作者が自由に付ける物じゃないの?
0477はちみつ餃子 ◆8X2XSCHEME 2016/10/14(金) 19:53:07.72ID:njZqyYby
>>476
自由でいいけど、ひとつのソフトは一貫した (わかりやすい) ルールを持っておいてほしくはあるね。
0478デフォルトの名無しさん2016/10/14(金) 21:35:46.95ID:5nO9NwFR
まあ linux もいきなり 3.x になったり,よく分からない理由で 4.x になったり
0481デフォルトの名無しさん2016/10/15(土) 21:27:25.53ID:bOlsxR9R
0.x.yは劇的な変更があっても泣くなよ、という意味合いだと思っている

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

firefoxやchromeの馬鹿みたいなバージョン上げはマーケティングの意味合いが強くて好きになれない
0482デフォルトの名無しさん2016/10/15(土) 22:15:44.10ID:pvROaeUb
つーても実際非互換変更頻繁に入るから厳格に管理する意味ないだろ
0483はちみつ餃子 ◆8X2XSCHEME 2016/10/16(日) 02:21:56.19ID:5wsvLL7T
仕様バグの修正なんかだと、バグ修正でもあるし、非互換な変更でもある。
ライブラリのバージョンにセマンティックバージョニングを採用した場合、
パッチバージョンの変更があったときにそのライブラリを使うアプリケーションが本当に正しく動くのかは
厳密にいえばライブラリの個別のバージョンを確認しないとわからんだろ。
あまりあてにならない。
ライブラリにバグがあってもそのバグの挙動に依存しているアプリケーションだってありうるわけで。

目安としてセマンティックバージョニングを導入するのは賛成だけど、厳密にしきれない部分はどうしてもあるわな。
そこらへんは柔軟に対処するしかしゃあねぇべ。
0486デフォルトの名無しさん2016/10/17(月) 06:02:40.67ID:IeaGZ3RQ
そういうことにしちゃっただけで、実質8.xx(6.xx)みたいなもんでしょ
0493デフォルトの名無しさん2017/01/25(水) 16:59:16.79ID:IDNrNCFj
>>492
命令セットの検討を優先したからとりあえず柔軟なS式ということにしただけで、
ずっとあれを使うつもりはないみたいだよ。
0494デフォルトの名無しさん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 もライブラリの名前を除いてサポートできているとのこと。
0495デフォルトの名無しさん2017/02/12(日) 07:48:00.04ID:fljd0HzI
並列処理で高速化できるlispってないの?
GPU使えるのはハーランだけ?
0498SCHEME餃子 ◆8X2XSCHEME 2017/02/13(月) 20:41:00.93ID:B8yZNpnE
ある程度大きな単位でならバインディング作って投げてしまえばいいんだけど、
ちまちまやると境界を超える部分のオーバーヘッドで逆効果になったりするので、
本格的にやろうとすると処理系自体がサポートする必要はあると思う。
0499デフォルトの名無しさん2017/02/17(金) 09:12:11.58ID:SQwgU5dB
Racketのプログラムを並列化して高速化したい。ハーランに書き直すのが1番手間かからずに高速化できるのだろうか
0501デフォルトの名無しさん2017/03/04(土) 17:46:48.41ID:ASS1Dwl9
『scheme手習い』読み始めた
この本自体はめっちゃ面白いけど実際に自分のPCでschemeを走らせる方法が全く分からないのはどうすれば
0503デフォルトの名無しさん2017/03/04(土) 18:14:56.86ID:ASS1Dwl9
>>502
ぐぐったらGaucheじゃないかってGoogleに怒られた
チュートリアルがないみたいだけど絶版の『プログラミングGauche』を買った方がいいの?
0505デフォルトの名無しさん2017/03/05(日) 09:40:39.32ID:ZY1iiKPn
>>501
特にこだわりが無ければ、Racketが最も簡単なのでおすすめ。
ダウンロードしてインストールするだけでプログラミングに必要な環境が全て整うぞ。
0508SCHEME餃子 ◆8X2XSCHEME 2017/03/06(月) 19:02:32.45ID:4f//mV7K
個人的にはそろそろ R7RS (の処理系) を前提にしてもいいんじゃないかと思ってるが、
総合的な開発環境の便利さとしては Racket が優勝だわな。
少なくとも初心者にすすめられるものとしては。
0509デフォルトの名無しさん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 にあるのは明らかだからね)
0510はつみつ餃子 ◆8X2XSCHEME 2017/03/07(火) 15:59:23.09ID:Jusdeq18
>>509
Large の状況については >>494 の通り。
全部の議論が終わるのはまだかなり先のことになるだろうし、
処理系の対応がどうなるかはまだなんとも言えないところはあるのは確かだと思う。
でも、 R7RS Small については R5RS を少し拡張するにとどまったからこそ、
その程度の小さな差を導入することをためらわなくていいんじゃないかという意図だった。

R5RS でも十分といえば十分なのかもしれないけど
特にライブラリなんかは結局のところ R5RS 処理系でもそれぞれの処理系ごとに機構を持ってたりするし、
SRFI を使ったりするときに統一的な書き方ができた方が教える方もやりやすいよ。
0512デフォルトの名無しさん2017/03/27(月) 00:34:43.57ID:vvNcurYK
ここはスレチかもしれんがGo言語の勉強兼ねてR7RS片手にScheme処理系組んでみようとしてるけどトークナイザ書くの面倒すぎて心折れそう、お前らどうやってコード書くモチベ維持してるの?
0513デフォルトの名無しさん2017/03/27(月) 11:59:36.16ID:rJ5GwHyl
schemeレベルで面倒つったら他の演算子入りの言語じゃどうなるんだ
0514デフォルトの名無しさん2017/03/27(月) 12:19:08.00ID:wLrtvEW7
トークナイザなら特に変わらん
0515はつみつ餃子 ◆8X2XSCHEME 2017/03/27(月) 13:04:02.91ID:X8O8C+77
>>512
最初から完全である必要はないよ。
数値を整数だけにして文字列や識別子のエスケープも全部省略くらいのものから始めたらいいと思う。
限定的にでも動くものが目の前にあればモチベーションを維持しやすい。
0517デフォルトの名無しさん2017/04/02(日) 12:22:30.38ID:aBxOBDdQ
通常のletのように使うだけでgensym済みのlet文を生成するマクロ用コードを作ったのですが、このような挙動をする関数名を教えてください。
(let ((foo (gensym))) `(let ((,foo ,x)) ...)

(my-let* ((foo x)) ...)
と書ける感じです。再発明でなく役立つのであればここにCC0で貼りたいです。
0518デフォルトの名無しさん2017/04/02(日) 12:34:36.86ID:3lfrxhSb
On Lisp に with-gensyms っていうマクロが載ってるけど、
それとは違う?
0519デフォルトの名無しさん2017/04/02(日) 12:49:44.85ID:aBxOBDdQ
with-gensymsではたぶんこうなると思います。
(with-gensyms (foo) `(let ((,foo ,x)) ...))
0520デフォルトの名無しさん2017/04/02(日) 13:06:11.52ID:aBxOBDdQ
突然死しないうちにとりあえず貼りますね。
アカウントは消すのでいいものであればbase64で書き残します。
ttps://gist.github.com/lla/f9244aefb7eee18db4cd
0521デフォルトの名無しさん2017/04/02(日) 19:23:02.31ID:28FWzFad
レキシカルスコープのletやlet*でgensym必要なの?
使い道が良く判らない
0522デフォルトの名無しさん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
0525デフォルトの名無しさん2017/04/03(月) 21:45:51.66ID:hrRYx8PC
schemeでは衛生マクロを使うので不要だと思います。
commonlispでも仕様が中途半端なので不要だと思います。
そのまま書くのと手間が変わらないですし。
0526デフォルトの名無しさん2017/04/04(火) 12:16:18.07ID:ugpuQ2R8
バカにマクロは無理だと何度
0527デフォルトの名無しさん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名の変数は込み入った文や副作用でセットすることが多く、最初に全てのシンボルに値を入れられると不便ということでしょうか?
 ネストが一つ減る程度の関数は不要ですか?
0530デフォルトの名無しさん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の再発明なんよ
0531デフォルトの名無しさん2017/04/05(水) 11:30:15.85ID:must9X5J
and や orって短絡評価な気がして>>527はもやもやする
それと副作用のある式を同一式に並べるのは未定義だった気がする
0532デフォルトの名無しさん2017/04/05(水) 11:40:21.51ID:0wF5qf+D
>>530
素敵です! ありがとうございます! これが探し求めていたものです。より良いものがあることを願っていました。
0534デフォルトの名無しさん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))))
0535デフォルトの名無しさん2017/04/05(水) 12:51:42.98ID:must9X5J
>a b cの順序は決まってなくて(a b c)の後にdが評価されるのだけは保証されている。で合ってるよね?
これ合ってないわ。評価されるからそれを見越して>>534の最後のように遅延評価を入れとくって話
もういいです。
0536デフォルトの名無しさん2017/04/05(水) 12:59:10.45ID:must9X5J
評価されるから、じゃなくて評価の順序が決まってないから
それを見越して無引数lambdaを1つ挟む必要があるだった。
0537デフォルトの名無しさん2017/04/05(水) 13:01:01.45ID:must9X5J
気持ち悪いからまとめると、
((a b c) d)のa b c dの評価順序は何も決まってないから気をつけてねって事。
0538デフォルトの名無しさん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
って順番になる。
0539はつみつ餃子 ◆8X2XSCHEME 2017/04/05(水) 16:19:09.69ID:Paj3QjV7
最適化や諸々の都合で、同じ処理系でも順序が変わることはあるので、
単純な事例だけでは処理系の性質を推し量ることは出来ない。
0540デフォルトの名無しさん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)
) ))
念願のものが作れました…。これで心残りはありません。
0542デフォルトの名無しさん2017/04/06(木) 03:23:23.24ID:A4tBLGW+
>>533
> >>531
> 確か評価順が未定義なだけ。

少なくともSchemeではandやorでの式の評価順序は未定義でなくは左から順番に評価すると一意的に規定されているぞ
CLはどうだが知らんが
0544デフォルトの名無しさん2017/04/06(木) 16:32:44.68ID:R/lK+iME
やっとリスト処理に慣れてgensymであーだこーだしてる人にsyntax-rulesは敷居高いと思う
0546デフォルトの名無しさん2017/04/06(木) 18:46:00.39ID:b3KdhuXf
むしろSchemeから学ぶとマクロ入門にはsyntax-rulesしか書いてなくてdefine-macro&gensym触る機会が無かった
0549デフォルトの名無しさん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.みたいになれちゃうよね)
0550デフォルトの名無しさん2017/04/13(木) 16:37:53.95ID:UOOoC4Ge
syntax-rulesの動きがよくわからなくて理解できなかったけど古典的マクロなら単純で理解しやすかったな、準クォート使えば面倒でもなかったし(プログラムの腕はだめです)
0551デフォルトの名無しさん2017/04/13(木) 21:50:42.52ID:KIw0CyXw
>>549 あくまでも構文の拡張のため
他のlispでもそうでしょ.具体的にそれ以外の他になにがある?
0552デフォルトの名無しさん2017/04/14(金) 01:29:59.73ID:ktX2OX7O
>>551
他のLispに限らずマクロは構文の拡張と言えるほどの系統的な代物にはなってないでしょ
だからマクロを展開した途端にグローバルだったはずの変数が束縛されてローカルな変数に化けたりする(変数のキャプチャね)
つまり通常のマクロは(必要に応じて実行時と同じ計算も許して)ソーステキストという文字列データを処理しているだけ

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

ソースコードを文字データとして処理するのか句構造として処理するのかでは考え方も保証できる正しさや展開の安全性も全く違う
0553デフォルトの名無しさん2017/04/14(金) 02:55:56.83ID:f5XItAeI
>>552
> lispマクロは構文の拡張と言えるほどの系統的な代物にはなってない.
そんなお前定義しらんし,そんならsyntax-rulesも違う.
はなしが無限退行しそうだからもういいわ.
0555デフォルトの名無しさん2017/04/14(金) 07:39:01.84ID:a6xDhPFv
さあ、わかんなくなってきました。
とにかくsyntax-rulesの方が高級で、実装がめんどくさくて、低機能で、とりあえずほとんどの用はたりる。
0556デフォルトの名無しさん2017/04/14(金) 20:02:05.16ID:E0l2Apap
そのめんどくさいの一点だけでLISP系にsyntax-を導入する価値は微妙
パターンマッチだからLISPじゃなくていいわけよね
syntax-rule/caseを日本語で詳細解説した本とかWebページってない?
0557デフォルトの名無しさん2017/04/14(金) 20:06:23.95ID:E0l2Apap
なんだっけsyntax-rule/caseの他にもう2つぐらい別種があるんだよね
重複しないシンボル名の管理の観点では手間は同じだけど概念的にはより簡単な感じだったと思う
0559はつみつ餃子 ◆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 のインターフェイスを実装している場合もよくある。
0560デフォルトの名無しさん2017/04/15(土) 15:50:40.85ID:HoujqO6s
schemeだとread macroの定義ってどないなっとるん?
自分common lispとバージョンが上がるといつ消えるか解らないclojureのしか知らんのだけど。
0561はつみつ餃子 ◆8X2XSCHEME 2017/04/15(土) 16:38:57.94ID:7hkWD0i5
>>560
リードマクロについては Scheme の仕様には含まれないし SRFI にもないし、デファクトスタンダードといえるものもない。
処理系が独自にやっている場合はあるけど。

私見だが、 Common Lisp に比べて Scheme はモジュール化を強く意識していると思う。
R6RS でフェイズの制御について一応の考え方が確立したものの、
リーダの適用範囲をうまく制御するにはまた別の軸を持ち込む必要があるので厄介なのだと思う。
0562デフォルトの名無しさん2017/04/15(土) 18:36:19.85ID:HoujqO6s
>>561
あ、やっぱりなかったのか探しても定義みつらんわけだ
DSL書きたいので処理系の小さい実装のschemeでやろうとおもったのだけど駄目か orz

ありがとね
0564デフォルトの名無しさん2017/04/15(土) 19:35:50.51ID:6k6YVb1i
schemeのリードマクロってCL踏襲じゃまずい理由でもあるの?
健全とか関係なくね?
0566デフォルトの名無しさん2017/05/20(土) 21:49:25.89ID:hZyWUkTA
Lispの論文で英語表現とか定理の書き方みたいので参考になる論文ってどこらへんみればいいでしょう
0568デフォルトの名無しさん2017/05/22(月) 19:02:01.63ID:qyIfdaRr
RnRS は仕様書っぽい言い回しだけど論文と同じかなぁ、論文読む方に賛成
0569デフォルトの名無しさん2017/05/24(水) 08:06:22.98ID:HxetDgQ4
>>564
リードテーブルの状態によってプログラムの意味が変わってしまうのは不健全さを嫌うScheme的にはだめでしょ
■ このスレッドは過去ログ倉庫に格納されています

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