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
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でもできないかどうかと、ほかの処理系ではどうかを試そうとは思うのだけど、
なんか知ってる人いたら助けてー
610はちみつ餃子 ◆8X2XSCHEME
2017/07/29(土) 17:59:53.12ID:HavpCAcr611デフォルトの名無しさん
2017/07/30(日) 08:44:30.09ID:b5TorD0f >>610
windowsのdllってのは適切な言い方じゃなかったかも。
具体的には、趣味で下記のライブラリをlispworks上で使いたいと思っているんです。
ttp://www.astro.com/swisseph/swephinfo_e.htm
ttp://www.astro.com/ftp/swisseph/
ここのsweph.zipにWindows 32bit用のdllがあるのですが(swedll32.dll)、
lispworksのfliを使って呼び出そうとすと、呼び出せる関数と呼び出せないのがあるんです。
ただ、私、lispもcもwindowsプログラミングも素人なので、何が問題なのかもよくわかってません。
後ほど、呼び出せる、呼び出せない関数の例や、その定義等含め書いてみます。
なにかアドバイスありましたらいただけますと幸いです。
windowsのdllってのは適切な言い方じゃなかったかも。
具体的には、趣味で下記のライブラリをlispworks上で使いたいと思っているんです。
ttp://www.astro.com/swisseph/swephinfo_e.htm
ttp://www.astro.com/ftp/swisseph/
ここのsweph.zipにWindows 32bit用のdllがあるのですが(swedll32.dll)、
lispworksのfliを使って呼び出そうとすと、呼び出せる関数と呼び出せないのがあるんです。
ただ、私、lispもcもwindowsプログラミングも素人なので、何が問題なのかもよくわかってません。
後ほど、呼び出せる、呼び出せない関数の例や、その定義等含め書いてみます。
なにかアドバイスありましたらいただけますと幸いです。
612デフォルトの名無しさん
2017/07/30(日) 09:04:35.78ID:b5TorD0f 609です。
うまくいく例とダメな例を挙げてみます。おそらく皆さんは全く興味のないライブラリだと思うので、質問するのも恐縮ですが。
問題なく呼び出せる例:
CL-USER 1 > (fli:register-module "swedll32.dll")
"swedll32.dll"
CL-USER 2 > (fli:define-foreign-function (swe_julday "_swe_julday@24" :source) ((year :int) (month :int) (day :int) (hour :double) (gregflag :int)) :result-type :double)
SWE_JULDAY
CL-USER 3 > (swe_julday 2001 1 1 0d0 1)
2451910.5D0
CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
??? ((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr? (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux? xx? serr))
SWE_CALC_UT
CL-USER 5 > (swe_calc_ut (swe_julday 2001 1 1 0d0 1) 0 0)
4
#<Foreign-Array :DOUBLE (6): addr #x02189F08>
"SwissEph file 'sepl_18.se1' not found in PATH '\\sweph\\ephe\\'
using Moshier eph.; "
うまくいく例とダメな例を挙げてみます。おそらく皆さんは全く興味のないライブラリだと思うので、質問するのも恐縮ですが。
問題なく呼び出せる例:
CL-USER 1 > (fli:register-module "swedll32.dll")
"swedll32.dll"
CL-USER 2 > (fli:define-foreign-function (swe_julday "_swe_julday@24" :source) ((year :int) (month :int) (day :int) (hour :double) (gregflag :int)) :result-type :double)
SWE_JULDAY
CL-USER 3 > (swe_julday 2001 1 1 0d0 1)
2451910.5D0
CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
??? ((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr? (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux? xx? serr))
SWE_CALC_UT
CL-USER 5 > (swe_calc_ut (swe_julday 2001 1 1 0d0 1) 0 0)
4
#<Foreign-Array :DOUBLE (6): addr #x02189F08>
"SwissEph file 'sepl_18.se1' not found in PATH '\\sweph\\ephe\\'
using Moshier eph.; "
613デフォルトの名無しさん
2017/07/30(日) 09:08:14.26ID:b5TorD0f 今度はダメな例です。
CL-USER 6 > (fli:define-foreign-function (swe_version "_swe_version@4" :source) ((sver (:reference-return (:ef-mb-string :limit 256)))) :result-type :pointer :lambda-list (&aux sver))
SWE_VERSION
CL-USER 7 > (swe_version)
Error: Foreign function SWE_VERSION trying to call to unresolved external function "_swe_version@4".
? 1 (abort) Return to level 0.
? 2 Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.
CL-USER 8 : 1 > :c 1
CL-USER 9 >
一応、自分なりに調べてソースファイルからdefファイル使ってコンパイルしなおしたりもしたのですが、
やはりだめでした。もっとも素人なので意図していることができているかどうかも怪しいのですが。。。
もし何かアドバイスありましたらお願いします。
CL-USER 6 > (fli:define-foreign-function (swe_version "_swe_version@4" :source) ((sver (:reference-return (:ef-mb-string :limit 256)))) :result-type :pointer :lambda-list (&aux sver))
SWE_VERSION
CL-USER 7 > (swe_version)
Error: Foreign function SWE_VERSION trying to call to unresolved external function "_swe_version@4".
? 1 (abort) Return to level 0.
? 2 Return to top loop level 0.
Type :b for backtrace or :c <option number> to proceed.
Type :bug-form "<subject>" for a bug report template or :? for other options.
CL-USER 8 : 1 > :c 1
CL-USER 9 >
一応、自分なりに調べてソースファイルからdefファイル使ってコンパイルしなおしたりもしたのですが、
やはりだめでした。もっとも素人なので意図していることができているかどうかも怪しいのですが。。。
もし何かアドバイスありましたらお願いします。
614デフォルトの名無しさん
2017/07/30(日) 09:13:00.89ID:b5TorD0f 612訂正
誤:
>CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
>??? ((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr? (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux? xx? serr))
>SWE_CALC_UT
不要な?がはいっちゃいました。
正:
CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux xx serr))
SWE_CALC_UT
誤:
>CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
>??? ((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr? (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux? xx? serr))
>SWE_CALC_UT
不要な?がはいっちゃいました。
正:
CL-USER 4 > (fli:define-foreign-function (swe_calc_ut "_swe_calc_ut@24" :source)
((tjd_et :double) (ipl :int) (iflag :long) (xx (:reference-return (:c-array :double 6))) (serr (:reference-return (:ef-mb-string :limit 256))) ) :result-type :int :lambda-list (tjd_et ipl iflag &aux xx serr))
SWE_CALC_UT
615609
2017/07/31(月) 10:20:59.29ID:EZDN6PLf >>609です。自己解決しました。
defファイルを使ってソースファイルからコンパイルしなおしたら
問題なく呼び出せるようになりました。汗
これまでも何度かVisual Studioからコンパイルを試していて、
dllは問題なく作成されるものの、一部呼び出せない関数があり、問題は解決しませんでした。
しかし、今回コマンドラインからコンパイル、リンクすると、なぜかうまくいきました。
結局、何が問題だったのかはわからないのですが、
とりあえず利用で来るようになりましたので、ご報告です。
お騒がせしました。。
defファイルを使ってソースファイルからコンパイルしなおしたら
問題なく呼び出せるようになりました。汗
これまでも何度かVisual Studioからコンパイルを試していて、
dllは問題なく作成されるものの、一部呼び出せない関数があり、問題は解決しませんでした。
しかし、今回コマンドラインからコンパイル、リンクすると、なぜかうまくいきました。
結局、何が問題だったのかはわからないのですが、
とりあえず利用で来るようになりましたので、ご報告です。
お騒がせしました。。
616はちみつ餃子 ◆8X2XSCHEME
2017/08/01(火) 09:56:40.30ID:J7NYj7Ga そうか。
617デフォルトの名無しさん
2017/08/28(月) 03:07:48.29ID:yPLR2tUq ISLISP界隈が復興の予感?
618デフォルトの名無しさん
2017/08/28(月) 03:15:50.71ID:kGHEcESE そういやピンボールゲームSchemeの人、ピンボールも放置してるし死んだのかと思ったら
Twitter社に入ってたんだよな。
Twitter社に入ってたんだよな。
619デフォルトの名無しさん
2017/08/28(月) 03:20:33.69ID:yPLR2tUq ひげぽんも Twitter じゃなかったっけ?
620デフォルトの名無しさん
2017/08/29(火) 20:51:39.28ID:Y/wjG5sQ621デフォルトの名無しさん
2017/08/29(火) 20:55:16.07ID:Y/wjG5sQ622デフォルトの名無しさん
2017/09/07(木) 01:47:05.53ID:AKY3iHcG そもそも本質的にLISPはAIとは関係がないぞ。
未だにAI=LISPなどと言っている輩はだめだと最近まで言われていたのにな。
Pythonだってライブラリがあるかないかというだけの理由であって
AIはスクリプト言語とは無関係だから。みんな誤解している。
AI言われる以前からPythonはあっただろ(w
未だにAI=LISPなどと言っている輩はだめだと最近まで言われていたのにな。
Pythonだってライブラリがあるかないかというだけの理由であって
AIはスクリプト言語とは無関係だから。みんな誤解している。
AI言われる以前からPythonはあっただろ(w
623はちみつ餃子 ◆8X2XSCHEME
2017/09/07(木) 02:14:26.65ID:NXMu3fYO マッカーシが AI 研究者だったこともあって、
実際に AI 研究に使われたのと、
その流れで AI 分野での利用実績は有るけど、
言語仕様的に特別 AI に向いてるってことはない。
ただ、当時のプログラミング言語っていうと Fortran とかの時代だから、
それで柔軟なデータ構造を必要とする記号処理をするのはつらかっただろうし、
その中で選ぶなら LISP は圧倒的に AI 研究に向いてたとは思う。
実際に AI 研究に使われたのと、
その流れで AI 分野での利用実績は有るけど、
言語仕様的に特別 AI に向いてるってことはない。
ただ、当時のプログラミング言語っていうと Fortran とかの時代だから、
それで柔軟なデータ構造を必要とする記号処理をするのはつらかっただろうし、
その中で選ぶなら LISP は圧倒的に AI 研究に向いてたとは思う。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」 [ぐれ★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」 [ぐれ★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 【赤坂ライブハウス刺傷】逃走していた自衛官の男(43)を殺人未遂の疑いで逮捕 警視庁 被害女性とは知人関係 [Ailuropoda melanoleuca★]
- 【フジ】13年ぶり復活「クイズ$ミリオネア」元日放送決定 挑戦者に菊池風磨&ムロツヨシ、みのもんたさん版傑作選もOA [征夷大将軍★]
- 夜勤終わり風呂なう
- 桃香さん!!
- スヌーピーって犬?
- 【悲報】東京都民さん、20過ぎてるのに自転車に乗っててて大炎上wwwwwwwwwwww女「いい歳した男で自転車に乗るのは知的障がい者だけだよ? [483447288]
- えちえち女がきたぞ
- 【悲報】ミスター東大さん、高度な『ずらし』を披露するも愚民には理解されず大炎上wwwwwwwwwwww [455031798]
