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
レス数が900を超えています。1000を超えると表示できなくなるよ。
2015/03/16(月) 13:45:52.92ID:EEYZoZ1i
833はちみつ餃子 ◆8X2XSCHEME
2018/02/03(土) 18:37:12.13ID:h6JvH1q6 あー、なるほど、そういうことを聞きたかったのか。
834デフォルトの名無しさん
2018/02/23(金) 00:09:07.20ID:Gx1M+RW0 Lisp勉強するのに、白と黒の扉、聖霊の箱って役に立つ?
>>834
amazon でみたところ、「白と黒の扉」とかは、オートマトンやチューリングマシンの話だから lisp とはあまり関係ないんじゃないかな?
いや、 lisp でオートマトンやチューリングマシンを記述したいのだったら話は別だが
この手の話は、私は手元に
https://www.amazon.co.jp/dp/4627805500/
を置いて逐次参照しています、チューリングマシンの適当な発展書があれば、教えていただけるとうれしい
amazon でみたところ、「白と黒の扉」とかは、オートマトンやチューリングマシンの話だから lisp とはあまり関係ないんじゃないかな?
いや、 lisp でオートマトンやチューリングマシンを記述したいのだったら話は別だが
この手の話は、私は手元に
https://www.amazon.co.jp/dp/4627805500/
を置いて逐次参照しています、チューリングマシンの適当な発展書があれば、教えていただけるとうれしい
836デフォルトの名無しさん
2018/02/23(金) 20:04:19.51ID:VPGO0qVd837デフォルトの名無しさん
2018/02/23(金) 20:31:20.28ID:VPGO0qVd >>835
激しくすれ違いだけど
http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-9929-6&YEAR=2017
とか
http://gihyo.jp/book/2015/978-4-7741-7270-5
とか
激しくすれ違いだけど
http://www.saiensu.co.jp/?page=book_details&ISBN=ISBN978-4-7819-9929-6&YEAR=2017
とか
http://gihyo.jp/book/2015/978-4-7741-7270-5
とか
838デフォルトの名無しさん
2018/02/24(土) 10:43:23.87ID:luJPVo2x >>835-836
わかったそのうち読んでみる
わかったそのうち読んでみる
839デフォルトの名無しさん
2018/02/25(日) 21:58:20.05ID:a878t0wv もねまね鳥をまねる
スマリヤン先生って去年亡くなってたのか
120歳まで生きると思ってた
スマリヤン先生って去年亡くなってたのか
120歳まで生きると思ってた
840はちみつ餃子 ◆8X2XSCHEME
2018/02/25(日) 22:22:47.90ID:ZmnJQjxy スマリヤンって関西っぽい響きがあるよね。
スマリやん?www
スマリやん?www
841デフォルトの名無しさん
2018/02/25(日) 23:10:56.46ID:jsjHDqU/ >>839
あれはチューリングマシンじゃなくてコンビネータ
あれはチューリングマシンじゃなくてコンビネータ
842デフォルトの名無しさん
2018/02/28(水) 22:11:14.24ID:rEovxY4/ >>840
ああっ昔駄洒落自動生成機を作ろうとした黒歴史を思い出した
ああっ昔駄洒落自動生成機を作ろうとした黒歴史を思い出した
843デフォルトの名無しさん
2018/03/04(日) 07:44:31.66ID:TAStDbGK すまん。初心者です。教えてください。
仮に学校の比較?などを扱うプログラムを作ろうとしていて、schoolという1つの学校の情報をまとめたクラスを作るとします。
そのクラスの中に、以下のような学生の情報をまとめたテーブルの情報をぶち込みたいとして、どのようにこれらのテーブルをschoolクラス内に保存するのがいいですか。
名前 整理番号 性別 2ちゃんねら 馬鹿 橋本環奈好き 年齢
taro 0 #\M t t nil 16
hanako 1 #\F nil t t 16
nagisa 2 #\L nil nil t 18
hoge
piyo
foobar
...
学校によって人数は若干違いますが、基本的にテーブルの大きさはそれほど大きくないとします。
それぞれの要素を頻繁に検索・参照する必要があります。
僕が思いつくのは、
・schoolのstudentsというスロットに、1人のデータの1つのリスト・構造体・クラスにして、そのリストとして保存。
・ハッシュテーブルをつかって、下記のような形で保存。
2CHP ((NAGISA NIL) (HANAKO NIL) (TARO T))
BAKAP ((NAGISA T) (HANAKO T) (TARO T))
ぐらいなのですが、このうちどれがおすすめとか、これら以外にもっと便利な方法などありましたら教えてください。
よろしくお願いいたします。
仮に学校の比較?などを扱うプログラムを作ろうとしていて、schoolという1つの学校の情報をまとめたクラスを作るとします。
そのクラスの中に、以下のような学生の情報をまとめたテーブルの情報をぶち込みたいとして、どのようにこれらのテーブルをschoolクラス内に保存するのがいいですか。
名前 整理番号 性別 2ちゃんねら 馬鹿 橋本環奈好き 年齢
taro 0 #\M t t nil 16
hanako 1 #\F nil t t 16
nagisa 2 #\L nil nil t 18
hoge
piyo
foobar
...
学校によって人数は若干違いますが、基本的にテーブルの大きさはそれほど大きくないとします。
それぞれの要素を頻繁に検索・参照する必要があります。
僕が思いつくのは、
・schoolのstudentsというスロットに、1人のデータの1つのリスト・構造体・クラスにして、そのリストとして保存。
・ハッシュテーブルをつかって、下記のような形で保存。
2CHP ((NAGISA NIL) (HANAKO NIL) (TARO T))
BAKAP ((NAGISA T) (HANAKO T) (TARO T))
ぐらいなのですが、このうちどれがおすすめとか、これら以外にもっと便利な方法などありましたら教えてください。
よろしくお願いいたします。
844843
2018/03/04(日) 08:03:30.14ID:TAStDbGK 作ったハッシュテーブルをschoolのstudentsスロットにぶち込むと言うことです。
あと、nagisaさんは馬鹿ではありません。失礼しました。
こーいうクラスとかの設計の基本と言うか定石ってどうやって勉強したらええの?
あと、nagisaさんは馬鹿ではありません。失礼しました。
こーいうクラスとかの設計の基本と言うか定石ってどうやって勉強したらええの?
845はちみつ餃子 ◆8X2XSCHEME
2018/03/04(日) 09:04:58.34ID:R9gQD4Ga 何が良くて何が悪いかなんてやってみなきゃわからんよ。
まず動くものを作ってから出来が悪いと思ったところを直していったらいい。
LISP の良さってそういうとこだろ。
まず動くものを作ってから出来が悪いと思ったところを直していったらいい。
LISP の良さってそういうとこだろ。
846デフォルトの名無しさん
2018/03/04(日) 13:12:25.83ID:lKMWv6ic studentクラスの定義がまず先かな
あとstudentsはキーを何にするかが問題
多分名前なんだろうけど、他の項目でも取り出したいときはハッシュテーブルだと面倒だから単に配列でも良いと思うがな
あとstudentsはキーを何にするかが問題
多分名前なんだろうけど、他の項目でも取り出したいときはハッシュテーブルだと面倒だから単に配列でも良いと思うがな
847デフォルトの名無しさん
2018/03/04(日) 17:37:51.82ID:A+6ka4SL848はちみつ餃子 ◆8X2XSCHEME
2018/03/04(日) 18:07:26.80ID:R9gQD4Ga オブジェクトシステムを積極的に使うべきかどうかは確かに場合によるし使わなくても割といけるが、
関数型とオブジェクト指向は直行する概念で、関数型であるからオブジェクトシステムの価値が低いというわけじゃない。
関数型とオブジェクト指向は直行する概念で、関数型であるからオブジェクトシステムの価値が低いというわけじゃない。
849デフォルトの名無しさん
2018/03/04(日) 20:03:49.57ID:A+6ka4SL CLOSは初心者に分かりにくい
Lisp自体もそうだけどさらに分かりにくい
Lisp自体もそうだけどさらに分かりにくい
850デフォルトの名無しさん
2018/03/04(日) 21:45:17.24ID:t2oIRDJW CLOSみたいなんじゃなくてもっと言語仕様に密着したオブジェクトシステムがあればと思う
例えばコンスセルはcarとcdrをメンバーに持つクラスみたいな
Gaucheってそうなってんだっけ?
例えばコンスセルはcarとcdrをメンバーに持つクラスみたいな
Gaucheってそうなってんだっけ?
851デフォルトの名無しさん
2018/03/04(日) 21:49:01.63ID:76y9+wl8 LispでSmalltalk実装すれば解決
852デフォルトの名無しさん
2018/03/04(日) 22:35:38.01ID:qI2WOoIZ オブジェクト志向うんぬんの空気読まずにカキコ
>>844
>こーいうクラスとかの設計の基本と言うか定石ってどうやって勉強したらええの?
LISPというよりも、どちらかというとデータベース設計が主題になるね
もし手早くSchemeで小規模なデータベースを実装したいのであれば、
SLIBと呼ばれるよく知られたライブラリに含まれている
データベースを使うのが最短だと思う
・The SLIB Portable Scheme Library
http://people.csail.mit.edu/jaffer/SLIB
日本語では、以下の書籍で文献データベースを主題として丁寧に解説されている
・入門Scheme
- Schcme入門からXツールキットを使ったリレーショナルデータベースプログラムまで
https://www.amazon.co.jp/dp/4879669547
もしLISP(による実装)を離れて一般的なデータベース設計そのものを勉強するなら、
たとえば定番の入門書(教科書)である以下の書籍の前半を読む
・リレーショナルデータベース入門―データモデル・SQL・管理システム・NoSQL
https://www.amazon.co.jp/dp/4781913903
もしLISPプログラミングに自信があり、その上で広義のデータベースとして
「LISPによる知識表現プログラミング」を習得したいのなら、
遠回りになるけどSICP本の「4.4章 論理プログラミング」への挑戦を勧める
>>844
>こーいうクラスとかの設計の基本と言うか定石ってどうやって勉強したらええの?
LISPというよりも、どちらかというとデータベース設計が主題になるね
もし手早くSchemeで小規模なデータベースを実装したいのであれば、
SLIBと呼ばれるよく知られたライブラリに含まれている
データベースを使うのが最短だと思う
・The SLIB Portable Scheme Library
http://people.csail.mit.edu/jaffer/SLIB
日本語では、以下の書籍で文献データベースを主題として丁寧に解説されている
・入門Scheme
- Schcme入門からXツールキットを使ったリレーショナルデータベースプログラムまで
https://www.amazon.co.jp/dp/4879669547
もしLISP(による実装)を離れて一般的なデータベース設計そのものを勉強するなら、
たとえば定番の入門書(教科書)である以下の書籍の前半を読む
・リレーショナルデータベース入門―データモデル・SQL・管理システム・NoSQL
https://www.amazon.co.jp/dp/4781913903
もしLISPプログラミングに自信があり、その上で広義のデータベースとして
「LISPによる知識表現プログラミング」を習得したいのなら、
遠回りになるけどSICP本の「4.4章 論理プログラミング」への挑戦を勧める
853はちみつ餃子 ◆8X2XSCHEME
2018/03/05(月) 00:38:23.33ID:Q2HqOyhm >>849
どうだろうなぁ。 初心者っていうか人によるんじゃね。
俺は JavaScript のプロトタイプベースのクソさに辟易した (実利があるのはわかってはいる) けど、
Gauche の (CLOS 風の) オブジェクトシステムにはそんなに忌避感ないし。
どうだろうなぁ。 初心者っていうか人によるんじゃね。
俺は JavaScript のプロトタイプベースのクソさに辟易した (実利があるのはわかってはいる) けど、
Gauche の (CLOS 風の) オブジェクトシステムにはそんなに忌避感ないし。
854843
2018/03/05(月) 05:06:56.57ID:HTepcGeJ みなさん、アドバイス・参考書の紹介などありがとうございます。
いろいろ自分で試してみて、どれがいいか決めようと思います。
とりあえずの方針としては、school-baseみたいなクラスの下に、studentsクラスを作って
そこにテーブル属性ごとにスロットを作って、alist形式でぶち込むことにしました。
キーの設定やら検索の便宜やら考えた結果、alistが一番手軽そうだと言うことで。
BAKAP ((taro.t) (hanako) (nagisa.t) ... )
みたいな感じで。学生を単位にデータを作ると扱いづらそうなので。
いろいろ自分で試してみて、どれがいいか決めようと思います。
とりあえずの方針としては、school-baseみたいなクラスの下に、studentsクラスを作って
そこにテーブル属性ごとにスロットを作って、alist形式でぶち込むことにしました。
キーの設定やら検索の便宜やら考えた結果、alistが一番手軽そうだと言うことで。
BAKAP ((taro.t) (hanako) (nagisa.t) ... )
みたいな感じで。学生を単位にデータを作ると扱いづらそうなので。
855デフォルトの名無しさん
2018/03/05(月) 22:58:53.34ID:uKMy0Btp オブジェクト指向的には
学生ごとにインスタンスを生成して
各属性はインスタンスのスロットに入れるのが自然な実装だろう
属性が動的に変わるなら
そこをalist/plistにするか
プロトタイプ思考のOOPSを使うといい
学生ごとにインスタンスを生成して
各属性はインスタンスのスロットに入れるのが自然な実装だろう
属性が動的に変わるなら
そこをalist/plistにするか
プロトタイプ思考のOOPSを使うといい
856デフォルトの名無しさん
2018/03/07(水) 19:56:08.11ID:YoTLFFGw 本屋に行ったらLittle Proverの和訳が出ててびっくりした
857デフォルトの名無しさん
2018/03/08(木) 00:07:13.06ID:SsdsVhWr858デフォルトの名無しさん
2018/03/08(木) 23:01:12.93ID:w9PzfbW0 またkaizenさんが和歌でレビュー書いてるのかと思った
859デフォルトの名無しさん
2018/03/11(日) 23:12:35.97ID:TCP/sl3z 教えてください。
cxmlで150mbぐらいのファイルをparseしようとしたら、
メモリのリミット来てるでーって怒られてダメでした。
巨大ファイルの扱い方教えてください。
cxmlで150mbぐらいのファイルをparseしようとしたら、
メモリのリミット来てるでーって怒られてダメでした。
巨大ファイルの扱い方教えてください。
860859
2018/03/12(月) 03:24:23.18ID:/MpQ/gxq saxとかklacksってのを使えば良いのか。
どうやっても空白を拾ってしまう。何でだ。
いろいろ頭痛い。
どうやっても空白を拾ってしまう。何でだ。
いろいろ頭痛い。
861デフォルトの名無しさん
2018/03/12(月) 17:46:56.89ID:tR8Qr250862はちみつ餃子 ◆8X2XSCHEME
2018/03/12(月) 19:42:56.53ID:wZFlYBXj >>860
空白はそのままに認識するのが XML の規約じゃなかったっけ。
空白を除去したいかどうかはアプリケーション側の裁量。
よく使われるライブラリなら何かオプションを持ってたりすることはあるかもしれんけど。
空白はそのままに認識するのが XML の規約じゃなかったっけ。
空白を除去したいかどうかはアプリケーション側の裁量。
よく使われるライブラリなら何かオプションを持ってたりすることはあるかもしれんけど。
863デフォルトの名無しさん
2018/03/19(月) 16:28:35.15ID:wWyAeyoL これがLispだ!は教科書っぽくていいな
これと実践あたりを順を追って読んでみようと思う
それからSICPにいこうかな
竹内初めてのとかLand of Lispみたいなノリの本こそLispらしいのだろうが、ついていけないと嫌いになる^^;
LittleはCPSからいきなり難しくなるし、その前も背景知識ないと消化不足になる
Yコンビネータも一応流れはつかめても、自分みたいな頭良くない初学者にはあの試行錯誤から何かを掴むのは難しい
Lispは表面的な軽さと話してることが乖離している書籍が多いし、独学者にはキツイ
これらが、同時並行的にあーなるほど、となると悟ったという事になるのかな?
これと実践あたりを順を追って読んでみようと思う
それからSICPにいこうかな
竹内初めてのとかLand of Lispみたいなノリの本こそLispらしいのだろうが、ついていけないと嫌いになる^^;
LittleはCPSからいきなり難しくなるし、その前も背景知識ないと消化不足になる
Yコンビネータも一応流れはつかめても、自分みたいな頭良くない初学者にはあの試行錯誤から何かを掴むのは難しい
Lispは表面的な軽さと話してることが乖離している書籍が多いし、独学者にはキツイ
これらが、同時並行的にあーなるほど、となると悟ったという事になるのかな?
>>863
>LittleはCPSからいきなり難しくなるし、その前も背景知識ないと消化不足になる
おっと、いつのまにか little schemer の読み込みが途絶えてしまっていた、今日から馬力をかけて、ぜひ読みきろう!
>LittleはCPSからいきなり難しくなるし、その前も背景知識ないと消化不足になる
おっと、いつのまにか little schemer の読み込みが途絶えてしまっていた、今日から馬力をかけて、ぜひ読みきろう!
865デフォルトの名無しさん
2018/03/19(月) 19:28:13.49ID:VtB6yui4 CPSも紙に書いてトレースすることはできるんだけど
見た目が難しいのにご利益があまり感じられないのは俺の頭が悪いからかな?
見た目が難しいのにご利益があまり感じられないのは俺の頭が悪いからかな?
866はちみつ餃子 ◆8X2XSCHEME
2018/03/19(月) 20:10:47.01ID:RG1qd9Pc867デフォルトの名無しさん
2018/03/19(月) 21:18:53.51ID:VtB6yui4868はちみつ餃子 ◆8X2XSCHEME
2018/03/19(月) 22:47:45.65ID:RG1qd9Pc >>867
うーん、俺も理屈をきちんと学んだわけじゃなくて CPS 変換を通して理解したんだけど、
CPS 変換しても何もつかめなかったのならどうすればいいんだろう……。
CPS は継続の理解の助けになるんだよ。
入門書で CPS 変換を取り上げるのは継続を理解させるため。
CPS 変換すること自体が普段のプログラミングですごく役に立つってわけではない。
継続ってのは call/cc で取り出せるやつってだけじゃなくて、
Scheme のプログラムでは常に背後にある。
Scheme に限らずどんな言語にも、 C にだってある。
call/cc は背後にあるのを表に引きずり出す仕組みなんだ。
だから背後でやってるやつを明示的にやったらどないや? っていうのが CPS なの。
そんだけ。
うーん、俺も理屈をきちんと学んだわけじゃなくて CPS 変換を通して理解したんだけど、
CPS 変換しても何もつかめなかったのならどうすればいいんだろう……。
CPS は継続の理解の助けになるんだよ。
入門書で CPS 変換を取り上げるのは継続を理解させるため。
CPS 変換すること自体が普段のプログラミングですごく役に立つってわけではない。
継続ってのは call/cc で取り出せるやつってだけじゃなくて、
Scheme のプログラムでは常に背後にある。
Scheme に限らずどんな言語にも、 C にだってある。
call/cc は背後にあるのを表に引きずり出す仕組みなんだ。
だから背後でやってるやつを明示的にやったらどないや? っていうのが CPS なの。
そんだけ。
869デフォルトの名無しさん
2018/03/19(月) 23:21:42.83ID:tGR5L1Pg CPS変換はCLとかelispでジェネレータの実装に使われてるよね
870デフォルトの名無しさん
2018/03/20(火) 11:33:11.49ID:U6Uv8xSd >>868
> CPS は継続の理解の助けになるんだよ。
その通り
> CPS 変換すること自体が普段のプログラミングですごく役に立つってわけではない。
まあ普通のプログラミングではCPS変換なんて必要ないわな
> 継続ってのは call/cc で取り出せるやつってだけじゃなくて、
> Scheme のプログラムでは常に背後にある。
> Scheme に限らずどんな言語にも、 C にだってある。
上の3行はもちろん間違っていないんだけれども補足しておくと、
Cなどの通常のgoto文(やCのbreak文等のような制限されたgoto文)とか例外処理を有する命令型プログラミング言語の意味論(正確には表示的意味論)を語る上でこそ継続が不可欠になる
Schemeからcall/ccを除けば(call/ccやそれを含むライブラリ手続きの類を一切使わない範囲でしかSchemeを利用しない人は)継続を使わない意味論で考えても何も問題ない
例えば、命令型言語でも制御構文としてif文とwhile文しかない(goto文やbreak文等のジャンプは含まない)言語…しばしば「While言語」とか呼んで手続き型言語の表示的意味論の
説明用としてに最初に取り上げられるミニチュア言語(一応、万能ね)…の意味を与えるだけなら継続は必要ない
そういう単純な(いわゆる「構造的」な)制御フローしか許さない言語では、個々の文(命令)の意味は状態から状態への写像(つまり文の表すものは一つの状態変換関数)として考えれば済む
goto文や例外処理のような構文に関して制御の流れが(文の構文構造について)構造帰納的でなくなる制御フローを生み出してしまうものを含んだ言語の意味論を考えようとすると継続が不可欠になる
もはや、個々の文を状態変換関数(そして個々の式を状態の集合から値の集合への一つの関数)として考えるような直感的に分かり易い意味の与え方は通用しない
表示的意味論の生みの親のStracheyが、compositionalつまり大雑把には構造帰納的に意味を与える表示的意味論において構造帰納的でない制御フローを生み出すgoto文の意味を
如何に与えるかで悩んだ末に発明した概念こそが正に継続なんだ
(因みに日本語の表示的意味論の教科書でやや古いものは“continuation”の訳語として「継続」でなく「接続」という言葉を使っている場合があるが両者は全く同じ)
> CPS は継続の理解の助けになるんだよ。
その通り
> CPS 変換すること自体が普段のプログラミングですごく役に立つってわけではない。
まあ普通のプログラミングではCPS変換なんて必要ないわな
> 継続ってのは call/cc で取り出せるやつってだけじゃなくて、
> Scheme のプログラムでは常に背後にある。
> Scheme に限らずどんな言語にも、 C にだってある。
上の3行はもちろん間違っていないんだけれども補足しておくと、
Cなどの通常のgoto文(やCのbreak文等のような制限されたgoto文)とか例外処理を有する命令型プログラミング言語の意味論(正確には表示的意味論)を語る上でこそ継続が不可欠になる
Schemeからcall/ccを除けば(call/ccやそれを含むライブラリ手続きの類を一切使わない範囲でしかSchemeを利用しない人は)継続を使わない意味論で考えても何も問題ない
例えば、命令型言語でも制御構文としてif文とwhile文しかない(goto文やbreak文等のジャンプは含まない)言語…しばしば「While言語」とか呼んで手続き型言語の表示的意味論の
説明用としてに最初に取り上げられるミニチュア言語(一応、万能ね)…の意味を与えるだけなら継続は必要ない
そういう単純な(いわゆる「構造的」な)制御フローしか許さない言語では、個々の文(命令)の意味は状態から状態への写像(つまり文の表すものは一つの状態変換関数)として考えれば済む
goto文や例外処理のような構文に関して制御の流れが(文の構文構造について)構造帰納的でなくなる制御フローを生み出してしまうものを含んだ言語の意味論を考えようとすると継続が不可欠になる
もはや、個々の文を状態変換関数(そして個々の式を状態の集合から値の集合への一つの関数)として考えるような直感的に分かり易い意味の与え方は通用しない
表示的意味論の生みの親のStracheyが、compositionalつまり大雑把には構造帰納的に意味を与える表示的意味論において構造帰納的でない制御フローを生み出すgoto文の意味を
如何に与えるかで悩んだ末に発明した概念こそが正に継続なんだ
(因みに日本語の表示的意味論の教科書でやや古いものは“continuation”の訳語として「継続」でなく「接続」という言葉を使っている場合があるが両者は全く同じ)
871デフォルトの名無しさん
2018/03/20(火) 12:19:35.96ID:GlHoGrJi 何時からこんな長文のレスが出来るようになったのかと
872デフォルトの名無しさん
2018/03/20(火) 23:23:33.89ID:+gsETVt6 >>865
簡単なスタックマシンにコンパイルしてみてはどうか?
簡単なスタックマシンにコンパイルしてみてはどうか?
873デフォルトの名無しさん
2018/03/20(火) 23:24:33.08ID:+gsETVt6874デフォルトの名無しさん
2018/03/21(水) 11:51:20.10ID:u5CZK1Hr 継続ってラムダ計算にもあるの?
875デフォルトの名無しさん
2018/03/25(日) 00:56:23.32ID:1/5marwz CPSは必ずしも再帰で使う必要はないということでいいのかな
リトルのCPSが消化不良なのは前の章までの理解が足りてないってことか
リトルのCPSが消化不良なのは前の章までの理解が足りてないってことか
876はちみつ餃子 ◆8X2XSCHEME
2018/03/25(日) 01:16:25.39ID:vqcfoPV6 再帰とは関係なく全ての計算に関わってるよ。
877デフォルトの名無しさん
2018/03/25(日) 23:02:19.40ID:wjjQa2Mo 再帰の際に、例えば階乗計算で終端条件から戻ってきて
1*2*3*.......*(n-2)*(n-1)*nと掛けられるものも継続ですか?
1*2*3*.......*(n-2)*(n-1)*nと掛けられるものも継続ですか?
878デフォルトの名無しさん
2018/03/26(月) 04:28:41.05ID:M0YORv20879デフォルトの名無しさん
2018/03/26(月) 14:01:22.69ID:YDvloqxD >>878
ああ、その説明は見事ですね
ああ、その説明は見事ですね
880はちみつ餃子 ◆8X2XSCHEME
2018/03/26(月) 14:19:29.21ID:S9VCdiyC C ではアドレスが継続だと思えばだいたい合ってる。
環境が保存されないから Scheme より限定的だけども。
C だと実引数と一緒にリターンアドレスもプッシュするじゃん?
それと同じように Scheme でも戻ってくる継続を暗黙に渡してるんだよ。
Scheme の call/cc は gcc 拡張の __builtin_return_address みたいなもん。
環境が保存されないから Scheme より限定的だけども。
C だと実引数と一緒にリターンアドレスもプッシュするじゃん?
それと同じように Scheme でも戻ってくる継続を暗黙に渡してるんだよ。
Scheme の call/cc は gcc 拡張の __builtin_return_address みたいなもん。
881デフォルトの名無しさん
2018/03/26(月) 16:22:01.20ID:4JGFggle 俺Cわかんないんだよね^^;
882はちみつ餃子 ◆8X2XSCHEME
2018/03/26(月) 16:54:52.93ID:S9VCdiyC そっか〜
883デフォルトの名無しさん
2018/03/26(月) 20:38:59.41ID:4JGFggle884デフォルトの名無しさん
2018/03/26(月) 22:41:49.50ID:5QVYm+SC Cで継続を保存しようとしたら、setjmpで保存してるもの(全レジスタの状態)とスタックの内容のコピーだろ(場合によってはかなりのサイズになるが)
>>884
setjmp/longjmp は、スタックポインタは保存してもスタックの内容のコピーはしない、だからネストの浅いところから深いところにジャンプできない
setjmp/longjmp は、スタックポインタは保存してもスタックの内容のコピーはしない、だからネストの浅いところから深いところにジャンプできない
886デフォルトの名無しさん
2018/03/27(火) 09:40:09.76ID:82AcOlMQ >>885
ん?だからsetjmpの内容とスタックの内容をコピーすると思いっきり書いたつもりだったが…
ん?だからsetjmpの内容とスタックの内容をコピーすると思いっきり書いたつもりだったが…
887デフォルトの名無しさん
2018/03/27(火) 21:44:25.00ID:vSyzL0sA C++ coroutinesだとスタック全コピーも実装の有力な候補だな
888デフォルトの名無しさん
2018/03/27(火) 22:03:59.18ID:vSyzL0sA というか、おととし最後に聞いたときには>>884の言う通りでほぼ決まりみたいな話だった
C/C++では何と、スタックの中を書き換えることができるのだ!
C/C++では何と、スタックの中を書き換えることができるのだ!
889デフォルトの名無しさん
2018/03/28(水) 07:06:35.26ID:lXnJ1NTY Smalltalkならスタックフレームもオブジェクト
890デフォルトの名無しさん
2018/03/28(水) 23:58:25.75ID:qqTeUvjF Smalltalkって業務で使ってるとこあるのかな
LISP系よりはありそうなんだが
LISP系よりはありそうなんだが
891デフォルトの名無しさん
2018/03/29(木) 06:38:02.92ID:xL1sPJzZ ヨーロッパや南米での事例が多いとか
https://medium.com/@newapplesho/今時-2017-のsmalltalkの始めかた-93c044820e1b
日本にも地味に仕事あるらしいけど守秘義務で見えにくい
スーパーの古いレジ(POSシステム)で使われているのを見かけたのはNEC系のこれか?
http://tech.nikkeibp.co.jp/it/members/NT/JIREI/20011220/1/
比較的最近の話題はLispばりにスタートアップに活用されたこと
http://web.archive.org/web/20171111102557/https://thepedia.co/article/1068/
https://medium.com/@newapplesho/今時-2017-のsmalltalkの始めかた-93c044820e1b
日本にも地味に仕事あるらしいけど守秘義務で見えにくい
スーパーの古いレジ(POSシステム)で使われているのを見かけたのはNEC系のこれか?
http://tech.nikkeibp.co.jp/it/members/NT/JIREI/20011220/1/
比較的最近の話題はLispばりにスタートアップに活用されたこと
http://web.archive.org/web/20171111102557/https://thepedia.co/article/1068/
892デフォルトの名無しさん
2018/03/29(木) 21:46:13.19ID:aMjJrqbe >>890
> Smalltalkって業務で使ってるとこあるのかな
> LISP系よりはありそうなんだが
少なくともアメリカでは実アプリをSmalltalkで作ってるケースはほとんどないんじゃないと思うが
プロトタイプをSmalltalkでちゃっちゃと作ってしまい動作確認をするってのはアメリカでも昔からさほど珍しくないそうだが
ちなみにCommon Lispはアメリカでは以前から実用アプリの記述言語としてそれなりの頻度で使われてるよ
> Smalltalkって業務で使ってるとこあるのかな
> LISP系よりはありそうなんだが
少なくともアメリカでは実アプリをSmalltalkで作ってるケースはほとんどないんじゃないと思うが
プロトタイプをSmalltalkでちゃっちゃと作ってしまい動作確認をするってのはアメリカでも昔からさほど珍しくないそうだが
ちなみにCommon Lispはアメリカでは以前から実用アプリの記述言語としてそれなりの頻度で使われてるよ
893デフォルトの名無しさん
2018/03/30(金) 01:39:43.69ID:uMQPOtnG >>880
スタックも含まないと継続にはならない
スタックも含まないと継続にはならない
894はちみつ餃子 ◆8X2XSCHEME
2018/03/30(金) 04:37:04.64ID:AQ2aJRgB895デフォルトの名無しさん
2018/03/30(金) 07:19:01.27ID:wy67wuPJ896デフォルトの名無しさん
2018/03/30(金) 07:29:31.52ID:YaBZvbti 環境をあえて使わない継続の応用はあっても
環境を含むことができない機構を(「限定的」と断ったとしても)継続だと言い張るのはオカシイよ
環境を含むことができない機構を(「限定的」と断ったとしても)継続だと言い張るのはオカシイよ
897デフォルトの名無しさん
2018/03/30(金) 13:49:13.71ID:a6Uq4iez 別に「限定継続/delimited continuation」ってものもあるしな
話がややこしくなるだけで理解の助けにならない
話がややこしくなるだけで理解の助けにならない
898はちみつ餃子 ◆8X2XSCHEME
2018/03/30(金) 16:49:52.67ID:AQ2aJRgB Racket で escape continuation って言ってるやつと近いかな。
899デフォルトの名無しさん
2018/04/08(日) 19:00:53.26ID:bJUCDaUD schemeをjsに変換してreactやるとかelectronでGUIアプリ作るとかいう話ない?
900デフォルトの名無しさん
2018/04/08(日) 19:55:46.10ID:e7Arryer scheme->jsの変換は簡単そうだね
継続使ってなければ
継続使ってなければ
901デフォルトの名無しさん
2018/04/11(水) 08:57:34.76ID:smzFdsBm そもそもJSにトランスパイルできる
まともなscheme処理系が無いだろう
まともなscheme処理系が無いだろう
902デフォルトの名無しさん
2018/04/12(木) 03:16:46.76ID:dUBwD102 loopがマジでわからん。
どうしたらいい?
どうしたらいい?
903デフォルトの名無しさん
2018/04/12(木) 05:13:34.09ID:QxuUPFoE loop マクロを自作してみる
904デフォルトの名無しさん
2018/04/12(木) 07:42:04.41ID:w4rNP/ma 実践Common Lispで覚えた
formatも同じく
formatも同じく
905デフォルトの名無しさん
2018/04/13(金) 01:48:08.55ID:UkwKelSp ocamlでさえjavascriptにコンパイル出来るというのにschemeも頑張ろうや
906デフォルトの名無しさん
2018/04/14(土) 10:00:00.96ID:BMT8UCYv Scheme -> Clojure -> javascript の順番に変換するなら、
Clojure -> javascript はすでに自動変換だし、
Scheme -> Clojure も define -> def 等、機械的な置き換えである程度出来るから、
単純なプログラムを変換することは出来るけど、それほど需要がないから無いんじゃないの。
Clojure -> javascript はすでに自動変換だし、
Scheme -> Clojure も define -> def 等、機械的な置き換えである程度出来るから、
単純なプログラムを変換することは出来るけど、それほど需要がないから無いんじゃないの。
907デフォルトの名無しさん
2018/04/14(土) 14:14:27.78ID:Q/hh4lYx つうかemscriptenで幾つかの実装が動いてるよね
ただそれだけで
ただそれだけで
908デフォルトの名無しさん
2018/04/14(土) 17:47:52.07ID:BMT8UCYv emscripten で C言語 -> javascript に変換が可能だから、Chicken で Scheme -> C言語 に変換すれば、
Scheme -> C言語 -> javascript が実行できるハズか。うまく通らないコードもあるだろうけど。
Scheme -> C言語 -> javascript が実行できるハズか。うまく通らないコードもあるだろうけど。
909デフォルトの名無しさん
2018/04/16(月) 14:28:58.54ID:rldqSGZ/ >>908
そんなチキンなやり方が許されるとでも?
そんなチキンなやり方が許されるとでも?
910デフォルトの名無しさん
2018/04/16(月) 15:10:31.47ID:cjXJGsOK911デフォルトの名無しさん
2018/04/16(月) 17:37:30.38ID:Ao+0rxLU なんだそのツッコミは
912デフォルトの名無しさん
2018/04/22(日) 18:59:39.73ID:kgMcoKG3 なるほどもっとキチンとやれと
913デフォルトの名無しさん
2018/04/22(日) 23:13:19.09ID:vfnhSJ7e ところで「ブラウザでCLを動的にJSにトランスパイル可能なライブラリ」って聞いたら何が思い浮かびます?
914デフォルトの名無しさん
2018/04/23(月) 13:04:48.19ID:h3LGX4rw915デフォルトの名無しさん
2018/04/23(月) 16:29:52.12ID:4n233aPE >>914
ワロタww
ワロタww
916デフォルトの名無しさん
2018/05/02(水) 09:24:55.05ID:Ofc9Qt+3 質問です!
動的スコープってスタックに積み上げるだけで実現できるじゃないですか
静的スコープってどうやって実装すればいいんですか?ヒント下さい
動的スコープってスタックに積み上げるだけで実現できるじゃないですか
静的スコープってどうやって実装すればいいんですか?ヒント下さい
917はちみつ餃子 ◆8X2XSCHEME
2018/05/02(水) 12:49:52.49ID:g0SlpjdS コンパイル (意味解析) 時にスタックを使えばいいんじゃないのかな。
918デフォルトの名無しさん
2018/05/02(水) 13:03:03.19ID:Ofc9Qt+3 >>917
なるほど、意味解析時にスコープの構造をスタックで再現しといて
eval時に該当するスタックを参照できればいいってことですよね。
なんだか、ソースマップみたいですね。ひとつひとつのAtomに該当するスコープの参照を持たせるとなると、なんか重くなりそうですね
なるほど、意味解析時にスコープの構造をスタックで再現しといて
eval時に該当するスタックを参照できればいいってことですよね。
なんだか、ソースマップみたいですね。ひとつひとつのAtomに該当するスコープの参照を持たせるとなると、なんか重くなりそうですね
919デフォルトの名無しさん
2018/05/11(金) 15:15:36.81ID:jYn7b+yh Have you ever read The Little Schemer? => #t
Have you ever read The Seasoned Schemer? => #t
Have you ever read The Reasoned Schemer? => #t
Have you ever read The Little Prover? => #t
Have you ever read The Little Typer? => #f
What's The Little Typer? => Pie language book.
Have you ever read The Seasoned Schemer? => #t
Have you ever read The Reasoned Schemer? => #t
Have you ever read The Little Prover? => #t
Have you ever read The Little Typer? => #f
What's The Little Typer? => Pie language book.
920デフォルトの名無しさん
2018/05/13(日) 10:00:19.91ID:V4PsQf4P David Thrane Christiansen のやっている Idris や Pie language といえば、
依存型 (dependent type) を使用した Type-Driven Development かな。
定理証明系の次の話題としては順当なところ。
依存型 (dependent type) を使用した Type-Driven Development かな。
定理証明系の次の話題としては順当なところ。
921デフォルトの名無しさん
2018/05/13(日) 10:10:02.10ID:fJNKI1KS もうなんのことだかさっぱり
922デフォルトの名無しさん
2018/05/13(日) 13:45:19.45ID:V4PsQf4P 依存型についてのテキストはこれまでにこういうのが出てるよ。
Edwin Brady "Type-Driven Development with Idris"
Adam Chlipala "Certified Programming with Dependent Types"
Aaron Stump "Verified Functional Programming in Agda"
Edwin Brady と David Thrane Christiansen は協力して Idris を作ったひとで、
今回、Christiansen が Racket 上で Pie language を実装したみたい。
Pie languageの実装を理解させる本が出ることで Type-Driven Development の
低レベルでの詳細が明快になると期待できる感じかな。
Edwin Brady "Type-Driven Development with Idris"
Adam Chlipala "Certified Programming with Dependent Types"
Aaron Stump "Verified Functional Programming in Agda"
Edwin Brady と David Thrane Christiansen は協力して Idris を作ったひとで、
今回、Christiansen が Racket 上で Pie language を実装したみたい。
Pie languageの実装を理解させる本が出ることで Type-Driven Development の
低レベルでの詳細が明快になると期待できる感じかな。
923デフォルトの名無しさん
2018/05/23(水) 20:15:24.16ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
VU7Z1
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
VU7Z1
924デフォルトの名無しさん
2018/05/23(水) 20:17:31.53ID:ddkD19I+ ちょっと聞きたいんですけど
JSONをS式で書いたらどんな書き方になると思いますか?
(users . (
((Name . John)
(Age . 25))
((Name . Mike)
(Age . 24))
))
みたいな感じですか?
JSONをS式で書いたらどんな書き方になると思いますか?
(users . (
((Name . John)
(Age . 25))
((Name . Mike)
(Age . 24))
))
みたいな感じですか?
925デフォルトの名無しさん
2018/05/23(水) 21:44:54.25ID:8jCQObxo cl-jsonとかで読み込んでみたら
926はちみつ餃子 ◆8X2XSCHEME
2018/05/24(木) 00:45:42.66ID:jqqWnK8Z >>924
Gauche だとこんな感じにマッピングされる。
https://practical-scheme.net/gauche/man/?l=ja&p=parse-json
Sagittarius だとこう。
http://ktakashi.github.io/sagittarius-online-ref/section753.html
XML だと SXML でほぼ統一されてるけど、JSON に関してはまだ揺らぎがある。
Gauche だとこんな感じにマッピングされる。
https://practical-scheme.net/gauche/man/?l=ja&p=parse-json
Sagittarius だとこう。
http://ktakashi.github.io/sagittarius-online-ref/section753.html
XML だと SXML でほぼ統一されてるけど、JSON に関してはまだ揺らぎがある。
927デフォルトの名無しさん
2018/05/24(木) 01:13:53.62ID:NR1AW6HZ 素直に連想配列にした方が良いのか、それだと巨大なデータの時にアクセス効率が悪いからハッシュテーブルやdefstructした方が良いのかとか、一筋縄では行かないだろう
928はちみつ餃子 ◆8X2XSCHEME
2018/05/24(木) 01:32:06.19ID:jqqWnK8Z Expat みたいな方式で、オブジェクトの構築はユーザまかせにするってのもひとつの案かな。
まあ、 JSON が必要な場面は設定ファイルとかウェブ API の類とかだと思うので、
極端に巨大な JSON を仮定する必要はあまりないと思うが……。
まあ、 JSON が必要な場面は設定ファイルとかウェブ API の類とかだと思うので、
極端に巨大な JSON を仮定する必要はあまりないと思うが……。
929デフォルトの名無しさん
2018/05/27(日) 13:45:27.94ID:mYmUirqO JSONをS式で書くといっても、いろいろやり方はあるよね。
Pie language みたいにDSLを使って、Name型、Age型、users型を定義すれば、
型推論、Type-Driven Development を導入できる。
Pie language みたいにDSLを使って、Name型、Age型、users型を定義すれば、
型推論、Type-Driven Development を導入できる。
930924
2018/05/27(日) 13:52:56.50ID:zSa68/cd ほえー、難しいですな
931デフォルトの名無しさん
2018/05/27(日) 20:34:52.73ID:4TYKeuy0 結局pieてなに?
932デフォルトの名無しさん
2018/05/28(月) 11:53:10.90ID:IqAZvII/ PIE には、元々「インド・ヨーロッパ祖語」(Proto-Indo-European language) という意味があるらしい。
そこから転じて Type-Driven Development の祖語たれかし云々。
Pie言語のような Type-Driven Development と J-Bob(ACL2) の定理証明器の組み合わせによって、
新しいプログラミング・サイクルがもたらされる。
[1] 型を定義する(自動的に型チェックもされる)だけで、
[2] Type-Driven Development 環境が型定義から実行可能なプログラムの雛形を生成してくれる。
[3] プログラムの雛形に実装部分を書き加える。
[4] 書き加えた実装部分の数学的正しさを定理証明器でチェックする。
こんな感じで開発するだけでプログラムの正しさが保証付きで出来上がる。もちろんOOPでもOK。
将来、ほとんどの言語がこういう機能を持つと思われる。
そこから転じて Type-Driven Development の祖語たれかし云々。
Pie言語のような Type-Driven Development と J-Bob(ACL2) の定理証明器の組み合わせによって、
新しいプログラミング・サイクルがもたらされる。
[1] 型を定義する(自動的に型チェックもされる)だけで、
[2] Type-Driven Development 環境が型定義から実行可能なプログラムの雛形を生成してくれる。
[3] プログラムの雛形に実装部分を書き加える。
[4] 書き加えた実装部分の数学的正しさを定理証明器でチェックする。
こんな感じで開発するだけでプログラムの正しさが保証付きで出来上がる。もちろんOOPでもOK。
将来、ほとんどの言語がこういう機能を持つと思われる。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」 [ぐれ★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」 [ぐれ★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 【赤坂ライブハウス刺傷】逃走していた自衛官の男(43)を殺人未遂の疑いで逮捕 警視庁 被害女性とは知人関係 [Ailuropoda melanoleuca★]
- 【芸能】明石家さんまの中学時代の陸上400メートルのタイムに驚愕 日本記録保持者・中島佑気ジョセフも驚く [冬月記者★]
- 日本人「憲法9条があれば侵略されないって叫んでた売国左翼のゴミどもは今どんな気分?😂wwwwww」 [441660812]
- 女死ね
- 【悲報】東京都民さん、20過ぎてるのに自転車に乗っててて大炎上wwwwwwwwwwww女「いい歳した男で自転車に乗るのは知的障がい者だけだよ? [483447288]
- 【悲報】細田守最新作、超絶爆死しそう
- 【悲報】中国 vs 日本の戦力差、太平洋戦争の“アメリカ級”だった
- 婚活女子(43)「アラフォーのおっさんが『同世代の女はおばさんに見える。10歳くらい歳の離れた女性がいい』と言っててドン引きしてる… [257926174]
