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/
探検
Lisp Scheme Part40 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2015/03/16(月) 13:45:52.92ID:EEYZoZ1i
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 にあるのは明らかだからね)
> 個人的にはそろそろ 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 を使ったりするときに統一的な書き方ができた方が教える方もやりやすいよ。
Large の状況については >>494 の通り。
全部の議論が終わるのはまだかなり先のことになるだろうし、
処理系の対応がどうなるかはまだなんとも言えないところはあるのは確かだと思う。
でも、 R7RS Small については R5RS を少し拡張するにとどまったからこそ、
その程度の小さな差を導入することをためらわなくていいんじゃないかという意図だった。
R5RS でも十分といえば十分なのかもしれないけど
特にライブラリなんかは結局のところ R5RS 処理系でもそれぞれの処理系ごとに機構を持ってたりするし、
SRFI を使ったりするときに統一的な書き方ができた方が教える方もやりやすいよ。
511デフォルトの名無しさん
2017/03/07(火) 16:36:42.01ID:d/UktTsb512デフォルトの名無しさん
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で貼りたいです。
(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)) ...))
(with-gensyms (foo) `(let ((,foo ,x)) ...))
520デフォルトの名無しさん
2017/04/02(日) 13:06:11.52ID:aBxOBDdQ 突然死しないうちにとりあえず貼りますね。
アカウントは消すのでいいものであればbase64で書き残します。
ttps://gist.github.com/lla/f9244aefb7eee18db4cd
アカウントは消すのでいいものであれば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
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でも仕様が中途半端なので不要だと思います。
そのまま書くのと手間が変わらないですし。
commonlispでも仕様が中途半端なので不要だと思います。
そのまま書くのと手間が変わらないですし。
526デフォルトの名無しさん
2017/04/04(火) 12:16:18.07ID:ugpuQ2R8 バカにマクロは無理だと何度
527デフォルトの名無しさん
2017/04/04(火) 16:11:24.87ID:L5RxkvgF528デフォルトの名無しさん
2017/04/04(火) 16:15:12.41ID:BUhgl6Ma そもそもgensymがなんで必要なのかを理解しているのかという
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の再発明なんよ
(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))))
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の最後のように遅延評価を入れとくって話
もういいです。
これ合ってないわ。評価されるからそれを見越して>>534の最後のように遅延評価を入れとくって話
もういいです。
536デフォルトの名無しさん
2017/04/05(水) 12:59:10.45ID:must9X5J 評価されるから、じゃなくて評価の順序が決まってないから
それを見越して無引数lambdaを1つ挟む必要があるだった。
それを見越して無引数lambdaを1つ挟む必要があるだった。
537デフォルトの名無しさん
2017/04/05(水) 13:01:01.45ID:must9X5J 気持ち悪いからまとめると、
((a b c) d)のa b c dの評価順序は何も決まってないから気をつけてねって事。
((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
って順番になる。
((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)
) ))
念願のものが作れました…。これで心残りはありません。
(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+543デフォルトの名無しさん
2017/04/06(木) 07:25:30.75ID:/2aNxn9F544デフォルトの名無しさん
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.みたいになれちゃうよね)
> むしろ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でもそうでしょ.具体的にそれ以外の他になにがある?
他のlispでもそうでしょ.具体的にそれ以外の他になにがある?
552デフォルトの名無しさん
2017/04/14(金) 01:29:59.73ID:ktX2OX7O >>551
他のLispに限らずマクロは構文の拡張と言えるほどの系統的な代物にはなってないでしょ
だからマクロを展開した途端にグローバルだったはずの変数が束縛されてローカルな変数に化けたりする(変数のキャプチャね)
つまり通常のマクロは(必要に応じて実行時と同じ計算も許して)ソーステキストという文字列データを処理しているだけ
それに対してsyntax-rulesなどに代表されるSchemeのは抽象構文上での操作とすることでテキストという文字でなく構文の句構造のレベルで扱い
変数のキャプチャなどを起こさないように保証するわけだ
ソースコードを文字データとして処理するのか句構造として処理するのかでは考え方も保証できる正しさや展開の安全性も全く違う
他のLispに限らずマクロは構文の拡張と言えるほどの系統的な代物にはなってないでしょ
だからマクロを展開した途端にグローバルだったはずの変数が束縛されてローカルな変数に化けたりする(変数のキャプチャね)
つまり通常のマクロは(必要に応じて実行時と同じ計算も許して)ソーステキストという文字列データを処理しているだけ
それに対してsyntax-rulesなどに代表されるSchemeのは抽象構文上での操作とすることでテキストという文字でなく構文の句構造のレベルで扱い
変数のキャプチャなどを起こさないように保証するわけだ
ソースコードを文字データとして処理するのか句構造として処理するのかでは考え方も保証できる正しさや展開の安全性も全く違う
553デフォルトの名無しさん
2017/04/14(金) 02:55:56.83ID:f5XItAeI554デフォルトの名無しさん
2017/04/14(金) 03:00:40.04ID:obKv6Nr0 Common lispにschemeのmatchマクロを移植したのないのでしょうか?
555デフォルトの名無しさん
2017/04/14(金) 07:39:01.84ID:a6xDhPFv さあ、わかんなくなってきました。
とにかくsyntax-rulesの方が高級で、実装がめんどくさくて、低機能で、とりあえずほとんどの用はたりる。
とにかくsyntax-rulesの方が高級で、実装がめんどくさくて、低機能で、とりあえずほとんどの用はたりる。
556デフォルトの名無しさん
2017/04/14(金) 20:02:05.16ID:E0l2Apap そのめんどくさいの一点だけでLISP系にsyntax-を導入する価値は微妙
パターンマッチだからLISPじゃなくていいわけよね
syntax-rule/caseを日本語で詳細解説した本とかWebページってない?
パターンマッチだから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 のインターフェイスを実装している場合もよくある。
> そのめんどくさいの一点だけで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のしか知らんのだけど。
自分common lispとバージョンが上がるといつ消えるか解らないclojureのしか知らんのだけど。
561はつみつ餃子 ◆8X2XSCHEME
2017/04/15(土) 16:38:57.94ID:7hkWD0i5 >>560
リードマクロについては Scheme の仕様には含まれないし SRFI にもないし、デファクトスタンダードといえるものもない。
処理系が独自にやっている場合はあるけど。
私見だが、 Common Lisp に比べて Scheme はモジュール化を強く意識していると思う。
R6RS でフェイズの制御について一応の考え方が確立したものの、
リーダの適用範囲をうまく制御するにはまた別の軸を持ち込む必要があるので厄介なのだと思う。
リードマクロについては Scheme の仕様には含まれないし SRFI にもないし、デファクトスタンダードといえるものもない。
処理系が独自にやっている場合はあるけど。
私見だが、 Common Lisp に比べて Scheme はモジュール化を強く意識していると思う。
R6RS でフェイズの制御について一応の考え方が確立したものの、
リーダの適用範囲をうまく制御するにはまた別の軸を持ち込む必要があるので厄介なのだと思う。
562デフォルトの名無しさん
2017/04/15(土) 18:36:19.85ID:HoujqO6s563デフォルトの名無しさん
2017/04/15(土) 19:13:45.64ID:zbZeczCO Racket はどうや?
564デフォルトの名無しさん
2017/04/15(土) 19:35:50.51ID:6k6YVb1i schemeのリードマクロってCL踏襲じゃまずい理由でもあるの?
健全とか関係なくね?
健全とか関係なくね?
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系の記事の参照元を読み漁るといいと思う
定理はともかく英語表現は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的にはだめでしょ
リードテーブルの状態によってプログラムの意味が変わってしまうのは不健全さを嫌うScheme的にはだめでしょ
570デフォルトの名無しさん
2017/05/24(水) 15:27:40.12ID:jXaLafTB >>569 の主観なのかそれとも論文にまとまってたりするのか.
racket#!langはどうなる.
racket#!langはどうなる.
571デフォルトの名無しさん
2017/05/25(木) 19:06:27.53ID:XPkyG+P/ >>570
そもそもRacketはScheme的にだめでしょ
そもそもRacketはScheme的にだめでしょ
572デフォルトの名無しさん
2017/05/25(木) 21:07:52.50ID:1hi1bgKK わかったおまえの主観ってことな.あんがと.
573デフォルトの名無しさん
2017/05/26(金) 16:53:05.43ID:NdkbHKTg Chez Schemeの日本語ドキュメントないの〜?
574はつみつ餃子 ◆8X2XSCHEME
2017/05/27(土) 18:03:08.42ID:O+COb9Mx ない。
575デフォルトの名無しさん
2017/05/28(日) 00:02:44.20ID:k20WIr1s ちぇっ
576はつみつ餃子 ◆8X2XSCHEME
2017/05/28(日) 17:36:39.82ID:KnUhHSDN Chez Scheme について具体的に知りたいことがあればここで質問すれば簡単な回答くらいはつくかも?
577デフォルトの名無しさん
2017/05/30(火) 00:45:37.72ID:Dd0ZuLcv 最近のlisp webフレームワークで良いのって何でしょうか
578デフォルトの名無しさん
2017/05/30(火) 00:48:16.84ID:kWERrntF Kahuaなら知ってるが更新されてないっぽいし使ったことないからよくわからん
579はつみつ餃子 ◆8X2XSCHEME
2017/05/30(火) 02:45:46.19ID:Gds8xcWJ580デフォルトの名無しさん
2017/06/11(日) 12:44:37.67ID:QmG4H1RB 逆転ポインタなつい
ttp://qiita.com/kingshine/items/d74576886c067737ad18
ttp://qiita.com/kingshine/items/d74576886c067737ad18
581デフォルトの名無しさん
2017/06/22(木) 00:41:06.63ID:qjVInUD2 Common lispのnilとfalse区別しないの気持ち悪いけど
Schemeでまともな処理系もう残ってない感じして
Common Lisp に移住するしかない
Schemeでまともな処理系もう残ってない感じして
Common Lisp に移住するしかない
582デフォルトの名無しさん
2017/06/22(木) 00:49:51.73ID:GIlOn6Gc 何をもってまともと言うのか、Gauche使ってるけど普通に安定してるぞ
583はつみつ餃子 ◆8X2XSCHEME
2017/06/24(土) 01:00:13.24ID:Ma6ZsMvR584デフォルトの名無しさん
2017/06/29(木) 18:45:47.85ID:cCrWWcTS Scheme のこと好き? 忌む?
585デフォルトの名無しさん
2017/06/29(木) 22:55:19.10ID:S64gSu9X 忌マラン
587デフォルトの名無しさん
2017/07/02(日) 03:01:49.46ID:27xX9ykc 最速の処理系ってどれ?
588デフォルトの名無しさん
2017/07/02(日) 11:09:04.91ID:b45oz2aB Chez >>444
589デフォルトの名無しさん
2017/07/02(日) 17:50:09.29ID:27xX9ykc 最高の処理系ってどれ?
590デフォルトの名無しさん
2017/07/02(日) 17:58:15.58ID:WUsDB0eH 自作の処理系が最高、性能使い勝手を抜きにすれば
591デフォルトの名無しさん
2017/07/02(日) 20:22:47.00ID:27xX9ykc さぁ、行こう
592デフォルトの名無しさん
2017/07/02(日) 22:56:38.27ID:+DSvk7sR picrin使ってたのにgitのtipがビルド通らん…巻き戻すしか
594デフォルトの名無しさん
2017/07/04(火) 01:39:10.46ID:0P9ajF4y 速いに越したことはないなら一番速いやつを選ぶじゃん
595デフォルトの名無しさん
2017/07/04(火) 13:19:59.34ID:0P9ajF4y >>592
picrin のどういうところが好き?
picrin のどういうところが好き?
597デフォルトの名無しさん
2017/07/07(金) 01:47:32.06ID:2HLO6jqr 実際のところSchemeでどんなプログラム書いてる?
具体的に晒せるものがある人いる?
具体的に晒せるものがある人いる?
598デフォルトの名無しさん
2017/07/07(金) 11:18:37.71ID:jxDw4Nqu 晒せないが、S式で書いたテンプレートからHTMLに変換してた
CSSで過去の技術となったが
あとはC++に組み込みスクリプト
CSSで過去の技術となったが
あとはC++に組み込みスクリプト
599デフォルトの名無しさん
2017/07/07(金) 20:03:34.22ID:2HLO6jqr あれー、この話題ってあまり盛り上がらない?
600デフォルトの名無しさん
2017/07/07(金) 21:13:04.41ID:jTA32Qmi >>594
schemeと俺を比べたら俺が遅いからあんまり意味無いんだよトホホ
schemeと俺を比べたら俺が遅いからあんまり意味無いんだよトホホ
601デフォルトの名無しさん
2017/07/07(金) 21:29:14.88ID:tdv0VtnU >>599
そもそも盛り上ってないこのスレを盛り上げるにはお前が身を削ってネタ投下するしかないだろ
そもそも盛り上ってないこのスレを盛り上げるにはお前が身を削ってネタ投下するしかないだろ
602デフォルトの名無しさん
2017/07/07(金) 22:43:58.99ID:YCPzMAB4 biwascheme http://www.biwascheme.org/ はページ上にREPLあるから遊べるかも
603デフォルトの名無しさん
2017/07/08(土) 09:17:29.55ID:fLNNHfj0604デフォルトの名無しさん
2017/07/08(土) 15:03:13.50ID:NjwxgcfF picrin のコア機能では unicode サポートなしで、後付けは可能なようにするという方針も提示されている
ので、コアだけのスピードで評価するのもアンフェアな気がする。
https://twitter.com/___yuni/status/504240324831477760
ので、コアだけのスピードで評価するのもアンフェアな気がする。
https://twitter.com/___yuni/status/504240324831477760
605デフォルトの名無しさん
2017/07/20(木) 23:50:26.23ID:ZZEUd8Cf AIの分野はもう完全にPythonに譲ったの?
606はちみつ餃子 ◆8X2XSCHEME
2017/07/21(金) 02:42:10.26ID:2BokDUmp Python ってプログラマでない人にも使いやすいデザインなんだとさ。
数学屋や物理屋もプログラムを書くことはあるけど、専門家じゃないからな。
言語に関わってばかりはいられん。
綺麗な抽象化とか考えずに愚直に書いて動くってのはそれはそれで良い言語なんだよ。
VB とかな。
AI の核になるライブラリが出そろってきていろんな応用をする段階になると
Python の方が色んな人に使ってもらえるという意味で良いんじゃないか?
それに今の AI ってのは記号処理するのに柔軟なデータ構造が必要って感じじゃないだろ。
計算量を投入しまくって結果を出す機械学習とかじゃん。
広い意味では AI つってもやってることは違うよ。
数学屋や物理屋もプログラムを書くことはあるけど、専門家じゃないからな。
言語に関わってばかりはいられん。
綺麗な抽象化とか考えずに愚直に書いて動くってのはそれはそれで良い言語なんだよ。
VB とかな。
AI の核になるライブラリが出そろってきていろんな応用をする段階になると
Python の方が色んな人に使ってもらえるという意味で良いんじゃないか?
それに今の AI ってのは記号処理するのに柔軟なデータ構造が必要って感じじゃないだろ。
計算量を投入しまくって結果を出す機械学習とかじゃん。
広い意味では AI つってもやってることは違うよ。
607デフォルトの名無しさん
2017/07/28(金) 00:10:04.60ID:Hpt0wAEo Schemeが本当に美しさと強さを両立させようと思うんなら
速さを二の次にして仮想機械の仕様も標準に入れてしまえばよかった
Smalltalk-80のVMは美しかったが
RnRSのdenotational semanticsの記述はCOBOLのコードみたいで正直読みたくない
速さを二の次にして仮想機械の仕様も標準に入れてしまえばよかった
Smalltalk-80のVMは美しかったが
RnRSのdenotational semanticsの記述はCOBOLのコードみたいで正直読みたくない
608はちみつ餃子 ◆8X2XSCHEME
2017/07/28(金) 20:26:39.53ID:hXOq69kK Scheme の仕様ってのは業務マニュアルみたいなもんだよ。
たとえば「誰にハンコをもらえば進めていいのか?」みたいな手順は組織の秩序としてやらなきゃならないことだから
個人の創造性で決めれることじゃないし、仮にそれぞれの場面で最高の才能を発揮して根回ししたところで
正事の成果が良いものになるわけじゃない。
どうでもいいことはマニュアル通りにやってもっと大したことに力を入れようってのが業務マニュアルだろ。
逆に言えば創造の余地がある部分は決めつけてしまいたくないんだ。
たとえば「誰にハンコをもらえば進めていいのか?」みたいな手順は組織の秩序としてやらなきゃならないことだから
個人の創造性で決めれることじゃないし、仮にそれぞれの場面で最高の才能を発揮して根回ししたところで
正事の成果が良いものになるわけじゃない。
どうでもいいことはマニュアル通りにやってもっと大したことに力を入れようってのが業務マニュアルだろ。
逆に言えば創造の余地がある部分は決めつけてしまいたくないんだ。
609デフォルトの名無しさん
2017/07/29(土) 16:28:59.88ID:hKWXJ4tB lispworks 32bitを使ってて、fliを使ってwindowsのdllから関数を呼ぼうとするのだけど、
一部の関数だけがunresolved symbolだと言われて呼び出せない。
dll exported functipn viewerとかでみてみると、
ちゃんと関数を確認できるのに。
何でかわかる人いる?
おいどん、初心者やからわけわかめなのよ。
とりあえず、cffiでもできないかどうかと、ほかの処理系ではどうかを試そうとは思うのだけど、
なんか知ってる人いたら助けてー
一部の関数だけがunresolved symbolだと言われて呼び出せない。
dll exported functipn viewerとかでみてみると、
ちゃんと関数を確認できるのに。
何でかわかる人いる?
おいどん、初心者やからわけわかめなのよ。
とりあえず、cffiでもできないかどうかと、ほかの処理系ではどうかを試そうとは思うのだけど、
なんか知ってる人いたら助けてー
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★5 [BFU★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★6 [BFU★]
- 【サッカー】U-17W杯 日本代表、無念のベスト8敗退… チャンスは多く作ったが仕留め切れず オーストリアに0-1で敗戦 [冬月記者★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 植田日銀総裁 「円安進行が物価高を起こしている」 ★4 [お断り★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ157
- 自分、馬鹿なのでおっしゃる意味がわかりません
- 【ぺこ専🐰】なんG 兎田ぺこら突発配信実況スレ🏡【ホロライブ▶】
- WTO世界のコメ🌾価格は記録的な豊作により1年で35%下落(5キロで200円程度)と発表※日本は1年で3倍値上がり [709039863]
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
- 日中戦争起きたら5日で自衛隊壊滅するらしい。じゃあ徴兵も無いし、俺等が必死になって反対してやる理由なくね? [237216734]
