計算機科学の基礎は集合論であるという。
ならば、集合論に基づいた言語を作れば美しい言語になるのでは?
そんな発想から徹底的に集合論的思想で言語仕様を考えるスレです。
集合論に基づいた言語を作りたい
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2014/08/10(日) 21:27:16.56ID:x7G32Sd02デフォルトの名無しさん
2014/08/10(日) 21:29:01.90ID:x7G32Sd0 たとえばプリミティブなコレクションが配列じゃなくて集合だとか。
2014/08/10(日) 21:30:01.96ID:SNq+Bnd6
どういうことだってばよ?
2014/08/10(日) 21:37:09.49ID:TaP3LJdg
2014/08/10(日) 21:49:14.65ID:TaP3LJdg
6桃白白 ◆9Jro6YFwm650
2014/08/10(日) 21:53:00.69ID:ogxmV0hN SQLっていうのがすでにあるっすよ
71
2014/08/10(日) 22:07:52.74ID:x7G32Sd02014/08/10(日) 22:09:07.71ID:x7G32Sd0
あれ、IDおなじだな。
IDの仕組みがよくわかってない俺。
IDの仕組みがよくわかってない俺。
2014/08/10(日) 22:48:01.93ID:qwVXAwRT
いや作れよ
11片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/10(日) 23:06:18.79ID:nEGv2YJS 多重集合についてはご存じかな? 重複した元の個数を数えるものだけど。
RubyやPHP,JSなどの最近のスクリプト言語はリストを扱うのが簡単になってきている。
一般にリストはそのまま多重集合や集合と見なすことができる。
元の重複をなくすには、重複した元の追加を禁止するか、sort&uniqueすればいい。
RubyやPHP,JSなどの最近のスクリプト言語はリストを扱うのが簡単になってきている。
一般にリストはそのまま多重集合や集合と見なすことができる。
元の重複をなくすには、重複した元の追加を禁止するか、sort&uniqueすればいい。
2014/08/10(日) 23:10:08.77ID:x7G32Sd0
とりあえずプリミティブ型は集合。
構造体や配列なんかも基本集合で表現するようにする。
構造体や配列なんかも基本集合で表現するようにする。
13片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/10(日) 23:15:58.40ID:nEGv2YJS 無限集合はどうするか?
写像はどうするか?
写像はどうするか?
2014/08/10(日) 23:16:09.88ID:x7G32Sd0
2014/08/10(日) 23:17:58.23ID:x7G32Sd0
>>13
そのへんも集合論になるべく沿った方法で仕様を決められたら面白いかなと思ってる。
そのへんも集合論になるべく沿った方法で仕様を決められたら面白いかなと思ってる。
16片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/10(日) 23:18:27.90ID:nEGv2YJS 集合の集合をどうするか?
2014/08/10(日) 23:23:58.14ID:x7G32Sd0
集合の集合はそんなにむずかしくないんじゃないか?
数学のとおりに扱えばいいだけだろう。
数学のとおりに扱えばいいだけだろう。
18片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/10(日) 23:28:28.92ID:nEGv2YJS 無限集合を含むデータ構造を扱うなら、構造体の要素に対す
る区間演算と区間のパターンマッチはサポートしないといけない。
[0,∞)∪(-8,-4]とか
る区間演算と区間のパターンマッチはサポートしないといけない。
[0,∞)∪(-8,-4]とか
2014/08/10(日) 23:29:50.35ID:x7G32Sd0
型をどうするかがまず問題だな。
普通のクラス的なものを許してしまっていいものか。
普通のクラス的なものを許してしまっていいものか。
2014/08/10(日) 23:33:00.94ID:x7G32Sd0
2014/08/10(日) 23:38:37.89ID:x7G32Sd0
所詮コンピュータが扱えるのは有限の世界だからな。。。
無限集合はあきらめるのが得策か。。。
無限集合はあきらめるのが得策か。。。
22片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/10(日) 23:40:46.61ID:nEGv2YJS 特性関数ってご存じですか?
2014/08/10(日) 23:44:53.13ID:x7G32Sd0
いや知らない。
ぐぐってみたけど確率論の用語?
ぐぐってみたけど確率論の用語?
24片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/10(日) 23:51:55.05ID:nEGv2YJS 別名、集合の指示関数とか集合の定義関数とか言われる。
f(x)=0; x∈Xでないとき、
f(x)=1; x∈Xであるとき
を満たすfをXの特性関数という。
f(x)=0; x∈Xでないとき、
f(x)=1; x∈Xであるとき
を満たすfをXの特性関数という。
25片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/10(日) 23:55:18.56ID:nEGv2YJS この「集合の特性関数」を型にするといいんじゃね?
26片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/11(月) 00:01:36.05ID:vtRcS5Vo ∀x:any(x)=1.
∀x:none(x)=0.
var x:any.//全部
var y:none.//空集合
∀x:none(x)=0.
var x:any.//全部
var y:none.//空集合
2014/08/11(月) 00:02:37.88ID:7qJjistY
面白そうだけど、コンピュータでうまく扱えるかなぁ。
たとえば、ある集合が空集合かどうかさえ、コンピュータには決定できなかったりするよね?
特性関数を特性関数のまま扱えばうまくいくのかなぁ。
たとえば、ある集合が空集合かどうかさえ、コンピュータには決定できなかったりするよね?
特性関数を特性関数のまま扱えばうまくいくのかなぁ。
28片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/11(月) 00:11:32.04ID:vtRcS5Vo 区間演算って知ってる?
2014/08/11(月) 00:18:19.72ID:L9TxF9/y
>>1
Haskellでいいじゃん。
Haskellでいいじゃん。
301
2014/08/11(月) 00:30:59.49ID:7qJjistY31片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/11(月) 00:47:21.96ID:vtRcS5Vo 区間というのは数の集合だから、数の集合上の演算を
定義してやろうという話です。
定義してやろうという話です。
32片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/11(月) 00:53:40.33ID:vtRcS5Vo 集合の元は集合なのか? という問題が
2014/08/11(月) 02:06:52.68ID:TP2ds61a
34片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/11(月) 02:21:22.82ID:vtRcS5Vo 特性関数を使うとパラドックスはどうなるか。これ宿題。じっくり考えてね。
351
2014/08/11(月) 08:56:36.65ID:7qJjistY 集合を元とする集合は扱いたいな。
それすら扱えないんじゃ不自由すぎる。
正則の公理ってのでパラドックスは回避できるんじゃなかったっけ?
特性関数はそもそも定義域がよくわからんなぁ。
それすら扱えないんじゃ不自由すぎる。
正則の公理ってのでパラドックスは回避できるんじゃなかったっけ?
特性関数はそもそも定義域がよくわからんなぁ。
361
2014/08/11(月) 09:14:21.82ID:7qJjistY 内部的な実装はともかく、外部仕様としては整数も集合であらわすことにするかな。。。
0=φ
1={φ,{φ}}
2={φ,{φ},{φ,{φ}}
...
0=φ
1={φ,{φ}}
2={φ,{φ},{φ,{φ}}
...
2014/08/11(月) 09:18:20.93ID:GsgTpDMz
作れば?
壁にぶつかって悩む時間も含めて半年もあれば余裕だろ。
壁にぶつかって悩む時間も含めて半年もあれば余裕だろ。
381
2014/08/11(月) 09:32:02.64ID:7qJjistY いやいや、そんなに簡単じゃないからw
2014/08/11(月) 11:08:29.88ID:NzEjjfEw
>>1
Z
Z
2014/08/11(月) 13:27:34.36ID:PrWNpxUB
簡単じゃないって、1000時間あればさすがにできるだろう。何年もかけて洗練された言語というレベルの話をしているわけではないのだから。
つーか相談したいなら質問スレや雑談スレでやってほしいね。単発クソスレ立てるんじゃなくてさ。
考察や実装を報告したいならブログでね。
つーか相談したいなら質問スレや雑談スレでやってほしいね。単発クソスレ立てるんじゃなくてさ。
考察や実装を報告したいならブログでね。
2014/08/11(月) 14:11:41.44ID:msdQqOI/
面白そうだし別にいいじゃん
がんばれ
がんばれ
42デフォルトの名無しさん
2014/08/11(月) 14:42:29.95ID:clQwRFjU 結論出て実装終わったら起こして。
2014/08/11(月) 15:26:58.26ID:GsgTpDMz
441
2014/08/11(月) 17:03:12.57ID:7qJjistY 始めは全てを集合で表すつもりでいたけれど、現実的じゃないな。
やっぱタプルはタプル、リストはリストなんだよな。
無理やり集合で表現するのは無理がある。
全てのオブジェクトを集合にキャストできるってのなら
なんとかなりそう。
やっぱタプルはタプル、リストはリストなんだよな。
無理やり集合で表現するのは無理がある。
全てのオブジェクトを集合にキャストできるってのなら
なんとかなりそう。
2014/08/11(月) 20:48:03.17ID:7SpcZaRV
lispでええやん
461
2014/08/11(月) 20:53:25.27ID:7qJjistY lispもあんまり触ったことないな
そんなにいいの?
そんなにいいの?
2014/08/11(月) 21:11:11.02ID:GsgTpDMz
ありきたりな発想だから既存のものの問題点を知らないうちは
何を作っても新しいものは生まれない。
何を作っても新しいものは生まれない。
2014/08/11(月) 21:18:09.44ID:Z+2tOK2m
実数を集合であらわす原理を明らかにしないと意味ない。
デデキントカットで集合をもって実数を表せるけど、そんなの計算機でどうあらわすかね
デデキントカットで集合をもって実数を表せるけど、そんなの計算機でどうあらわすかね
491
2014/08/11(月) 21:31:46.30ID:7qJjistY2014/08/11(月) 21:33:16.67ID:GsgTpDMz
某スレでカルネージハートみたいなビジュアル言語を作りたいとか言ってた奴の方がなんぼか発想力がある。(5段階で3)
だが論理性や実装力は致命的に皆無にみえた。
俺はそれをどう構成すればいいか知っているが教える義理はない。
だが論理性や実装力は致命的に皆無にみえた。
俺はそれをどう構成すればいいか知っているが教える義理はない。
2014/08/11(月) 21:47:28.34ID:BJB2O+7J
>>45-46を見るとこりゃダメだってすぐわかる。
2014/08/11(月) 22:10:25.37ID:Z+2tOK2m
つまらんやつだな
2014/08/11(月) 23:35:56.32ID:Mn3XtQiS
2014/08/12(火) 12:26:24.53ID:oqHJt0pq
不勉強な上に
他人を当てにしてのスレ立て
万死に値する
他人を当てにしてのスレ立て
万死に値する
2014/08/12(火) 12:46:04.68ID:+sDF17YZ
2014/08/12(火) 13:45:33.28ID:KAheOZts
2014/08/12(火) 14:37:19.20ID:rgzvfb+p
いや、1が無知すぎて話にならないのが問題なんじゃ・・・
何度もネタ振りしてるってのに
何度もネタ振りしてるってのに
591
2014/08/12(火) 15:09:14.84ID:ey9Yf386 そもそも集合論に基づいた言語を作りたいってのは
数学のテクニックをプログラミングに持ち込めるかなと思ったからだけど、
案外、そうでもないのかもw
根底から意義が揺らいできたw
数学のテクニックをプログラミングに持ち込めるかなと思ったからだけど、
案外、そうでもないのかもw
根底から意義が揺らいできたw
2014/08/12(火) 15:38:39.73ID:rgzvfb+p
釣りか?釣りだよな
マジで言ってるのなら、計算機科学史を一からやり直してこい!
マジで言ってるのなら、計算機科学史を一からやり直してこい!
2014/08/12(火) 16:15:20.95ID:+sDF17YZ
621
2014/08/12(火) 18:29:00.33ID:ey9Yf386 教科書に載ってるような問題を教科書に載ってる定義のまま
インプリメントしたら面白いかなーと思ったんだけど。
集合をプリミティブ型にしてもインプリメントが
劇的に変わることはないかなーと思い始めた。
インプリメントしたら面白いかなーと思ったんだけど。
集合をプリミティブ型にしてもインプリメントが
劇的に変わることはないかなーと思い始めた。
2014/08/12(火) 20:06:53.08ID:8OBRChie
Coqでいいじゃん。
2014/08/12(火) 20:28:06.45ID:6TgmEYvj
二進数で自然に表現できるものを、わざわざペアノ算術から自然数の定義を頑張る意味がわからない
651
2014/08/12(火) 20:46:58.68ID:ey9Yf386 Coqって知らんなあ
証明支援言語?
それそんなにいいの?
証明支援言語?
それそんなにいいの?
2014/08/12(火) 21:18:32.69ID:6TgmEYvj
>>66
二進数は元が含まれるか否かの2択で決まるから、十分集合と二値論理に依っているがな
二進数は元が含まれるか否かの2択で決まるから、十分集合と二値論理に依っているがな
2014/08/13(水) 00:57:44.46ID:vN2Jb3VO
SQLでいいじゃないか
691
2014/08/13(水) 09:08:18.79ID:wV8mf1Ia SQLもそんなに詳しいわけじゃないが
SQLは違うくね?
SQLは違うくね?
2014/08/13(水) 09:44:32.05ID:EX+RHsS4
ggrks
2014/08/13(水) 11:13:17.12ID:dxftsD0h
2014/08/13(水) 11:15:46.15ID:dxftsD0h
「計算機なら集合の操作がやりやすいはず!」なんて話は別にどこにもないからな
計算機科学って「集合論的な操作をいかに計算機上で効率よく実装するか」ってものだから
そもそも >>1 の主張がおかしいんだよ。
計算機科学って「集合論的な操作をいかに計算機上で効率よく実装するか」ってものだから
そもそも >>1 の主張がおかしいんだよ。
731
2014/08/13(水) 12:28:01.11ID:wV8mf1Ia2014/08/13(水) 13:27:22.49ID:dxftsD0h
751
2014/08/13(水) 18:42:03.57ID:O4gvlVlr こんどこそID違うと思うけど1です。
どういうのが美しいかというと、教科書の記述をコピペすると
それがそのまま実装になるような言語がいいな。
用途は主に教育用。実用性はあんまり追わない。
どういうのが美しいかというと、教科書の記述をコピペすると
それがそのまま実装になるような言語がいいな。
用途は主に教育用。実用性はあんまり追わない。
2014/08/13(水) 19:07:44.67ID:1bb/GYoz
意味不明
2014/08/13(水) 19:14:36.99ID:OawzouLt
美味しいものが食べたい
781
2014/08/13(水) 20:07:16.34ID:O4gvlVlr 明日から2日くらいレスできなくなるけど、失踪したわけじゃないからな。
よろしく。
よろしく。
79デフォルトの名無しさん
2014/08/14(木) 00:15:37.33ID:qppS6X9h ファジィ論理 - Wikipedia
ファジィ論理(ファジィろんり、英: Fuzzy logic)は、ファジィ集合から派生した多値論理の一種で、真理値が0から1までの範囲の値をとり、
古典論理のように「真」と「偽」という2つの値に限定されないことが特徴である。
ファジィ論理と確率論理は数学的に似ており、どちらも0から1までの値を真理値とするが、概念的には解釈の面で異なる。
ファジィ論理の真理値が「真の度合い」に対応しているのに対し、確率論理では「確からしさ」や「尤もらしさ」に対応している。
■[QC]量子コンピュータの基礎:振幅の初期化
本記事は、量子コンピュータの初期状態の作り方についてです。1998年に発表された手法です。
状態
2量子ビットの場合、0,1,2,3と4つの状態が作られます。
http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?\sqrt{\frac{1}{2}}|1>~+~\sqrt{\frac{1}{2}}|3>
を観測すると、振幅http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?\sqrt{\frac{1}{2}}
の2乗が出現確率なので、この状態を「観測」すると、50%の確率で|1>、50%の確率で|3>が得られます。
問題は、この状態をどうやって人為的に作り出すかというお話しです。
このレベルですら、論文になるほどの内容…。
http://d.hatena.ne.jp/yukoba/20090928/p1
量子プログラミング言語
蓮尾 一郎(東京大学大学院情報理工学系研究科)
星野 直彦(京都大学数理解析研究所)
量子プログラミング言語とは――研究の動機
量子計算の分野においてアルゴリズムを記述するためには,量子回路が用いるのが一般的だろう.
一方で,(量子でない)古典アルゴリズムを回路で表現することはあまりなく擬似コードとよばれるプログラムもどきが用いられる.
この一点においてすでに「量子計算のためのプログラミング言語とはどのようなものか?」という疑問が自然に浮かびあがるのであり,
筆者らはこの疑問に答えるべく(おもに数学的なアプローチから)研究を行っている.
しかし以下ではさらにもう少し,「量子プログラミング言語の実現によって何が可能となるのか?」ということについて論じたい.
http://www-mmm.is.s.u-tokyo.ac.jp/~ichiro/papers/quantProgLangJapaneseMar2014.pdf
ファジィ論理(ファジィろんり、英: Fuzzy logic)は、ファジィ集合から派生した多値論理の一種で、真理値が0から1までの範囲の値をとり、
古典論理のように「真」と「偽」という2つの値に限定されないことが特徴である。
ファジィ論理と確率論理は数学的に似ており、どちらも0から1までの値を真理値とするが、概念的には解釈の面で異なる。
ファジィ論理の真理値が「真の度合い」に対応しているのに対し、確率論理では「確からしさ」や「尤もらしさ」に対応している。
■[QC]量子コンピュータの基礎:振幅の初期化
本記事は、量子コンピュータの初期状態の作り方についてです。1998年に発表された手法です。
状態
2量子ビットの場合、0,1,2,3と4つの状態が作られます。
http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?\sqrt{\frac{1}{2}}|1>~+~\sqrt{\frac{1}{2}}|3>
を観測すると、振幅http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?\sqrt{\frac{1}{2}}
の2乗が出現確率なので、この状態を「観測」すると、50%の確率で|1>、50%の確率で|3>が得られます。
問題は、この状態をどうやって人為的に作り出すかというお話しです。
このレベルですら、論文になるほどの内容…。
http://d.hatena.ne.jp/yukoba/20090928/p1
量子プログラミング言語
蓮尾 一郎(東京大学大学院情報理工学系研究科)
星野 直彦(京都大学数理解析研究所)
量子プログラミング言語とは――研究の動機
量子計算の分野においてアルゴリズムを記述するためには,量子回路が用いるのが一般的だろう.
一方で,(量子でない)古典アルゴリズムを回路で表現することはあまりなく擬似コードとよばれるプログラムもどきが用いられる.
この一点においてすでに「量子計算のためのプログラミング言語とはどのようなものか?」という疑問が自然に浮かびあがるのであり,
筆者らはこの疑問に答えるべく(おもに数学的なアプローチから)研究を行っている.
しかし以下ではさらにもう少し,「量子プログラミング言語の実現によって何が可能となるのか?」ということについて論じたい.
http://www-mmm.is.s.u-tokyo.ac.jp/~ichiro/papers/quantProgLangJapaneseMar2014.pdf
2014/08/14(木) 07:53:05.12ID:18xo22zy
2014/08/14(木) 22:20:55.55ID:ao1eYSCw
「全貌はともあれこういうことをこうカッコよく書けそう」みたいなのをみたい
2014/08/15(金) 12:53:42.95ID:Aqg845W8
831
2014/08/16(土) 08:32:34.29ID:ceF43G6L2014/08/16(土) 09:06:38.11ID:/1p3o6vn
意味不明。雰囲気だけで語るな。
2014/08/16(土) 09:20:19.06ID:atIrV/RU
Peggyでいいじゃん。
2014/08/16(土) 09:21:32.20ID:InfE8TR8
だからせめて記述例を書けよ お前の脳内は読めねえ
871
2014/08/16(土) 09:37:02.60ID:ceF43G6L だから具体的な案はまだないんだって。
881
2014/08/16(土) 10:17:23.81ID:ceF43G6L 有限オートマトンの遷移関数を書くのに、関数の引数のパターンマッチは欲しいかな。
891
2014/08/16(土) 10:35:06.72ID:ceF43G6L と、おもったけどそんなめんどくさいことしなくても連想配列でもいいのか。
2014/08/16(土) 10:41:17.00ID:eWpr12Q+
>>87
ここはお前の日記帳じゃないんだから、具体的にまとまってから書いてくれ
ここはお前の日記帳じゃないんだから、具体的にまとまってから書いてくれ
911
2014/08/16(土) 11:51:35.82ID:ceF43G6L 俺が持ってる教科書、マイケルシプサの計算理論の基礎っていう本の38,39ページに載ってる
A={w|wは少なくとも一つの1を含み最後に現れる1の後に偶数個の0が存在する}
っていう言語を受理するオートマトンの実装例は以下のような感じかな。かなりC++ぽいが。
enum State {q1,q2,q3};
set<State> Q={q1,q2,q3};
set<char> Σ={'0','1'};
map<pair<State,char>,State> δ={
(q1,'0')=>q1,
(q1,'1')=>q2,
(q2,'0')=>q3,
(q2,'1')=>q2,
(q3,'0')=>q2,
(q3,'1')=>q2
};
set<State> F={q2};
class Automaton {
set<State> Q;
set<char> Σ;
map<pair<State,char>,State> δ;
State start;
set<State> F;
bool accept(char *str){
State state=start;
while(str){
state=δ[(state,*str)];
str++;
}
return F.include(state);
}
} M = (Q,Σ,δ,q1,F);
A={w|wは少なくとも一つの1を含み最後に現れる1の後に偶数個の0が存在する}
っていう言語を受理するオートマトンの実装例は以下のような感じかな。かなりC++ぽいが。
enum State {q1,q2,q3};
set<State> Q={q1,q2,q3};
set<char> Σ={'0','1'};
map<pair<State,char>,State> δ={
(q1,'0')=>q1,
(q1,'1')=>q2,
(q2,'0')=>q3,
(q2,'1')=>q2,
(q3,'0')=>q2,
(q3,'1')=>q2
};
set<State> F={q2};
class Automaton {
set<State> Q;
set<char> Σ;
map<pair<State,char>,State> δ;
State start;
set<State> F;
bool accept(char *str){
State state=start;
while(str){
state=δ[(state,*str)];
str++;
}
return F.include(state);
}
} M = (Q,Σ,δ,q1,F);
921
2014/08/16(土) 11:54:15.04ID:ceF43G6L あれ、空白ミスってんな。
プレビューでみたらちゃんと空白になってたと思ったけど。
プレビューでみたらちゃんと空白になってたと思ったけど。
931
2014/08/16(土) 11:57:01.89ID:ceF43G6L まあ、いいや。インデントなしで再投稿
enum State {q1,q2,q3};
set<State> Q={q1,q2,q3};
set<char> Σ={'0','1'};
map<pair<State,char>,State> δ={
(q1,'0')=>q1,
(q1,'1')=>q2,
(q2,'0')=>q3,
(q2,'1')=>q2,
(q3,'0')=>q2,
(q3,'1')=>q2
};
set<State> F={q2};
class Automaton {
set<State> Q;
set<char> Σ;
map<pair<State,char>,State> δ;
State start;
set<State> F;
bool accept(char *str){
State state=start;
while(str){
state=δ[(state,*str)];
str++;
}
return F.include(state);
}
} M = (Q,Σ,δ,q1,F);
enum State {q1,q2,q3};
set<State> Q={q1,q2,q3};
set<char> Σ={'0','1'};
map<pair<State,char>,State> δ={
(q1,'0')=>q1,
(q1,'1')=>q2,
(q2,'0')=>q3,
(q2,'1')=>q2,
(q3,'0')=>q2,
(q3,'1')=>q2
};
set<State> F={q2};
class Automaton {
set<State> Q;
set<char> Σ;
map<pair<State,char>,State> δ;
State start;
set<State> F;
bool accept(char *str){
State state=start;
while(str){
state=δ[(state,*str)];
str++;
}
return F.include(state);
}
} M = (Q,Σ,δ,q1,F);
2014/08/16(土) 13:25:37.77ID:atIrV/RU
Ragelでいいじゃん。
951
2014/08/16(土) 15:25:06.91ID:ceF43G6L とりあえず、集合と連想配列と組のリテラル表記は欲しいな。
型さえ一致してれば組はクラスに暗黙のキャストできる感じで。
型さえ一致してれば組はクラスに暗黙のキャストできる感じで。
2014/08/16(土) 17:30:42.83ID:wloQcISK
目新しいものがないな。なんとなく美しくなりそうってのは天才的センスがないと実現しない。
天才か凡才かを確定させるためにさっさと作ってしまおう。
天才か凡才かを確定させるためにさっさと作ってしまおう。
971
2014/08/16(土) 17:44:24.71ID:ceF43G6L まじかw
言語仕様きめるだけでも結構大変だぞw
さくっと作れるみたいなこと言うなw
言語仕様きめるだけでも結構大変だぞw
さくっと作れるみたいなこと言うなw
2014/08/16(土) 17:45:22.16ID:0H8IvnJl
結局、見た目の問題でしかないの?
新しいパラダイムもなにも無いなら、わざわざ言語を作る意味が無いよ
新しいパラダイムもなにも無いなら、わざわざ言語を作る意味が無いよ
991
2014/08/16(土) 17:56:17.24ID:ceF43G6L いまのところシンタックスシュガーの問題の域をでてないな。
オートマトンだけじゃなくてもっと色んな問題を考察していけば
なんか出てくるのかもしれないが。
とにかく、今のプログラミング言語において集合は不当に冷遇されてる気がする。
もっと集合を活躍させるべき、というのがこのスレの発端です。
オートマトンだけじゃなくてもっと色んな問題を考察していけば
なんか出てくるのかもしれないが。
とにかく、今のプログラミング言語において集合は不当に冷遇されてる気がする。
もっと集合を活躍させるべき、というのがこのスレの発端です。
100デフォルトの名無しさん
2014/08/16(土) 17:59:58.20ID:0E9vEosE >>75を具体的に語って欲しい
1011
2014/08/16(土) 18:04:10.41ID:ceF43G6L 型のキャストって結構不自由じゃない?
集合論に基づいた型の表記法が一致したらバンバンキャストできるようにしちゃうとか。
集合論に基づいた型の表記法が一致したらバンバンキャストできるようにしちゃうとか。
102デフォルトの名無しさん
2014/08/16(土) 18:09:17.80ID:ceF43G6L103デフォルトの名無しさん
2014/08/17(日) 00:08:28.60ID:rJnEUKU4 OCamlのvariantみたいなことがしたいのかなあ?
1041
2014/08/17(日) 00:17:38.28ID:wbAX39n3 OCamlは触ったことがないけど面白そうな雰囲気ですね。
本でもかってくるかな。
本でもかってくるかな。
105デフォルトの名無しさん
2014/08/17(日) 00:38:59.38ID:rJnEUKU4 >>1はCライクな言語しか触ったこと無いの?
だったら、もっと色々な言語を知るべきだよ。
その上でLispなり何なりで好きなようにDSLを実装すればいい。
少なくとも、集合が不当に冷遇されてるなんてことはない。ありえない。
だったら、もっと色々な言語を知るべきだよ。
その上でLispなり何なりで好きなようにDSLを実装すればいい。
少なくとも、集合が不当に冷遇されてるなんてことはない。ありえない。
106デフォルトの名無しさん
2014/08/17(日) 05:17:10.40ID:ruDVRpF3 集合論よりかは圏論のほうが良くないか。厳密には違うが、ほぼ集合論の一般化でプログラム言語として利用する上では不具合無いだろ。
Haskell/圏論 - Wikibooks
http://ja.wikibooks.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Simple-cat.png
http://ja.wikibooks.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Functor.png
http://ja.wikibooks.org/wiki/Haskell/%E5%9C%8F%E8%AB%96
Scala で圏論入門
https://github.com/scalajp/introduction-to-category-theory-in-scala-jp/wiki
Coq を始めよう
このチュートリアルでは定理証明支援系言語である Coq について解説をします。
読者の前提知識としては OCaml や Haskell などの関数型言語でプログラミングできることを想定します。
また、本文書において Coq のプログラムとの比較には Haskell と OCaml を用いますが、Haskell や OCaml を書いたことがなくても他の関数型言語に触れていれば理解できるような内容を心がけます。
http://www.iij-ii.co.jp/lab/techdoc/coqt/coqt1.html
圏論は数学をするための「高級言語」
http://www.is.s.u-tokyo.ac.jp/isnavi/images/logic/picture04.gif
http://www.is.s.u-tokyo.ac.jp/isnavi/logic06.html
Haskell/圏論 - Wikibooks
http://ja.wikibooks.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Simple-cat.png
http://ja.wikibooks.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Functor.png
http://ja.wikibooks.org/wiki/Haskell/%E5%9C%8F%E8%AB%96
Scala で圏論入門
https://github.com/scalajp/introduction-to-category-theory-in-scala-jp/wiki
Coq を始めよう
このチュートリアルでは定理証明支援系言語である Coq について解説をします。
読者の前提知識としては OCaml や Haskell などの関数型言語でプログラミングできることを想定します。
また、本文書において Coq のプログラムとの比較には Haskell と OCaml を用いますが、Haskell や OCaml を書いたことがなくても他の関数型言語に触れていれば理解できるような内容を心がけます。
http://www.iij-ii.co.jp/lab/techdoc/coqt/coqt1.html
圏論は数学をするための「高級言語」
http://www.is.s.u-tokyo.ac.jp/isnavi/images/logic/picture04.gif
http://www.is.s.u-tokyo.ac.jp/isnavi/logic06.html
107デフォルトの名無しさん
2014/08/17(日) 07:09:05.41ID:YbL+7IWD メニー・コアの時代にはそういう言語が流行るんだろな。
108デフォルトの名無しさん
2014/08/17(日) 07:29:25.82ID:ruDVRpF3 圏論 - Wikipedia
圏論(けんろん、category theory)は、数学的構造とその間の関係を抽象的に扱う数学理論の 1 つである。
さらに一般的な圏論、つまり、意味論的な柔軟性をもち高階論理との親和性があるようなより現代的な普遍的代数が発展し、現在では数学全体を通して応用されている。
トポスと呼ばれる特別な種類の圏は、数学基礎論としての公理的集合論に取って代わることすら可能である。
実際構成的数学を記述する手段としても、トポスは非常に精緻に機能することが示されている。
集合論 - Wikipedia
さまざまな数学の問題に対応した構造を理解するときには、個々の対象が具体的にどんな集合として定義されたかということよりも、
類似の構造を持つほかの数学的対象との関係性の方がしばしば重要になる。
この関係性は対象間の写像のうちで「構造を保つ」ようなものによって定式化される。このような考え方を扱うために圏論が発達した。
集合論の著しい特徴は集合間の写像たちまでが再び集合として実現できることだが、こういった性質を圏論的に定式化することで
集合論の圏論化・幾何化ともいうべきトポスの概念がえられる。
圏論(けんろん、category theory)は、数学的構造とその間の関係を抽象的に扱う数学理論の 1 つである。
さらに一般的な圏論、つまり、意味論的な柔軟性をもち高階論理との親和性があるようなより現代的な普遍的代数が発展し、現在では数学全体を通して応用されている。
トポスと呼ばれる特別な種類の圏は、数学基礎論としての公理的集合論に取って代わることすら可能である。
実際構成的数学を記述する手段としても、トポスは非常に精緻に機能することが示されている。
集合論 - Wikipedia
さまざまな数学の問題に対応した構造を理解するときには、個々の対象が具体的にどんな集合として定義されたかということよりも、
類似の構造を持つほかの数学的対象との関係性の方がしばしば重要になる。
この関係性は対象間の写像のうちで「構造を保つ」ようなものによって定式化される。このような考え方を扱うために圏論が発達した。
集合論の著しい特徴は集合間の写像たちまでが再び集合として実現できることだが、こういった性質を圏論的に定式化することで
集合論の圏論化・幾何化ともいうべきトポスの概念がえられる。
1091
2014/08/17(日) 09:26:36.14ID:wbAX39n3110デフォルトの名無しさん
2014/08/17(日) 09:41:10.85ID:ruDVRpF3 集合が{○、●、◎、□、■}とすると、
圏は{→(1)、→(2)、→(3)、→(4)、→(5)}>
圏は{→(1)、→(2)、→(3)、→(4)、→(5)}>
111デフォルトの名無しさん
2014/08/17(日) 09:51:19.75ID:ruDVRpF3 途中で送信した。
(ある条件をみたす)全ての集合に対して、(ある条件をみたす)全ての集合の写像の集まりが圏。
圏論は、集合間の写像に注目したもの。
厳密なことは知らないが、どんな集合も圏として扱えるはずだろう。
集合{○、●、◎、□、■}に対して、圏{○→○、●→●、◎→◎、□→□、■→■}、(f(x)=xとなる写像)が作れる。
(ある条件をみたす)全ての集合に対して、(ある条件をみたす)全ての集合の写像の集まりが圏。
圏論は、集合間の写像に注目したもの。
厳密なことは知らないが、どんな集合も圏として扱えるはずだろう。
集合{○、●、◎、□、■}に対して、圏{○→○、●→●、◎→◎、□→□、■→■}、(f(x)=xとなる写像)が作れる。
112デフォルトの名無しさん
2014/08/17(日) 09:52:50.76ID:wbAX39n31131
2014/08/17(日) 09:53:56.42ID:wbAX39n3 うおリロードしてなかった。
114デフォルトの名無しさん
2014/08/17(日) 10:02:50.89ID:ruDVRpF3 圏の主人公って「対象」なのかな?「射」なのかな? | TETRA'S MATH
「しりとりの圏」を圏とみなそうとするとき、まず、1字1字があって、
http://artet-math.img.jugem.jp/20101201_1468744.jpg
それを始域、終域とする文字列を考えるのか。
http://artet-math.img.jugem.jp/20101201_1468743.jpg
それとも、まず文字列ありきで、
http://artet-math.img.jugem.jp/20101201_1468745.jpg
始域、終域の一致でそれらの関係をひとまとまりのものとして捉えるのか…
http://artet-math.img.jugem.jp/20101201_1468746.jpg
どっちのイメージが圏の本質に近いのだろう?
で、検索していたら、檜山さんの有限集合と写像の圏もJavaScriptで書いてみた、遊んでみてねにて、「圏の主役は射です。」と書いてあるのを発見。なるほど。
http://math.artet.net/?eid=1306322
「しりとりの圏」を圏とみなそうとするとき、まず、1字1字があって、
http://artet-math.img.jugem.jp/20101201_1468744.jpg
それを始域、終域とする文字列を考えるのか。
http://artet-math.img.jugem.jp/20101201_1468743.jpg
それとも、まず文字列ありきで、
http://artet-math.img.jugem.jp/20101201_1468745.jpg
始域、終域の一致でそれらの関係をひとまとまりのものとして捉えるのか…
http://artet-math.img.jugem.jp/20101201_1468746.jpg
どっちのイメージが圏の本質に近いのだろう?
で、検索していたら、檜山さんの有限集合と写像の圏もJavaScriptで書いてみた、遊んでみてねにて、「圏の主役は射です。」と書いてあるのを発見。なるほど。
http://math.artet.net/?eid=1306322
1151
2014/08/17(日) 10:17:17.51ID:wbAX39n3 TODOが一気にふえたな。
とりあえず、Ocamlの本買ってきます。
圏論を理解できるようになるのは相当先かな〜。
とりあえず、Ocamlの本買ってきます。
圏論を理解できるようになるのは相当先かな〜。
116デフォルトの名無しさん
2014/08/17(日) 10:34:34.27ID:kLc8LA2s >>1はやりたいことが沢山あって圧倒される段階か。その後何年かして夢見た事はすべてやり尽くした段階になる。
能力が足りないとそうなるまえに死んでしまうがね。
能力が足りないとそうなるまえに死んでしまうがね。
117デフォルトの名無しさん
2014/08/17(日) 10:36:45.62ID:ruDVRpF3 Ocamlは副作用があって純粋な関数型でない。副作用ありでいいならJavascriptも関数型言語でJavascriptで関数型の勉強可能。
純粋関数型プログラミングとは
関数が純粋であるというのは、副作用がないということである。副作用とは、関数が、内部で、なんらかの状態を隠しもつことをいう。
OCamlのようなML由来の言語は"ほぼ純粋"である。副作用を、参照や配列の形で使えるけども、大抵は、書いたコードは純粋関数型に落ち着くことが多い。
Haskellもまた、関数型言語で、純粋関数型だ。OCamlは、より実用的といえる。純粋でない関数もときには便利だからだ。
http://ocaml.org/learn/tutorials/functional_programming.ja.html
JavaScriptで学ぶ関数型プログラミング
http://hamasyou.com/blog/2014/02/21/functional-javascript/
JavaScript はプロトタイプベースのオブジェクト指向言語ですが、関数型言語の機能も備えています。
http://www.geocities.jp/m_hiroi/light/js03.html
JavaScript - Javascrptで関数型プログラミングの入門 - Qiita
http://qiita.com/takeharu/items/cf98d352ff574c5ac536
JavaScriptは関数型言語の特徴を取り入れていると思いますが、純粋な関数型言語ではありません。しかし今、そしてこれからのトレンドは関数型言語と言われています。
そこでJavaScriptでより関数型言語的なプログラミングを可能にするfn.jsを使ってみましょう。
http://www.moongift.jp/2014/02/fn-js-javascript%E3%82%92%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E%E3%81%AE%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%A7%E6%9B%B8%E3%81%8F%EF%BC%81/
CoffeeScript と Node.js による関数型の JavaScript
http://www.ibm.com/developerworks/jp/java/library/j-coffeescript/
Functional JavaScript
https://gist.github.com/ympbyc/5564146
純粋関数型プログラミングとは
関数が純粋であるというのは、副作用がないということである。副作用とは、関数が、内部で、なんらかの状態を隠しもつことをいう。
OCamlのようなML由来の言語は"ほぼ純粋"である。副作用を、参照や配列の形で使えるけども、大抵は、書いたコードは純粋関数型に落ち着くことが多い。
Haskellもまた、関数型言語で、純粋関数型だ。OCamlは、より実用的といえる。純粋でない関数もときには便利だからだ。
http://ocaml.org/learn/tutorials/functional_programming.ja.html
JavaScriptで学ぶ関数型プログラミング
http://hamasyou.com/blog/2014/02/21/functional-javascript/
JavaScript はプロトタイプベースのオブジェクト指向言語ですが、関数型言語の機能も備えています。
http://www.geocities.jp/m_hiroi/light/js03.html
JavaScript - Javascrptで関数型プログラミングの入門 - Qiita
http://qiita.com/takeharu/items/cf98d352ff574c5ac536
JavaScriptは関数型言語の特徴を取り入れていると思いますが、純粋な関数型言語ではありません。しかし今、そしてこれからのトレンドは関数型言語と言われています。
そこでJavaScriptでより関数型言語的なプログラミングを可能にするfn.jsを使ってみましょう。
http://www.moongift.jp/2014/02/fn-js-javascript%E3%82%92%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E%E3%81%AE%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%81%A7%E6%9B%B8%E3%81%8F%EF%BC%81/
CoffeeScript と Node.js による関数型の JavaScript
http://www.ibm.com/developerworks/jp/java/library/j-coffeescript/
Functional JavaScript
https://gist.github.com/ympbyc/5564146
118デフォルトの名無しさん
2014/08/17(日) 10:45:48.55ID:ruDVRpF3 この記事では、クイックソート・アルゴリズムの実装について、 様々な言語で書かれた関数型プログラミングのコードを紹介しています
なお、この記事の内容は、 2ちゃんねる掲示板 のプログラム板にあるスレッド 【PHP,Python】スクリプト, バトルロワイヤル36【Perl,Ruby】 で行われた議論を整理、加筆したものです。
関数型言語が関数型プログラミングを何の苦もなく実践できるのは、当たり前の話です。
Haskell
quicksort [] = []
quicksort (pivot:xs) = quicksort littles ++ pivot:(quicksort bigs)
where
f x (ls, bs) = if x < pivot then (x:ls, bs) else (ls, x:bs)
(littles, bigs) = foldr f ([], []) xs
この節で取り上げる Ruby, JavaScript, Python はどれも関数型言語には分類されていませんが、関数型の特性を取り入れていると言われています。
それでは、これら言語の関数型プログラミング・スタイルを見ていくことにしましょう。
JavaScript
function quicksort(xs) {
function f(xs) {
var pivot = xs[0];
function g(pair, x) {
var ls = pair[0], bs = pair[1]
return x < pivot ? [ls.concat([x]), bs] : [ls, bs.concat([x])];
}
var pair = xs.slice(1).reduce(g, [[], []]);
var littles = pair[0], bigs = pair[1];
return [].concat(
quicksort(littles), [pivot], quicksort(bigs)
); }
return xs.length <= 1 ? xs : f(xs); }
http://www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
なお、この記事の内容は、 2ちゃんねる掲示板 のプログラム板にあるスレッド 【PHP,Python】スクリプト, バトルロワイヤル36【Perl,Ruby】 で行われた議論を整理、加筆したものです。
関数型言語が関数型プログラミングを何の苦もなく実践できるのは、当たり前の話です。
Haskell
quicksort [] = []
quicksort (pivot:xs) = quicksort littles ++ pivot:(quicksort bigs)
where
f x (ls, bs) = if x < pivot then (x:ls, bs) else (ls, x:bs)
(littles, bigs) = foldr f ([], []) xs
この節で取り上げる Ruby, JavaScript, Python はどれも関数型言語には分類されていませんが、関数型の特性を取り入れていると言われています。
それでは、これら言語の関数型プログラミング・スタイルを見ていくことにしましょう。
JavaScript
function quicksort(xs) {
function f(xs) {
var pivot = xs[0];
function g(pair, x) {
var ls = pair[0], bs = pair[1]
return x < pivot ? [ls.concat([x]), bs] : [ls, bs.concat([x])];
}
var pair = xs.slice(1).reduce(g, [[], []]);
var littles = pair[0], bigs = pair[1];
return [].concat(
quicksort(littles), [pivot], quicksort(bigs)
); }
return xs.length <= 1 ? xs : f(xs); }
http://www.h6.dion.ne.jp/~machan/misc/qsort-in-fp.html
119デフォルトの名無しさん
2014/08/17(日) 10:51:34.94ID:ruDVRpF3 こっちのクイックソートのほうが短くわかりやすかった。
クイックソート - NullPointer's Blog
Erlangで書くと…
quicksort([]) -> [];
quicksort([Head|Tail]) ->
quicksort([X || X <- Tail, X < Head ]) ++ [Head] ++ quicksort([X || X <- Tail, X >= Head]).
小さいのを左に集めて、大きいのを右に集めて、繰り返し…、アルゴリズムの説明そのままのコードになる。
簡単すぎ。アルゴリズムを理解するという目的であれば、関数型のコードの方が10000倍理解しやすい。
関数型っぽい書き方は、最近のJavaScriptならばサクッと書けますが…
function quickSort(array) {
if (array.length <= 1) return array;
var pivot = array.pop();
var lt = array.filter(function(a){ return a < pivot });
var ge = array.filter(function(a){ return a >= pivot });
return quickSort(lt).concat([pivot]).concat(quickSort(ge))
}
http://paulownia.hatenablog.com/entry/20111204/1323015703
クイックソート - NullPointer's Blog
Erlangで書くと…
quicksort([]) -> [];
quicksort([Head|Tail]) ->
quicksort([X || X <- Tail, X < Head ]) ++ [Head] ++ quicksort([X || X <- Tail, X >= Head]).
小さいのを左に集めて、大きいのを右に集めて、繰り返し…、アルゴリズムの説明そのままのコードになる。
簡単すぎ。アルゴリズムを理解するという目的であれば、関数型のコードの方が10000倍理解しやすい。
関数型っぽい書き方は、最近のJavaScriptならばサクッと書けますが…
function quickSort(array) {
if (array.length <= 1) return array;
var pivot = array.pop();
var lt = array.filter(function(a){ return a < pivot });
var ge = array.filter(function(a){ return a >= pivot });
return quickSort(lt).concat([pivot]).concat(quickSort(ge))
}
http://paulownia.hatenablog.com/entry/20111204/1323015703
1201
2014/08/17(日) 15:08:45.66ID:wbAX39n3 本屋めぐってきたけどOcamlの本なかったわー
廃れてしまった言語なん?
しかたないからwebで情報探すか。
廃れてしまった言語なん?
しかたないからwebで情報探すか。
121デフォルトの名無しさん
2014/08/17(日) 15:31:49.05ID:8WbwPRMF ググれば数秒でみつかるのに。
http://caml.inria.fr/resources/index.en.html
http://caml.inria.fr/resources/index.en.html
122デフォルトの名無しさん
2014/08/17(日) 16:03:30.63ID:PGXi6tC21231
2014/08/25(月) 19:07:11.02ID:DrxGPTGS とりあえず、Ocamlでconnect4のルールだけ作ってみた。
だれか添削たのむ。
http://www.age2.tv/rd05/src/up3979.txt
connect4はこことかで遊べます。
http://www.connectfour.org/connect-4-online.php
だれか添削たのむ。
http://www.age2.tv/rd05/src/up3979.txt
connect4はこことかで遊べます。
http://www.connectfour.org/connect-4-online.php
124デフォルトの名無しさん
2014/08/25(月) 19:28:01.77ID:vcy2nNqb 以下>>1がOCamlを勉強するスレ
1251
2014/08/25(月) 19:30:28.60ID:DrxGPTGS いやw今はそうだけど、そのうち本題に戻りたいとは思ってる。
126デフォルトの名無しさん
2014/08/25(月) 20:06:42.36ID:l0tzbBCe この思考エンジンで。GUIはすでにあるから思考部だけ。
http://www.vector.co.jp/soft/win95/game/se401975.html
石を7つ直線に並べた方が勝ちという五目並べに、囲碁の石を取るという概念を加えた新しいゲーム「囲連星」。CPU戦も対人戦も楽しめる。
ルールは簡単!
1) 黒白交互に打っていき、先に縦・横・斜めに7つ石を並べたほうが勝ち
2) その間に相手の石を囲んで取ることが出来る
http://www.vector.co.jp/soft/win95/game/se401975.html
石を7つ直線に並べた方が勝ちという五目並べに、囲碁の石を取るという概念を加えた新しいゲーム「囲連星」。CPU戦も対人戦も楽しめる。
ルールは簡単!
1) 黒白交互に打っていき、先に縦・横・斜めに7つ石を並べたほうが勝ち
2) その間に相手の石を囲んで取ることが出来る
1271
2014/08/25(月) 20:15:54.91ID:DrxGPTGS ばかやろーw
囲連星つったら今までまともなAI作れたの2人しかいない難題じゃねーかw
もっと簡単な奴にしろw
囲連星つったら今までまともなAI作れたの2人しかいない難題じゃねーかw
もっと簡単な奴にしろw
128デフォルトの名無しさん
2014/08/26(火) 17:44:18.47ID:Yj5Hd+B/ 総当たりができなければモンテカルロでやりゃ良いじゃん
もっと素晴らしいのを見つけて欲しいな
もっと素晴らしいのを見つけて欲しいな
1291
2014/08/26(火) 19:40:10.91ID:FDxVWnbU モンテカルロなら簡単だとおもってるな?
そんな甘くないから。
今のLV3のプログラムは相当レベル高いから。
そんな甘くないから。
今のLV3のプログラムは相当レベル高いから。
130デフォルトの名無しさん
2014/08/26(火) 20:14:52.44ID:k5rL1v3w >>1程度の習熟度だとそうかもな
132デフォルトの名無しさん
2014/08/26(火) 20:44:26.53ID:k5rL1v3w133デフォルトの名無しさん
2014/08/26(火) 20:54:37.89ID:FDxVWnbU134デフォルトの名無しさん
2014/08/26(火) 21:07:11.73ID:k5rL1v3w1351
2014/08/26(火) 21:15:57.51ID:FDxVWnbU まあ、一応スレタイの通りだな。
スレの方向はずれてきているが。
とりあえず、関数型言語を触ってみてるところだ。
スレの方向はずれてきているが。
とりあえず、関数型言語を触ってみてるところだ。
136デフォルトの名無しさん
2014/08/26(火) 21:47:40.66ID:UhLj/9Xy LV3は大して強くない。手動でほぼ100%勝てる。
たぶんプログラムでも勝てると思う。
これは囲碁と違って有効手が見付けやすくモンテカルロ法は向いていないと思う。
たぶんプログラムでも勝てると思う。
これは囲碁と違って有効手が見付けやすくモンテカルロ法は向いていないと思う。
137デフォルトの名無しさん
2014/08/26(火) 22:01:43.24ID:2ww4+7z5 ダメダメだな。いつまでたっても何もできそうにない
1381
2014/08/26(火) 22:10:51.94ID:FDxVWnbU139デフォルトの名無しさん
2014/08/26(火) 22:21:22.44ID:2ww4+7z5 ふーん。ならスレ終了でOKだな
141デフォルトの名無しさん
2014/08/27(水) 19:44:52.25ID:FS966Rgy はあ?これ以上妄言を垂れ流すならブログでやれば?
142デフォルトの名無しさん
2014/08/27(水) 21:12:10.16ID:sWLZW0su 1のスレだし見たくないやつが来なければ済む
1431
2014/08/28(木) 19:02:16.77ID:NyU3eawL しかしOcamlはプログラム組みにくいな。
ちょっとしたことやるにも再帰関数つかうっぽいし。
慣れてないだけかもしれんが。
ちょっとしたことやるにも再帰関数つかうっぽいし。
慣れてないだけかもしれんが。
144デフォルトの名無しさん
2014/08/28(木) 19:15:00.80ID:Qmt6TOBF 慣れてないだけ。
145デフォルトの名無しさん
2014/08/28(木) 19:38:25.81ID:RkFVOWz21461
2014/08/28(木) 20:42:22.39ID:NyU3eawL147デフォルトの名無しさん
2014/08/28(木) 22:22:22.57ID:wWKXD6ik 純粋関数型でない、参照透過性がないのは、手続き+αの手続き型言語。
148デフォルトの名無しさん
2014/08/28(木) 22:43:29.27ID:wWKXD6ik 2032 年の FPGA: 20年後の FPGA の未来像
Tabula 社社長兼 CTO の Steve Teig 氏は、次のように断言しました。
「FPGA のプログラミングに関して言えば、RTL は適していません。しかし、C はさらに問題があります。
直列実行から並列実行への移行でさえも低レベルすぎます。
Haskell のような関数型言語の方がましですが、ほとんどの関数型言語がベースとしている数学的抽象化であるラムダ計算も最適な抽象化とは思えません」
Blainey 氏も同じ意見のようで、ソフトウェアを FPGA 構造に変換するライブラリおよびコンパイラを備えた明示的並行言語が広く普及するとともに、
特定の種類の問題を扱う関数型言語プログラマのエリートが現れることになると予想しました。
http://www.altera.co.jp/technology/system-design/articles/2012/fpgas-in-2032-the-acm-fpga-2012-workshop.html
現状でさえマルチスレッドプログラミングは開発の困難さが指摘されている分野である。
Sweeney氏は、これは現在主流の開発言語であるC++の手続き型言語としての特性に由来すると指摘する。
Sweeney氏は、この問題を解決するためには、ゲーム開発言語として純粋関数型の言語が必要になるだろうと言う。
この種の処理系では、C++のような共有メモリのアクセスや、I/O操作は基本的に行なえない。
その引き替えとして、各関数のアトミック性が構造的に保証されており、安全に並列実行できるのだ。
しかも、コンパイラが対応さえすれば、関数を自動的に多数のコアに分散処理させることができるというスケーラブルな実行バイナリを作り出せる。
Sweeney氏はそのひな形として言語“Haskel”を挙げているが、ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。
http://game.watch.impress.co.jp/docs/20080911/epic.htm
Tabula 社社長兼 CTO の Steve Teig 氏は、次のように断言しました。
「FPGA のプログラミングに関して言えば、RTL は適していません。しかし、C はさらに問題があります。
直列実行から並列実行への移行でさえも低レベルすぎます。
Haskell のような関数型言語の方がましですが、ほとんどの関数型言語がベースとしている数学的抽象化であるラムダ計算も最適な抽象化とは思えません」
Blainey 氏も同じ意見のようで、ソフトウェアを FPGA 構造に変換するライブラリおよびコンパイラを備えた明示的並行言語が広く普及するとともに、
特定の種類の問題を扱う関数型言語プログラマのエリートが現れることになると予想しました。
http://www.altera.co.jp/technology/system-design/articles/2012/fpgas-in-2032-the-acm-fpga-2012-workshop.html
現状でさえマルチスレッドプログラミングは開発の困難さが指摘されている分野である。
Sweeney氏は、これは現在主流の開発言語であるC++の手続き型言語としての特性に由来すると指摘する。
Sweeney氏は、この問題を解決するためには、ゲーム開発言語として純粋関数型の言語が必要になるだろうと言う。
この種の処理系では、C++のような共有メモリのアクセスや、I/O操作は基本的に行なえない。
その引き替えとして、各関数のアトミック性が構造的に保証されており、安全に並列実行できるのだ。
しかも、コンパイラが対応さえすれば、関数を自動的に多数のコアに分散処理させることができるというスケーラブルな実行バイナリを作り出せる。
Sweeney氏はそのひな形として言語“Haskel”を挙げているが、ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。
http://game.watch.impress.co.jp/docs/20080911/epic.htm
1491
2014/08/28(木) 23:08:29.08ID:NyU3eawL150デフォルトの名無しさん
2014/08/29(金) 00:59:50.98ID:4AjKkLEL >>149
コア数、5760基
2014年7月22日掲載
ビデオカード単体の価格を下回る破格のロープライスで発売中! 安い、安すぎる! NVIDIA史上最速「GeForce GTX TITAN Z」搭載ゲーミングPCが299,799円!?
「GeForce GTX TITAN Z」は、1枚のカードに「GK110」コアを2基搭載する、NVIDIAの最上位デュアルGPU。
12GBのGDDR5メモリーを搭載するほか、CUDAコアは計5760基で、演算性能は8TFLOPSをうたうウルトラハイエンドGPUです。
デルによると、このGPUを搭載する「ALIENWARE Aurora TITAN Z」は、3840×2160の4K環境で60fpsを超えるパフォーマンスを叩き出し、
「グラフィックス設定を最大にして4Kを有効にすることで、2014年6月に発売され全世界で記録的なセールスを更新中のオープンワールド型アクションゲーム『ウォッチドッグス』も、
すべてのエレメントがさらにシャープで滑らかで鮮明になり、開発元であるUbisoft Montrealの意図通りのディテールをすべて体験することができる」とのことです。
http://magazine.kakaku.com/mag/pc/id=1687/
コア数、5760基
2014年7月22日掲載
ビデオカード単体の価格を下回る破格のロープライスで発売中! 安い、安すぎる! NVIDIA史上最速「GeForce GTX TITAN Z」搭載ゲーミングPCが299,799円!?
「GeForce GTX TITAN Z」は、1枚のカードに「GK110」コアを2基搭載する、NVIDIAの最上位デュアルGPU。
12GBのGDDR5メモリーを搭載するほか、CUDAコアは計5760基で、演算性能は8TFLOPSをうたうウルトラハイエンドGPUです。
デルによると、このGPUを搭載する「ALIENWARE Aurora TITAN Z」は、3840×2160の4K環境で60fpsを超えるパフォーマンスを叩き出し、
「グラフィックス設定を最大にして4Kを有効にすることで、2014年6月に発売され全世界で記録的なセールスを更新中のオープンワールド型アクションゲーム『ウォッチドッグス』も、
すべてのエレメントがさらにシャープで滑らかで鮮明になり、開発元であるUbisoft Montrealの意図通りのディテールをすべて体験することができる」とのことです。
http://magazine.kakaku.com/mag/pc/id=1687/
151デフォルトの名無しさん
2014/08/29(金) 14:03:44.10ID:/HNlnXLI >>146
停止性問題さえ知らないのか。
参照透明性はプログラムを解析しやすくする。
C/C++ で const の少ないソースを見たら気を付けろ。
実用でいえば、コンパイラが最適化するときに全ての中間式に仮の名前を付けて const 変数として扱い、
例えばループの外に追い出すためのスコープ中で不変な部分を探すために使ったりするが、
これは参照透明な範囲を見つけるためだと言えるだろう。
手続型でプログラムをしていても、なるべく参照透明を保った方がいいし、参照透明な範囲を意識しておいた方がいい。
停止性問題さえ知らないのか。
参照透明性はプログラムを解析しやすくする。
C/C++ で const の少ないソースを見たら気を付けろ。
実用でいえば、コンパイラが最適化するときに全ての中間式に仮の名前を付けて const 変数として扱い、
例えばループの外に追い出すためのスコープ中で不変な部分を探すために使ったりするが、
これは参照透明な範囲を見つけるためだと言えるだろう。
手続型でプログラムをしていても、なるべく参照透明を保った方がいいし、参照透明な範囲を意識しておいた方がいい。
1521
2014/08/29(金) 19:54:56.85ID:5NUrtg1w153デフォルトの名無しさん
2014/08/29(金) 20:31:28.66ID:6XulYCBt >>148
【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】
http://peace.2ch.net/test/read.cgi/tech/1405874605/670-680
【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】
http://peace.2ch.net/test/read.cgi/tech/1405874605/670-680
154デフォルトの名無しさん
2014/08/31(日) 04:44:55.96ID:igojaLD4 >>148
こいつら夢と理想を語ってる時点で1の妄言と大差ないわ。
こいつら夢と理想を語ってる時点で1の妄言と大差ないわ。
155デフォルトの名無しさん
2014/08/31(日) 04:46:10.77ID:igojaLD4 夢と理想を描くくらいなら一昔前の俺のレベル。
1561
2014/09/03(水) 19:05:09.17ID:pp7cuLBa 結局、関数型言語って何がいいのかいまいちわからんな。
もうちょっと修行が必要か。。。
もうちょっと修行が必要か。。。
157デフォルトの名無しさん
2014/09/03(水) 19:21:58.87ID:0ir9kNKt 関数型の良さは手続き型でなく、計算順序(手続き)がなく、副作用がないところ。
(実際は計算時間が掛かるけれど)入力に対し瞬時に応答が返るというイメージ。
(実際は計算時間が掛かるけれど)入力に対し瞬時に応答が返るというイメージ。
1581
2014/09/03(水) 20:06:29.19ID:pp7cuLBa 副作用がないってのが今一信用できないんだよなぁ
デカいオブジェクトの一部を更新しようとしたら丸コピーするんでしょ?
まあ、ハードが進歩したらどうなるかわからんが、
副作用なしで十分速いコードを書くのは難しくない?
デカいオブジェクトの一部を更新しようとしたら丸コピーするんでしょ?
まあ、ハードが進歩したらどうなるかわからんが、
副作用なしで十分速いコードを書くのは難しくない?
159デフォルトの名無しさん
2014/09/03(水) 20:49:03.08ID:z1Y/3x7f >>158
>デカいオブジェクトの一部を更新しようとしたら丸コピーするんでしょ?
そんな馬鹿はしない
更新した項目(名前と更新値のペア)が新しい環境へ追加されるだけ
それ以外の項目は古い環境をさかのぼって検索すれば参照できる
(一般には検索結果はメモ化されるから、2回目以降の検索は遅くならない)
ただし副作用のない世界におけるデータ構造に関する
効率的な実装アルゴリズムは発展途上にある
(世の中の歴史的なアルゴリズムの大半は副作用を前提にしているからね)
たとえばこんなのが分かりやすいと思う
・20分でわかる Purely Functional Data Structures - Kmonos.net
http://www.kmonos.net/pub/Presen/PFDS.pdf
>デカいオブジェクトの一部を更新しようとしたら丸コピーするんでしょ?
そんな馬鹿はしない
更新した項目(名前と更新値のペア)が新しい環境へ追加されるだけ
それ以外の項目は古い環境をさかのぼって検索すれば参照できる
(一般には検索結果はメモ化されるから、2回目以降の検索は遅くならない)
ただし副作用のない世界におけるデータ構造に関する
効率的な実装アルゴリズムは発展途上にある
(世の中の歴史的なアルゴリズムの大半は副作用を前提にしているからね)
たとえばこんなのが分かりやすいと思う
・20分でわかる Purely Functional Data Structures - Kmonos.net
http://www.kmonos.net/pub/Presen/PFDS.pdf
160デフォルトの名無しさん
2014/09/03(水) 20:52:47.28ID:gtOXQwRF162デフォルトの名無しさん
2014/09/04(木) 12:51:46.22ID:Azi8pMDh クリス・オカサキさんはsimonpjとかに並ぶ神レベルの御方のひとり。
163デフォルトの名無しさん
2014/09/05(金) 06:58:20.44ID:vJ702ivD164デフォルトの名無しさん
2014/09/05(金) 09:55:29.84ID:qmuQRxyX 正確には、結果が得られるとしたら計算順序によらない(チャーチ=ロッサ性)だな。
1651
2014/09/05(金) 19:53:29.10ID:Y4VtbNiL166デフォルトの名無しさん
2014/09/05(金) 20:18:53.62ID:qmuQRxyX リンク先のPDFをよく読んだか?
コンパイラがやってくれるという話じゃなくて、そういうようにデータ構造を設計する、
という話だから(ある程度はHaskellコンパイラの最適化のおかげも入ってるけど)。
コンパイラがやってくれるという話じゃなくて、そういうようにデータ構造を設計する、
という話だから(ある程度はHaskellコンパイラの最適化のおかげも入ってるけど)。
1671
2014/09/05(金) 20:50:15.22ID:Y4VtbNiL 自力で実装するのか。
参照透過性を保つのはしんどそうだな。
参照透過性を保つのはしんどそうだな。
168デフォルトの名無しさん
2014/09/05(金) 21:21:29.17ID:Ne6tWzRJ 関数型言語を、参照透過性がないC言語で実装可能だし、
C言語ソースコードにコンバートすることも可能。
実行時の中身の動作は関係がない。
C言語ソースコードにコンバートすることも可能。
実行時の中身の動作は関係がない。
1691
2014/09/05(金) 21:38:10.90ID:Y4VtbNiL170デフォルトの名無しさん
2014/09/05(金) 21:46:10.50ID:Ne6tWzRJ 参照透過性はハードウェアの物理的な制約でない。
現状、普及しているパソコンもノイマン型、手続き型でアセンブラ・機械語で動作している。
ハードウェアまでが完全に関数型として動くわけでない。
現状、普及しているパソコンもノイマン型、手続き型でアセンブラ・機械語で動作している。
ハードウェアまでが完全に関数型として動くわけでない。
1711
2014/09/05(金) 22:11:28.48ID:Y4VtbNiL 物理的な制約ではないったって、参照透過性をノイマン型コンピュータで
効率よく実装できないんならそれは物理的な制約みたいなもんでしょ。
丸コピーに勝る最適化が実装されないと、信用できないなぁ。
効率よく実装できないんならそれは物理的な制約みたいなもんでしょ。
丸コピーに勝る最適化が実装されないと、信用できないなぁ。
172デフォルトの名無しさん
2014/09/05(金) 22:11:40.10ID:u2C0iLEX173デフォルトの名無しさん
2014/09/05(金) 22:27:04.06ID:vJ702ivD174デフォルトの名無しさん
2014/09/05(金) 23:09:43.43ID:rtobVFDF175デフォルトの名無しさん
2014/09/06(土) 09:24:36.23ID:2eQ4pr9G176デフォルトの名無しさん
2014/09/06(土) 09:26:57.68ID:2eQ4pr9G つーかconsセルに破壊代入する関数型言語なんて腐る程あるし
この馬鹿は何を自慢したいのだろう?馬鹿すぎて理解できない
この馬鹿は何を自慢したいのだろう?馬鹿すぎて理解できない
177デフォルトの名無しさん
2014/09/06(土) 09:48:13.12ID:VC7+V5v8178デフォルトの名無しさん
2014/09/06(土) 19:13:42.33ID:2eQ4pr9G おー、華麗な勝利宣言だwww
キモ!
キモ!
179デフォルトの名無しさん
2014/09/06(土) 21:11:07.40ID:VC7+V5v8 >>178
キモとしか書けなくて悔しいね w
キモとしか書けなくて悔しいね w
180デフォルトの名無しさん
2014/09/07(日) 08:03:05.89ID:EoKvJO+q ハスケラって初心者のくせにハスケル知ってるというだけでエラソーしてるけど
あれって宗教か何かなのか?
あれって宗教か何かなのか?
182デフォルトの名無しさん
2014/09/08(月) 07:21:00.89ID:j836SLcH183デフォルトの名無しさん
2014/09/08(月) 11:55:44.86ID:cPc63HcT 関数型言語の中では副作用がある言語のほうが主流だろ。
LISPやSchemeやSMLやOCamlなど。
LISPやSchemeやSMLやOCamlなど。
184デフォルトの名無しさん
2014/09/08(月) 12:03:45.51ID:kaEhSBtj 副作用、代入ありは、関数型記述もできる手続き型。
185デフォルトの名無しさん
2014/09/08(月) 12:08:09.21ID:uHpNxeFr 純血主義ならhaskellで
186デフォルトの名無しさん
2014/09/08(月) 15:22:32.10ID:pVr2+nKJ 関数型言語は使うなと何処かの先生が言ってたぞ。
関数型と言うのは単にプログラミング手法であるから言語なんてつけるなと言うことらしい
関数型と言うのは単にプログラミング手法であるから言語なんてつけるなと言うことらしい
187デフォルトの名無しさん
2014/09/08(月) 17:26:33.52ID:uHpNxeFr >>186
kwsk
kwsk
188デフォルトの名無しさん
2014/09/08(月) 18:04:23.92ID:pVr2+nKJ >>187
関数型プログラミングは本当に難しいのか
http://itpro.nikkeibp.co.jp/article/Watcher/20121001/426555/?ST=smart
『関数型言語』を使ってはいけない」との発言が飛び出したのだ。
関数型プログラミングは本当に難しいのか
http://itpro.nikkeibp.co.jp/article/Watcher/20121001/426555/?ST=smart
『関数型言語』を使ってはいけない」との発言が飛び出したのだ。
189デフォルトの名無しさん
2014/09/08(月) 18:23:47.23ID:kaEhSBtj 純粋関数型はプログラマの技法のためでなく
コンパイラ、ハードウェアのためだろ。
プログラマにとっては使いにくいが、
手続き、順序がないことで、機械が並列処理しやすい。
順序があると、先の手続きが終わるまで待たないといけない。
コンパイラ、ハードウェアのためだろ。
プログラマにとっては使いにくいが、
手続き、順序がないことで、機械が並列処理しやすい。
順序があると、先の手続きが終わるまで待たないといけない。
190デフォルトの名無しさん
2014/09/08(月) 19:14:00.85ID:cPc63HcT191デフォルトの名無しさん
2014/09/08(月) 19:20:10.71ID:kaEhSBtj プログラマのためなら、手続き型も使える関数型、関数型もも使える手続き型というハイブリットのほうがよく
厳しい制約をつけることはない。値の書き換え不可能は便利でない。
厳しい制約をつけることはない。値の書き換え不可能は便利でない。
1921
2014/09/08(月) 19:36:06.54ID:ZbTP8aJt いつの間にか関数型言語スレになってしまったな。
まあ寄り道もいいか。
まあ寄り道もいいか。
1931
2014/09/08(月) 20:53:29.01ID:ZbTP8aJt 無知をさらすようだけど、チューリングマシンで一回テープに書き込んだらそのメモリは書き換えられないマシンがあったら、それはチューリング完全になる?
194デフォルトの名無しさん
2014/09/08(月) 21:12:35.82ID:0BEKcfFo 直感的には、規則は面倒になりそうだけど「テープはいくらでもある」というのが
チューリングマシンの前提だから、問題ないんじゃない?
チューリングマシンの前提だから、問題ないんじゃない?
1951
2014/09/08(月) 21:17:06.30ID:ZbTP8aJt 直感的にはそうなんだけど、じゃあ一回しかメモリに書き込めないマシンでチューリングマシンをシミュレートしてみろって言われると俺には無理。
196デフォルトの名無しさん
2014/09/08(月) 21:53:22.17ID:YW1sNfFx >>186
そういう先生は先生として失格なので無視していい
そういう先生は先生として失格なので無視していい
197デフォルトの名無しさん
2014/09/08(月) 23:28:07.41ID:0BEKcfFo てゆーか、文脈を無視して取り出すな危険、系だろ
198デフォルトの名無しさん
2014/09/08(月) 23:46:25.48ID:nnXcaq6b >>180
ナゼ突然に Haskell という名前を出すのか意味不明だなぁ
不変オブジェクトによる計算は、ML や Lisp のように破壊的代入が可能な
不純関数型言語でも重要な概念であり、基本のプログラミング・スタイルだよ
特に>>159のプレゼン内で紹介されているオカサキ氏の書籍では、
すべてのコードが Standard ML で書かれているのに、いったい何を言いたいのだろう?
おそらく>>180の頭の中には「関数型言語 == Haskell」という等式が
あるんだと思うけど、>>180のようにあらゆる関数型言語がHaskellに見えてしまう
ニワカな自称Haskellプログラマを指して「ハスケラ」と呼ぶんだがね
ナゼ突然に Haskell という名前を出すのか意味不明だなぁ
不変オブジェクトによる計算は、ML や Lisp のように破壊的代入が可能な
不純関数型言語でも重要な概念であり、基本のプログラミング・スタイルだよ
特に>>159のプレゼン内で紹介されているオカサキ氏の書籍では、
すべてのコードが Standard ML で書かれているのに、いったい何を言いたいのだろう?
おそらく>>180の頭の中には「関数型言語 == Haskell」という等式が
あるんだと思うけど、>>180のようにあらゆる関数型言語がHaskellに見えてしまう
ニワカな自称Haskellプログラマを指して「ハスケラ」と呼ぶんだがね
199デフォルトの名無しさん
2014/09/08(月) 23:54:48.92ID:nnXcaq6b200デフォルトの名無しさん
2014/09/09(火) 05:57:09.86ID:ukX/qMIS 単に172みたいなシッタカはハスケラが多いという経験則なんじゃね?
実際、シッタカ多いだろ、ハスケラ界隈。
実際、シッタカ多いだろ、ハスケラ界隈。
201デフォルトの名無しさん
2014/09/09(火) 06:01:06.48ID:ukX/qMIS つーか、158に書いてある程度の永続データ構造は
不純関数型どころか手続き型でも普通に使われている。
それをいちいち関数型特有の技術であるかのように言いふらすのか。
ルビ厨と同類だなw
不純関数型どころか手続き型でも普通に使われている。
それをいちいち関数型特有の技術であるかのように言いふらすのか。
ルビ厨と同類だなw
202デフォルトの名無しさん
2014/09/09(火) 10:33:24.25ID:iSgMgqSE203デフォルトの名無しさん
2014/09/09(火) 14:38:16.53ID:ukX/qMIS204デフォルトの名無しさん
2014/09/09(火) 23:09:21.92ID:u4pMEKRn >>201
ほう、「>>158に書いてある程度の永続データ構造は
不純関数型どころか手続き型でも普通に使われている」のか、それは知らなんだ
関数型を名乗る言語の大半では(=少なくとも自分の知る限りすべての関数型言語では)、
始祖 Lisp の時代から本質的に永続性を持つリストと呼ばれるデータ構造を基本としている
だから関数型言語では、普通に(=暗黙のうちに)永続データ構造が使われていると言える(>>172)
一方、手続き型言語で基本的なデータ構造といえばレコード(=構造体)と配列だと思うけど、
>>201の住んでいる異次元世界では、レコードや配列が永続データ構造で実装されているんだね
興味深い話だから、ぜひ kwsk 説明してもらえると嬉しいなあ....(棒
ほう、「>>158に書いてある程度の永続データ構造は
不純関数型どころか手続き型でも普通に使われている」のか、それは知らなんだ
関数型を名乗る言語の大半では(=少なくとも自分の知る限りすべての関数型言語では)、
始祖 Lisp の時代から本質的に永続性を持つリストと呼ばれるデータ構造を基本としている
だから関数型言語では、普通に(=暗黙のうちに)永続データ構造が使われていると言える(>>172)
一方、手続き型言語で基本的なデータ構造といえばレコード(=構造体)と配列だと思うけど、
>>201の住んでいる異次元世界では、レコードや配列が永続データ構造で実装されているんだね
興味深い話だから、ぜひ kwsk 説明してもらえると嬉しいなあ....(棒
205デフォルトの名無しさん
2014/09/09(火) 23:32:43.42ID:iSgMgqSE 見事に知ったかが消えたな
206デフォルトの名無しさん
2014/09/10(水) 07:01:46.89ID:nz1QrfPP >>204
知らないって、幸せなことなんだなあw
ある言語で永続データ構造が使えるからといって、
その言語の全てのデータ型が永続データ構造で実現されていることにはならないことぐらい
中学生レベルの論理を知っていればわかりそうなものなんだけどなあw
copy on write的なデータ構造は多くの手続き型言語のライブラリで使われていて
そこにはLISPで培われた永続データ構造の技術が使われてるよ。
知らないって、幸せなことなんだなあw
ある言語で永続データ構造が使えるからといって、
その言語の全てのデータ型が永続データ構造で実現されていることにはならないことぐらい
中学生レベルの論理を知っていればわかりそうなものなんだけどなあw
copy on write的なデータ構造は多くの手続き型言語のライブラリで使われていて
そこにはLISPで培われた永続データ構造の技術が使われてるよ。
207デフォルトの名無しさん
2014/09/10(水) 11:12:44.60ID:2lSvEqyn どんどん言ってることがズレてくな
208デフォルトの名無しさん
2014/09/10(水) 11:51:44.84ID:2N2PVK/b 関数ムラの住民は世間が狭いね
209デフォルトの名無しさん
2014/09/10(水) 22:45:00.45ID:MIzNsnl2210桃白白 ◆9Jro6YFwm650
2014/09/10(水) 22:56:17.03ID:6zdXUVOl >>209
Stringとか
Stringとか
211デフォルトの名無しさん
2014/09/10(水) 23:05:15.07ID:MIzNsnl2212桃白白 ◆9Jro6YFwm650
2014/09/10(水) 23:08:58.07ID:6zdXUVOl213デフォルトの名無しさん
2014/09/10(水) 23:20:47.47ID:MIzNsnl2 >>212
単純型とは、他の型から構成されることのないデータ型であり、
文字列型の他には、論理型、文字型、列挙型、数値型がある
関数型言語の Lisp や論理型言語の Prolog だとアトムとも呼ばれる
単純型とは、他の型から構成されることのないデータ型であり、
文字列型の他には、論理型、文字型、列挙型、数値型がある
関数型言語の Lisp や論理型言語の Prolog だとアトムとも呼ばれる
214桃白白 ◆9Jro6YFwm650
2014/09/10(水) 23:22:03.29ID:6zdXUVOl >>213
他の型から構成されることがないってどういう意味っすか?
他の型から構成されることがないってどういう意味っすか?
215デフォルトの名無しさん
2014/09/10(水) 23:32:19.53ID:MIzNsnl2216デフォルトの名無しさん
2014/09/10(水) 23:45:56.12ID:ADC46RWM 単純型‥もう、アーキュムレータとかその他レジスタに載る型、ということにしては?
217デフォルトの名無しさん
2014/09/11(木) 06:06:05.80ID:/5wQig/e >>211
Stringが内部データ構造を持っていたりライブラリで提供されている言語や処理系なんて山ほどあるだろ。
StringがCharのリストとして実現されている言語や処理系も多い。
関数ムラの住民はやっぱりムラの外の事情には疎いんだね。よーーーーくわかりましたw
Stringが内部データ構造を持っていたりライブラリで提供されている言語や処理系なんて山ほどあるだろ。
StringがCharのリストとして実現されている言語や処理系も多い。
関数ムラの住民はやっぱりムラの外の事情には疎いんだね。よーーーーくわかりましたw
218デフォルトの名無しさん
2014/09/11(木) 10:27:37.46ID:ZRdF18oF >>217
関数型でもCharのリストで扱う言語あった気が
関数型でもCharのリストで扱う言語あった気が
219デフォルトの名無しさん
2014/09/11(木) 12:11:59.58ID:/5wQig/e むしろStringが単純型なのはLISP系ぐらいでは
220デフォルトの名無しさん
2014/09/11(木) 12:59:06.68ID:ThP8Tlio >>216 型理論(型システム)的には全く無意味だからそれ
221デフォルトの名無しさん
2014/09/11(木) 12:59:52.98ID:ThP8Tlio > 関数ムラの住民はやっぱりムラの外の事情には疎いんだね。よーーーーくわかりましたw
自分がバカっぷりをさらしてることはわからないんだねw
自分がバカっぷりをさらしてることはわからないんだねw
222デフォルトの名無しさん
2014/09/11(木) 13:06:24.74ID:ThP8Tlio ていうか、関数型ムラに居て、HaskellのStringが[Char]だと知らない奴がいるもんかw
あと、流石に効率が悪いことも多いってんで、最近はText型とその周辺の実装が進められてる。
あと、流石に効率が悪いことも多いってんで、最近はText型とその周辺の実装が進められてる。
223デフォルトの名無しさん
2014/09/11(木) 13:39:24.40ID:/5wQig/e ハァ?誰もHaskellの話なんてしていないぞ。
そんなにHaskellの話がしたければHaskellスレに行けば?
「Stringは単純型だと言ったらいじめられた〜」とか言えば
みんな同情してくれるだろw
そんなにHaskellの話がしたければHaskellスレに行けば?
「Stringは単純型だと言ったらいじめられた〜」とか言えば
みんな同情してくれるだろw
224デフォルトの名無しさん
2014/09/11(木) 14:10:25.16ID:AMEA56Qh 桃白白はVBScriptしか知らないからあの答えで合ってるの。
225デフォルトの名無しさん
2014/09/11(木) 17:15:48.36ID:ThP8Tlio > みんな同情してくれるだろw
おれは苛めてるんだ、と、自分を騙すのに必死なのかw
おれは苛めてるんだ、と、自分を騙すのに必死なのかw
226デフォルトの名無しさん
2014/09/11(木) 17:18:44.69ID:Eq/MhJWf Stringが単純型しかないLisp以外の言語まだー?
227デフォルトの名無しさん
2014/09/11(木) 19:02:59.76ID:ZRdF18oF Stringがプリミティブな言語自体は存在するけど(手続き型ならBASICとかPerlとか)
>>211 はStringは単純型、と言い切っちゃってるからな
>>211 はStringは単純型、と言い切っちゃってるからな
228デフォルトの名無しさん
2014/09/11(木) 20:03:48.12ID:Eq/MhJWf しかもBASICやPerlにしても文字列を内部実装として永続データ構造で保持してる処理系とか普通にあり得るし。例えばPerlのHaskell実装とか。
229デフォルトの名無しさん
2014/09/12(金) 00:22:55.80ID:ke/j7I6c で?
230デフォルトの名無しさん
2014/09/12(金) 02:10:37.29ID:KXHcVpz6 元々なんの話だったんだっけか、よく分からんくなってきた
231デフォルトの名無しさん
2014/09/12(金) 03:48:40.55ID:5DSOPRX8 結論
ハスケル村民は中二病
ハスケル村民は中二病
232デフォルトの名無しさん
2014/09/12(金) 19:25:03.94ID:i5Uyd5M3233デフォルトの名無しさん
2014/09/12(金) 19:43:34.87ID:ke/j7I6c 文脈のある文章を文脈から取り出してセンセーショナルに騒ぐ奴はバカ、でFA
234デフォルトの名無しさん
2014/09/12(金) 19:54:30.05ID:i5Uyd5M3 関数志向宣言型プログラミング言語って呼べばいいのかな
235デフォルトの名無しさん
2014/09/12(金) 19:55:16.20ID:i5Uyd5M3 誤字った
関数指向宣言型プログラミング言語
関数指向宣言型プログラミング言語
236デフォルトの名無しさん
2014/09/12(金) 20:06:23.28ID:Iy5dUXcN 略して関数型言語
2371
2014/09/13(土) 11:02:47.39ID:NSrcGDnS2381
2014/09/13(土) 19:54:59.71ID:NSrcGDnS >>237のコードは一手打つたびに盤面を丸コピーしてると思うんだが
そこらへんコンパイラが上手いことやってくれてるの?
そこらへんコンパイラが上手いことやってくれてるの?
239デフォルトの名無しさん
2014/09/14(日) 00:53:22.93ID:N78ccrO0 囲連星で
240デフォルトの名無しさん
2014/09/14(日) 07:25:06.11ID:3VDbXkPO2411
2014/09/14(日) 10:08:34.40ID:rj6ubMt8242デフォルトの名無しさん
2014/09/14(日) 15:18:34.44ID:sID153LP 最初のほうだけ読んだけど、
言語知らなすぎだろ。
それで言語作ろうなんて、10年早いわ。
もっとも、実用性なんてどうでもいい。
言語作ってみたいとか、作ることで、プログラミングというものを知りたいってのなら、
まったくもって問題無く、むしろ頑張れって感じだけど。
言語知らなすぎだろ。
それで言語作ろうなんて、10年早いわ。
もっとも、実用性なんてどうでもいい。
言語作ってみたいとか、作ることで、プログラミングというものを知りたいってのなら、
まったくもって問題無く、むしろ頑張れって感じだけど。
2431
2014/09/14(日) 15:57:37.44ID:rj6ubMt8 >>239
ちなみに囲連星AIは昔作ったことある。
もっといえばゲ制作板の囲連星AIスレの380は俺だ。
ちなみに9路囲連星のGUIを作ったのも俺。
囲連星は一回やってもう挫折してるんだよ。
>>240
とりあえず、パターンマッチにしてみました。
letはそのまんま。だってwhereきもいんだもん。
http://www.age2.tv/rd05/src/up4284.txt.html
>>242
まあな。俺の実力じゃ実用的な言語を作るのは無理だろうな。
でもそれはほとんどのプログラマがそうだろ。
実用的な言語つくれるプログラマなんて一握りだろ。
もっといえば実用的な言語って一人で作れるようなものじゃないだろ。
ちなみに囲連星AIは昔作ったことある。
もっといえばゲ制作板の囲連星AIスレの380は俺だ。
ちなみに9路囲連星のGUIを作ったのも俺。
囲連星は一回やってもう挫折してるんだよ。
>>240
とりあえず、パターンマッチにしてみました。
letはそのまんま。だってwhereきもいんだもん。
http://www.age2.tv/rd05/src/up4284.txt.html
>>242
まあな。俺の実力じゃ実用的な言語を作るのは無理だろうな。
でもそれはほとんどのプログラマがそうだろ。
実用的な言語つくれるプログラマなんて一握りだろ。
もっといえば実用的な言語って一人で作れるようなものじゃないだろ。
244デフォルトの名無しさん
2014/09/14(日) 16:15:43.91ID:w3keaoOy 囲連星ってそんなに難しいか?
やってみるか。
やってみるか。
245デフォルトの名無しさん
2014/09/14(日) 16:39:35.29ID:sID153LP >>243
自分がそうだからって、
「ほとんど」とか、他の人を巻き添えに足引っ張るな。
自分の未熟さを棚に上げる愚かな行為だ。
RubyのMazsとか、言語オタクだぞ。
そうじゃなきゃ作れないってことだ。
自分がそうだからって、
「ほとんど」とか、他の人を巻き添えに足引っ張るな。
自分の未熟さを棚に上げる愚かな行為だ。
RubyのMazsとか、言語オタクだぞ。
そうじゃなきゃ作れないってことだ。
2461
2014/09/14(日) 17:59:15.91ID:rj6ubMt8 >>244
がんばれ、応援するよ。LV3越えは俺の悲願でもあるから。
だれかほかの人でも達成してくれたらうれしい。
できあがったらゲ制作の囲連星AIスレで報告してくれ。
>>245
そこでMatzみたいなスーパースター引き合いに出してどうすんだよ?
Matsは一握りかほとんどかで言ったら明らかに一握りだろ。
そのMatzにしたってRubyコミュニティの支えなしじゃここまでやれなかっただろ。
だいたいGoとかD言語みたいなスーパースターたちが作った言語だって
はたして「実用」と呼べるほどのユーザーを獲得してるかどうか。
言語をつくるって大変なことだと思うよ。
まあ、自分の未熟さを棚にあげてるのはそうかもしれんが。
がんばれ、応援するよ。LV3越えは俺の悲願でもあるから。
だれかほかの人でも達成してくれたらうれしい。
できあがったらゲ制作の囲連星AIスレで報告してくれ。
>>245
そこでMatzみたいなスーパースター引き合いに出してどうすんだよ?
Matsは一握りかほとんどかで言ったら明らかに一握りだろ。
そのMatzにしたってRubyコミュニティの支えなしじゃここまでやれなかっただろ。
だいたいGoとかD言語みたいなスーパースターたちが作った言語だって
はたして「実用」と呼べるほどのユーザーを獲得してるかどうか。
言語をつくるって大変なことだと思うよ。
まあ、自分の未熟さを棚にあげてるのはそうかもしれんが。
2471
2014/09/14(日) 18:14:29.35ID:rj6ubMt8 あら、MatzがMatsになってた。
誤字すまん。
誤字すまん。
248デフォルトの名無しさん
2014/09/14(日) 18:30:48.41ID:s+BV7Cb9 新言語かぁ‥誰しも夢見るね‥haskell が圏論というのであれば、今後新言語を作るとすれば何を足がかりにすればいいのか?
249デフォルトの名無しさん
2014/09/14(日) 19:26:12.34ID:r0J72yK/ Haskell自体は圏論ベースじゃないぞ。
モナドだけ。
モナドだけ。
250デフォルトの名無しさん
2014/09/14(日) 19:33:25.07ID:s+BV7Cb9 そうなのか‥懐かしい名前、大熊正先生の著書をヤフオクでえらい高い値段でgetしてしまった(無論、読めやしない‥専門書って大変だね‥)が、無意味だったようだね
251デフォルトの名無しさん
2014/09/14(日) 20:19:23.00ID:NJi0vj84 集合論に基づく言語は、SIMDやメニーコアが発展していくうちに普通になると思うけど、
今は、C++をシンプルにした感じのスクリプト言語が欲しい。
まだ、集合論に基づく言語が手続き型を超える性能を出せる環境になってないから。
今は、C++をシンプルにした感じのスクリプト言語が欲しい。
まだ、集合論に基づく言語が手続き型を超える性能を出せる環境になってないから。
2521
2014/09/14(日) 20:55:06.50ID:rj6ubMt8 結局、ハードの作りが根本から変わらん限り
C/C++を超える言語は現れないんじゃないかな。
超えるっていってもどういう意味で超えるのか微妙だけど。
C/C++を超える言語は現れないんじゃないかな。
超えるっていってもどういう意味で超えるのか微妙だけど。
253デフォルトの名無しさん
2014/09/14(日) 21:30:29.03ID:s+BV7Cb9 C の言語仕様にキャリーフラグを含めてほしかった‥ちょっと今苦戦中
2541
2014/09/14(日) 22:27:09.05ID:rj6ubMt8 C言語の言語仕様だけでキャリーフラグって実現できるんだっけ?
できるんだろうけど、ぱっと思いつかないな。
できるんだろうけど、ぱっと思いつかないな。
255デフォルトの名無しさん
2014/09/14(日) 22:52:20.28ID:r0J72yK/ これ参考になるかも
ttp://d.hatena.ne.jp/tociyuki/20140906/1410012689
ttp://d.hatena.ne.jp/tociyuki/20140906/1410012689
2561
2014/09/14(日) 22:53:39.24ID:rj6ubMt8 最悪、すべての演算結果をテーブル化しておけば実現できるなw
効率的にはどうやるんだろう?
効率的にはどうやるんだろう?
2571
2014/09/14(日) 22:54:40.97ID:rj6ubMt8 おおっとリロードしてなかった。
258デフォルトの名無しさん
2014/09/15(月) 00:55:12.74ID:MGTym664 ts
259240
2014/09/15(月) 06:10:27.36ID:8SU9zqnx >>243
たとえば、
let c = map digitToInt ( filter isDigit s)
は
let c = map digitToInt . filter isDigit $ "123"
にできる。
さらに、
s_to_line :: String -> [Int]
s_to_line = map digitToInt . filter isDigit
と関数を定義しておいて、
let c = s_to_line s
とすると、ググッとHaskellっぽくなる。
たとえば、
let c = map digitToInt ( filter isDigit s)
は
let c = map digitToInt . filter isDigit $ "123"
にできる。
さらに、
s_to_line :: String -> [Int]
s_to_line = map digitToInt . filter isDigit
と関数を定義しておいて、
let c = s_to_line s
とすると、ググッとHaskellっぽくなる。
2611
2014/09/15(月) 11:16:32.32ID:bIq53OoI しかしOcamlよりhaskellのほうが書いててたのしいな。
なんでだろう?
なんでだろう?
262デフォルトの名無しさん
2014/09/15(月) 15:28:20.49ID:kzUO2epp 写真には写らない美しさがあるから
263デフォルトの名無しさん
2014/09/15(月) 16:34:50.30ID:kAk3iSbn リンダリンダ〜♪
2641
2014/09/15(月) 16:46:42.27ID:bIq53OoI だれか>>243のコードのplayの関数を、一手打つごとに盤面を丸コピーしないで済むように改善してください。
よろしくお願いします。
よろしくお願いします。
2651
2014/09/15(月) 20:32:54.71ID:bIq53OoI266240
2014/09/16(火) 09:53:54.34ID:Qs6Ucf5H268デフォルトの名無しさん
2014/09/16(火) 19:28:35.09ID:i9frET+F 参照透過性は、プログラマが気にすることではない。
コンパイラ、言語が気にすること。
純粋関数型言語は、参照透過性に違反できないのが原則。
純粋関数型でコンパイルが通れば参照透過性がある。
コンパイラ、言語が気にすること。
純粋関数型言語は、参照透過性に違反できないのが原則。
純粋関数型でコンパイルが通れば参照透過性がある。
2701
2014/09/16(火) 20:03:52.99ID:bFn0xUvd setElemの計算量オーダーが書いてないな。
ほかのは書いてあるのもあるのに。
ほかのは書いてあるのもあるのに。
271デフォルトの名無しさん
2014/09/16(火) 20:35:47.52ID:+Ut5bl5+ >>269
純粋関数型言語における配列の実装は、
一般的には B-Tree またはその亜種を用いるのが一般的
で、常識的には更新する要素とは無関係な部分ツリー(への参照)を
そのまま(更新後の)新しい配列に引き継ぐから、丸コピーにはならない
(Data.Matrixのソースを確認した訳じゃないんで、あくまで一般論であることに注意)
また、配列を利用するアプリケーション側でも、必要な複数の更新操作を関数合成で
まとめてから適用するのが一般的だから、更新のオーバヘッドもさほど気にならない
更に言えば、>>243のように(ライブラリを用いず)自前でリストを配列に見立てて
配列操作を実装するのは自由な選択だけど、メモリ効率を考慮しなければならないケースであれば、
(>>243のように)配列更新のたびにリストを丸コピーするのは、お馬鹿さんと言うしかない
リストの一要素だけを更新する時、更新した要素の tail リストは更新後のリストと共有できるはずだ
最後に、こういったパズル/ボードゲーム系の全解探索問題を記述する場合、何も考えず
ゲームの局面ごとに盤面全体を丸々コピーするコードを書いてしまうのは、純粋/非純粋な関数型に限らず
手続き型プログラミングであったとしても初心者レベルのコード設計力だと見なすしかない
通常、チェスや将棋のように膨大な空間を探索しなければならないゲームのプログラミングでは、
プレイの「一手(いって)」に関する情報だけを局面として記憶し、差分として管理する
純粋関数型言語における配列の実装は、
一般的には B-Tree またはその亜種を用いるのが一般的
で、常識的には更新する要素とは無関係な部分ツリー(への参照)を
そのまま(更新後の)新しい配列に引き継ぐから、丸コピーにはならない
(Data.Matrixのソースを確認した訳じゃないんで、あくまで一般論であることに注意)
また、配列を利用するアプリケーション側でも、必要な複数の更新操作を関数合成で
まとめてから適用するのが一般的だから、更新のオーバヘッドもさほど気にならない
更に言えば、>>243のように(ライブラリを用いず)自前でリストを配列に見立てて
配列操作を実装するのは自由な選択だけど、メモリ効率を考慮しなければならないケースであれば、
(>>243のように)配列更新のたびにリストを丸コピーするのは、お馬鹿さんと言うしかない
リストの一要素だけを更新する時、更新した要素の tail リストは更新後のリストと共有できるはずだ
最後に、こういったパズル/ボードゲーム系の全解探索問題を記述する場合、何も考えず
ゲームの局面ごとに盤面全体を丸々コピーするコードを書いてしまうのは、純粋/非純粋な関数型に限らず
手続き型プログラミングであったとしても初心者レベルのコード設計力だと見なすしかない
通常、チェスや将棋のように膨大な空間を探索しなければならないゲームのプログラミングでは、
プレイの「一手(いって)」に関する情報だけを局面として記憶し、差分として管理する
2721
2014/09/16(火) 20:55:03.92ID:bFn0xUvd ふーむ。
たしかにツリーをつかえば丸コピーは避けられるかもしれないな。
勉強になりました。
たしかにツリーをつかえば丸コピーは避けられるかもしれないな。
勉強になりました。
2731
2014/09/16(火) 21:47:36.14ID:bFn0xUvd Data.Matrixがないって言われる…
なぜ?
$ ghc connect4_4.hs
connect4_4.hs:3:8:
Could not find module ‘Data.Matrix’
Perhaps you meant
Data.Ratio (from base)
Data.Ratio (needs flag -package haskell2010-1.1.2.0)
Use -v to see a list of the files searched for.
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3
なぜ?
$ ghc connect4_4.hs
connect4_4.hs:3:8:
Could not find module ‘Data.Matrix’
Perhaps you meant
Data.Ratio (from base)
Data.Ratio (needs flag -package haskell2010-1.1.2.0)
Use -v to see a list of the files searched for.
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.3
2751
2014/09/16(火) 22:31:31.46ID:bFn0xUvd276デフォルトの名無しさん
2014/09/16(火) 22:50:04.77ID:fJmUlCeF >>253
アセンブラ以外で言語仕様にキャリーフラグが関与する演算子があるのは TL/1 しか見たことない
アセンブラ以外で言語仕様にキャリーフラグが関与する演算子があるのは TL/1 しか見たことない
2771
2014/09/16(火) 23:22:16.78ID:bFn0xUvd Matrix版できたっぽいのであげます。
http://www.age2.tv/rd05/src/up4372.txt
Matrixのindexは1から始まるそうなのでそれに合わせて外部仕様も変更しました。
いままでは列の指定が0〜6だったのが1〜7になります。
今思えば外部仕様まで変えることはなかったような気もしますが後の祭り。
http://www.age2.tv/rd05/src/up4372.txt
Matrixのindexは1から始まるそうなのでそれに合わせて外部仕様も変更しました。
いままでは列の指定が0〜6だったのが1〜7になります。
今思えば外部仕様まで変えることはなかったような気もしますが後の祭り。
278デフォルトの名無しさん
2014/09/16(火) 23:34:02.05ID:i9frET+F よく知られてるゲーム、GUIのあるゲームで頼む。
麻雀、OTHELLO、将棋、囲連星はwindowsGUIはある。
麻雀、OTHELLO、将棋、囲連星はwindowsGUIはある。
2791
2014/09/16(火) 23:38:22.55ID:bFn0xUvd 習作だから実用性はあんまり求めてないんだよなぁ。
connect4は小さい割に動いてるもの作ってる気になれるから気に入ってる。
connect4は小さい割に動いてるもの作ってる気になれるから気に入ってる。
280240
2014/09/17(水) 06:12:56.94ID:Rq9rJBGz >>277
結構よいのでは。
しつこいけど、whereは1度使ってみたらいいんじゃないかなあ。
letで頭から読む/書くという感覚もわかるけど、
whereを使うと、1つの関数定義全体を宣言的に読む/書く感覚がわかると思う。
結構よいのでは。
しつこいけど、whereは1度使ってみたらいいんじゃないかなあ。
letで頭から読む/書くという感覚もわかるけど、
whereを使うと、1つの関数定義全体を宣言的に読む/書く感覚がわかると思う。
281デフォルトの名無しさん
2014/09/17(水) 12:19:24.89ID:pJCF9C7A282デフォルトの名無しさん
2014/09/17(水) 13:02:50.04ID:Rq9rJBGz >>268
> 純粋関数型でコンパイルが通れば参照透過性がある。
え?純粋関数型で型検査によって参照透明性を確保しているのはHaskellぐらいでは。
Haskell以外の、例えばMirandaやClean等の他の純粋関数型言語では、
型システムに依存せずに言語機能を制約して参照透明性を確保している
という理解なんだが。
> 純粋関数型でコンパイルが通れば参照透過性がある。
え?純粋関数型で型検査によって参照透明性を確保しているのはHaskellぐらいでは。
Haskell以外の、例えばMirandaやClean等の他の純粋関数型言語では、
型システムに依存せずに言語機能を制約して参照透明性を確保している
という理解なんだが。
283デフォルトの名無しさん
2014/09/17(水) 13:40:46.72ID:Fq6HYI62 参照透過性は型とは関係ないだろ?
型があってもなくても破壊的代入があったらアウト。
型があってもなくても破壊的代入があったらアウト。
284デフォルトの名無しさん
2014/09/17(水) 13:41:37.54ID:pJCF9C7A ちょっと本題から外れるが。
たしかに本格的に型システムと一体化させたのはHaskellからだけど、
Mirandaから参照透過性に対して型システムは使い始めてる。
MirandaでKAOSってOSを記述した時のinteract型が、
Miranda本体にも取り入れられてる。
この時に導入されたcomp, returnがmonadタイプの定式化の元になった。
E. Moggiが"Notions of computations and monads"で定式化して。
Haskellを設計、開発することになったのは、
この辺を本格的にやろうと思うとオープンソースじゃないとやりにくいから。
たしかに本格的に型システムと一体化させたのはHaskellからだけど、
Mirandaから参照透過性に対して型システムは使い始めてる。
MirandaでKAOSってOSを記述した時のinteract型が、
Miranda本体にも取り入れられてる。
この時に導入されたcomp, returnがmonadタイプの定式化の元になった。
E. Moggiが"Notions of computations and monads"で定式化して。
Haskellを設計、開発することになったのは、
この辺を本格的にやろうと思うとオープンソースじゃないとやりにくいから。
285デフォルトの名無しさん
2014/09/17(水) 14:19:32.02ID:Rq9rJBGz2861
2014/09/17(水) 19:25:16.95ID:zOPUPbSB >>280
where使ってみました。
ただ、gameの中のletはどうやってwhereにすればいいかよくわからなかったのでletのままです。
http://www.age2.tv/rd05/src/up4389.txt
where使ってみました。
ただ、gameの中のletはどうやってwhereにすればいいかよくわからなかったのでletのままです。
http://www.age2.tv/rd05/src/up4389.txt
287240
2014/09/18(木) 17:39:55.46ID:gCmSXIgb2881
2014/09/18(木) 19:52:18.04ID:WHOt2iCh >>287
ありがとうございます。
haskell触ってみたけど、今のところ関数型言語や参照透過性の有難さはあんまり実感できてない。
CPUのコアがもっと増えてコンパイラの最適化が今より強力になったらどうかわからんが、
C/C++より効率的なコーディングをするのは難しそう。
かといって生産性が劇的にあがるかというとそんな感触もなかった。
RubyにはC/C++より生産性高いと思わせるなにかがあったが
haskellとRubyを比べた時、はたしてhaskellのほうが生産性高いかといわれると?
もうちょっとデカいアプリを組んでみる必要があるのかもしれんが。
とりあえず、haskellでコーディングされた実用的で有名なアプリがあれば教えてほしいです。
ありがとうございます。
haskell触ってみたけど、今のところ関数型言語や参照透過性の有難さはあんまり実感できてない。
CPUのコアがもっと増えてコンパイラの最適化が今より強力になったらどうかわからんが、
C/C++より効率的なコーディングをするのは難しそう。
かといって生産性が劇的にあがるかというとそんな感触もなかった。
RubyにはC/C++より生産性高いと思わせるなにかがあったが
haskellとRubyを比べた時、はたしてhaskellのほうが生産性高いかといわれると?
もうちょっとデカいアプリを組んでみる必要があるのかもしれんが。
とりあえず、haskellでコーディングされた実用的で有名なアプリがあれば教えてほしいです。
289デフォルトの名無しさん
2014/09/18(木) 19:55:50.99ID:7eeU4PcQ Monadius
1985年5月29日、そのゲームは、全国のゲーマーに衝撃を与えた。
らしい。
僕はよく知らない。そのときまだ生まれたばかりだったからだ。
20周年をむかえたグラディウスと、 ゲームを、ゲームプログラミングを愛する人たちに感謝を込めて贈る。
http://www.geocities.jp/takascience/haskell/monadius_ja.html
1985年5月29日、そのゲームは、全国のゲーマーに衝撃を与えた。
らしい。
僕はよく知らない。そのときまだ生まれたばかりだったからだ。
20周年をむかえたグラディウスと、 ゲームを、ゲームプログラミングを愛する人たちに感謝を込めて贈る。
http://www.geocities.jp/takascience/haskell/monadius_ja.html
2911
2014/09/19(金) 19:22:36.10ID:KT7u8M0C >そういうデータの一塊であるMonadiusが、 updateMonadius, renderMonadius, isMonadiusOverという演算に関してGameを成す、と宣言されています。
これが圏論ってやつ?
これが圏論ってやつ?
292デフォルトの名無しさん
2014/09/19(金) 19:58:12.78ID:vmyXN9M9 数学得意なら圏論から攻めてもいいと思うけど、
モナドは圏論わからなくても使うことはできるので...
モナドは圏論わからなくても使うことはできるので...
294240
2014/09/19(金) 21:47:04.42ID:3WQN+no2 >>293
それ自体は圏論じゃなくて型クラス。
型gがGameクラスであるためには
そのupdate, render, isGameoverの3つのメソッドが必要だと宣言されていて、
Monadius型はGame型クラスのインスタンスです、
メソッドはそれぞれupdateMonadius, renderMonadius, isMonadiusOverになります、
というもの。
それ自体は圏論じゃなくて型クラス。
型gがGameクラスであるためには
そのupdate, render, isGameoverの3つのメソッドが必要だと宣言されていて、
Monadius型はGame型クラスのインスタンスです、
メソッドはそれぞれupdateMonadius, renderMonadius, isMonadiusOverになります、
というもの。
296デフォルトの名無しさん
2014/09/19(金) 22:17:11.20ID:uV7lv+mi これは最近よく目にするfilter-map-reduceとは違うの?
297240
2014/09/20(土) 07:19:58.23ID:p45kbQiW >>295
型クラスは値ではなくて型のクラスってところがユニーク。
Haskellの型クラスはJava等のインターフェースより柔軟に使える。
Java等のインターフェースとクラスの関係は、
クラスを定義する時に「このインターフェースを実装します」と宣言するけど、
Haskellの型クラスでは、型クラスと型をそれぞれ別々に定義した上で、
「この型はこの型クラスのインスタンスだよ」と宣言する。
つまり、既存の型や既存の型クラスを使って、後から
「この型をこの型クラスのインスタンスとして使うよ」ということができる。
実は、286のコードでも型クラスのメソッドが多数使われている。
Ord型クラスのメソッドの>とか<とか、Eq型クラスのメソッドの==とか。
あと、game関数やmain関数の型を見ると、IO型クラスを使っていることがわかる。
型クラスは値ではなくて型のクラスってところがユニーク。
Haskellの型クラスはJava等のインターフェースより柔軟に使える。
Java等のインターフェースとクラスの関係は、
クラスを定義する時に「このインターフェースを実装します」と宣言するけど、
Haskellの型クラスでは、型クラスと型をそれぞれ別々に定義した上で、
「この型はこの型クラスのインスタンスだよ」と宣言する。
つまり、既存の型や既存の型クラスを使って、後から
「この型をこの型クラスのインスタンスとして使うよ」ということができる。
実は、286のコードでも型クラスのメソッドが多数使われている。
Ord型クラスのメソッドの>とか<とか、Eq型クラスのメソッドの==とか。
あと、game関数やmain関数の型を見ると、IO型クラスを使っていることがわかる。
298デフォルトの名無しさん
2014/09/20(土) 12:34:10.95ID:rTgfsjb+ C++14で型クラス的なconceptってのが入りそうになったけど、
時期尚早ってことで見送られた。
次にStroustrupが簡略化した版が入る予定。
時期尚早ってことで見送られた。
次にStroustrupが簡略化した版が入る予定。
299デフォルトの名無しさん
2014/09/20(土) 17:49:48.64ID:k+DS8D97 >>1は何をしたいんだ。
関数型言語は効率が悪そうたって、「集合論に基づいた言語」とかいうのはもっと効率が悪くなるだろうに。
関数型言語は効率が悪そうたって、「集合論に基づいた言語」とかいうのはもっと効率が悪くなるだろうに。
3001
2014/09/20(土) 22:48:20.83ID:YTPHYjLC301デフォルトの名無しさん
2014/09/20(土) 23:24:10.24ID:rTgfsjb+ http://en.wikibooks.org/wiki/Haskell/Classes_and_types
のA concerted exampleと同じことをtype classなしで書いてみれば?
type classがあると細々としたことまで、
少ないコード量で強く型付けできることが分かるはず。
のA concerted exampleと同じことをtype classなしで書いてみれば?
type classがあると細々としたことまで、
少ないコード量で強く型付けできることが分かるはず。
302デフォルトの名無しさん
2014/09/21(日) 13:51:15.50ID:jEJWijVn >>288
> haskell触ってみたけど、今のところ関数型言語や参照透過性の有難さはあんまり実感できてない。
参照透明の良さっていうのは、逆から言うと、状態が沢山あるコードはクソだ、ってこと。
停止性問題で難題になったのは、状態が少し増えるだけで組み合わせの数が爆発すること。
再代入が減らせれば、コードの複雑性が減ることがあるから、参照透明がありがたい。
関数型の良さは、宣言型言語であること。参照透明は関数型言語の目的ではなく、それを必要としているというだけだ。
生産性が劇的に上がるかというと、c++でテンプレートメタプログラミングしてる人からそれを取り上げたら劇的に生産性が下がると言うだろうし、const をc++から取り除いても劇的に生産性が下がるだろう。
Ruby と haskell を比べても仕方ない。
一つのプロジェクトで一つの言語しか使えないわけではないのだから、部分によって、書きやすい言語、高速な言語、ライブラリの充実した言語を使い分ければよい。
そして Ruby でも関数型スタイルで一部を書くことができる。
なんかちょっと固定観念が強い気がする。
あとコンピュータサイエンスと言語の歴史を知らないのにあれこれ分かったつもりになってるように見えるのが不安。
> haskell触ってみたけど、今のところ関数型言語や参照透過性の有難さはあんまり実感できてない。
参照透明の良さっていうのは、逆から言うと、状態が沢山あるコードはクソだ、ってこと。
停止性問題で難題になったのは、状態が少し増えるだけで組み合わせの数が爆発すること。
再代入が減らせれば、コードの複雑性が減ることがあるから、参照透明がありがたい。
関数型の良さは、宣言型言語であること。参照透明は関数型言語の目的ではなく、それを必要としているというだけだ。
生産性が劇的に上がるかというと、c++でテンプレートメタプログラミングしてる人からそれを取り上げたら劇的に生産性が下がると言うだろうし、const をc++から取り除いても劇的に生産性が下がるだろう。
Ruby と haskell を比べても仕方ない。
一つのプロジェクトで一つの言語しか使えないわけではないのだから、部分によって、書きやすい言語、高速な言語、ライブラリの充実した言語を使い分ければよい。
そして Ruby でも関数型スタイルで一部を書くことができる。
なんかちょっと固定観念が強い気がする。
あとコンピュータサイエンスと言語の歴史を知らないのにあれこれ分かったつもりになってるように見えるのが不安。
303デフォルトの名無しさん
2014/09/21(日) 14:55:43.06ID:hG2OFVWB 「集合論に基づいた言語」をつくるうえで参考になるかもしれないということで関数型言語の話が
出てきているんだろうけど、>>1はそれについて、参考になったとか、自分が考えているのとはこう違うから
参考にならなかったという話はせず、効率やら生産性の話をするんだよな。
「集合論に基づいた言語」で効率や生産性の向上を目的としてないなら、関数型言語で効率や生産性の向上が
なくてもどうでもいいことだと思うけど。
出てきているんだろうけど、>>1はそれについて、参考になったとか、自分が考えているのとはこう違うから
参考にならなかったという話はせず、効率やら生産性の話をするんだよな。
「集合論に基づいた言語」で効率や生産性の向上を目的としてないなら、関数型言語で効率や生産性の向上が
なくてもどうでもいいことだと思うけど。
304デフォルトの名無しさん
2014/09/21(日) 15:30:26.77ID:hG2OFVWB 無限集合を扱おうとすれば、関数型言語にあるような遅延評価か、論理型言語にあるような全解収集をするしかないだろ。
要素の重複を認めないのなら、生成されたものがすでに集合に含まれているかどうか調べるためのしくみも必要だし。
集合の包含関係はどのように調べるんだろ。
それとも数式処理のようなものを考えているのかな。
要素の重複を認めないのなら、生成されたものがすでに集合に含まれているかどうか調べるためのしくみも必要だし。
集合の包含関係はどのように調べるんだろ。
それとも数式処理のようなものを考えているのかな。
3051
2014/09/21(日) 16:27:12.72ID:iz+Z8HKh >>302
関数型言語には状態がないってのはなんとなくしっくりこないなぁ。
状態はあるけど考慮しなきゃいけないスコープが関数の引数に限られるってイメージなんだが。
あと、参照透過性を守ったって停止性問題が根本的に解決するわけじゃないよね?
>なんかちょっと固定観念が強い気がする。
まあ、おれもいいおっさんだからな。
それなりに固定観念はあるだろう。
>あとコンピュータサイエンスと言語の歴史を知らないのにあれこれ分かったつもりになってるように見えるのが不安。
これは自覚症状ないんだが。たとえばどの辺が分かったつもりの発言になってる?
>>303
言語を評価するとなったら効率か生産性かだろう。
集合論に基づいた言語では狭い領域の問題に限り(教科書の章末問題とか)
高い生産性を発揮することを目標にしてる。
関数型言語触ってみたけど>>286のコードに関していえばヒントになるようなものはなかった。
型クラスとかは勉強すれば面白いのかもしれん。
関数型言語には状態がないってのはなんとなくしっくりこないなぁ。
状態はあるけど考慮しなきゃいけないスコープが関数の引数に限られるってイメージなんだが。
あと、参照透過性を守ったって停止性問題が根本的に解決するわけじゃないよね?
>なんかちょっと固定観念が強い気がする。
まあ、おれもいいおっさんだからな。
それなりに固定観念はあるだろう。
>あとコンピュータサイエンスと言語の歴史を知らないのにあれこれ分かったつもりになってるように見えるのが不安。
これは自覚症状ないんだが。たとえばどの辺が分かったつもりの発言になってる?
>>303
言語を評価するとなったら効率か生産性かだろう。
集合論に基づいた言語では狭い領域の問題に限り(教科書の章末問題とか)
高い生産性を発揮することを目標にしてる。
関数型言語触ってみたけど>>286のコードに関していえばヒントになるようなものはなかった。
型クラスとかは勉強すれば面白いのかもしれん。
307デフォルトの名無しさん
2014/09/21(日) 19:35:49.05ID:hG2OFVWB 無しの方向ってどうするの?
自然数全体の集合等を扱わないとか、内包的記法を扱わないとか。
自然数全体の集合等を扱わないとか、内包的記法を扱わないとか。
3081
2014/09/21(日) 20:23:58.88ID:iz+Z8HKh 自然数全体の集合の部分集合は基本的に表現するのに無限のビットを必要とするので。
遅延評価とか使えばある程度ごまかせるかもしれないけど、
遅延評価つかっても無限集合の包含関係とかは計算不能な場合もあるので、無限集合は扱わない方向で。
内包的表記は有限集合だけに使えるようにするとか。
遅延評価とか使えばある程度ごまかせるかもしれないけど、
遅延評価つかっても無限集合の包含関係とかは計算不能な場合もあるので、無限集合は扱わない方向で。
内包的表記は有限集合だけに使えるようにするとか。
309デフォルトの名無しさん
2014/09/21(日) 20:27:48.01ID:WCtTxfaP ∞という数・文字をあつかえばいい。
{ 2n | n=1,・・,∞}は無限集合。
{ 2n | n=1,・・,∞}は無限集合。
310デフォルトの名無しさん
2014/09/21(日) 20:40:29.63ID:WCtTxfaP 無限大を扱うのも無限小を扱うのも似通ったもので。1/xで反転するので。
時空間で無限小を扱わない量子重力理論を思い出した。
時空の原子を追うループ量子重力理論 L.スモーリン(カナダ・ペリメター理論物理学研究所)
私たちは空間も時間も連続したものだと考えているが,実は大間違いかもしれない。
相対論と量子力学の統合を目指す新理論によると,「時空の原子」が存在する。
アインシュタインが果たせなかった難問解決の道筋が見えてきた。
量子力学と一般相対論の基本原理を注意深く組み合わせることで,「ループ量子重力理論」が生まれた。
この理論によると,空間は個別の小さな塊からできていて,最小の塊の体積はおよそ1立方プランク長(10-99cm3)だ。
時間の進みは飛び飛びで,その最小単位はおよそ1プランク秒(10-43秒)となる。
ループ量子重力理論は純粋に理論的な研究の成果だが,実際に検証できる可能性がある。
例えば,空間の構造が離散的だとすると,そこを伝わる光のスピードは波長によってわずかに異なる。
この観測が可能な天文衛星が計画されており,時空の離散的構造から生まれる効果が近い将来に確かめられるだろう。
http://www.nikkei-science.com/page/magazine/0404/loop.html
時空間で無限小を扱わない量子重力理論を思い出した。
時空の原子を追うループ量子重力理論 L.スモーリン(カナダ・ペリメター理論物理学研究所)
私たちは空間も時間も連続したものだと考えているが,実は大間違いかもしれない。
相対論と量子力学の統合を目指す新理論によると,「時空の原子」が存在する。
アインシュタインが果たせなかった難問解決の道筋が見えてきた。
量子力学と一般相対論の基本原理を注意深く組み合わせることで,「ループ量子重力理論」が生まれた。
この理論によると,空間は個別の小さな塊からできていて,最小の塊の体積はおよそ1立方プランク長(10-99cm3)だ。
時間の進みは飛び飛びで,その最小単位はおよそ1プランク秒(10-43秒)となる。
ループ量子重力理論は純粋に理論的な研究の成果だが,実際に検証できる可能性がある。
例えば,空間の構造が離散的だとすると,そこを伝わる光のスピードは波長によってわずかに異なる。
この観測が可能な天文衛星が計画されており,時空の離散的構造から生まれる効果が近い将来に確かめられるだろう。
http://www.nikkei-science.com/page/magazine/0404/loop.html
312デフォルトの名無しさん
2014/09/21(日) 20:49:08.07ID:WCtTxfaP 量子重力理論でフリードマン方程式に到達 ―築き上げられた「ミクロからマクロへの架け橋」
「ビッグバンの只中に何が起こっていたのか」ということについては、現行の物理学では説明を下すことができない。
この二つを統合させた「全方位的な」理論 が――量子重力理論が ――求められているところであり、研究が進められている。
この度、ドイツとカナダの研究チームによってPhysical Review Lettersに発表された重大な発見は、まさにこの路線に沿ったものだ。
発表された理論によれば、空間はこれ以上分割することのできない、ほんの小さな「土台、構成要素 (building blocks)≒ 素空間」からできているという。
この着想を出発点として彼らが到達したのは、宇宙論の方程式のなかでも最も肝要なものの一つとして見なされている「フリードマン方程式」だ。
今回の成果は、量子力学と相対論が実際に統合可能であるということを示している ――
http://livedoor.blogimg.jp/dogon23/imgs/a/4/a4fed584.jpg
アインシュタインによる一般相対性理論では重力が扱われており、言うなれば「マクロな世界」を一般的に記述するのが相対論だ。他方、量子力学が扱うのは原子や素粒子といったような「ミクロの世界」だった。
両理論ともに、それぞれの縄張りの領域では成功を収めてきたが、プランクスケールのような極限的な状況においては破綻してしまう、という難点が指摘されていた。
水が原子から構成されているのとまったく同じように、空間はある種の「原子」から ――素空間から ――構成されているのではないか、とOriti氏は想像している。
そして、二つの理論を統合することのできるような新たな理論ではこの「空間の原子」を記述することが切に求められるというわけであり、その理論が冒頭でも触れた「量子重力理論」だ。
アインシュタインの相対論では、時空は連続的なものとして捉えられている。
しかし、Oriti氏らによる数学的なタスクでは、空間を極小の「素空間」へと分解して、これに量子力学を適用させることが試みられた。
それにより空間に、ひいては空間を記述する相対論に量子力学を応用してみる、というのがチームの企てだった。
http://livedoor.blogimg.jp/dogon23/imgs/7/2/7207d807.jpg
http://blog.livedoor.jp/dogon23/archives/31545793.html
「ビッグバンの只中に何が起こっていたのか」ということについては、現行の物理学では説明を下すことができない。
この二つを統合させた「全方位的な」理論 が――量子重力理論が ――求められているところであり、研究が進められている。
この度、ドイツとカナダの研究チームによってPhysical Review Lettersに発表された重大な発見は、まさにこの路線に沿ったものだ。
発表された理論によれば、空間はこれ以上分割することのできない、ほんの小さな「土台、構成要素 (building blocks)≒ 素空間」からできているという。
この着想を出発点として彼らが到達したのは、宇宙論の方程式のなかでも最も肝要なものの一つとして見なされている「フリードマン方程式」だ。
今回の成果は、量子力学と相対論が実際に統合可能であるということを示している ――
http://livedoor.blogimg.jp/dogon23/imgs/a/4/a4fed584.jpg
アインシュタインによる一般相対性理論では重力が扱われており、言うなれば「マクロな世界」を一般的に記述するのが相対論だ。他方、量子力学が扱うのは原子や素粒子といったような「ミクロの世界」だった。
両理論ともに、それぞれの縄張りの領域では成功を収めてきたが、プランクスケールのような極限的な状況においては破綻してしまう、という難点が指摘されていた。
水が原子から構成されているのとまったく同じように、空間はある種の「原子」から ――素空間から ――構成されているのではないか、とOriti氏は想像している。
そして、二つの理論を統合することのできるような新たな理論ではこの「空間の原子」を記述することが切に求められるというわけであり、その理論が冒頭でも触れた「量子重力理論」だ。
アインシュタインの相対論では、時空は連続的なものとして捉えられている。
しかし、Oriti氏らによる数学的なタスクでは、空間を極小の「素空間」へと分解して、これに量子力学を適用させることが試みられた。
それにより空間に、ひいては空間を記述する相対論に量子力学を応用してみる、というのがチームの企てだった。
http://livedoor.blogimg.jp/dogon23/imgs/7/2/7207d807.jpg
http://blog.livedoor.jp/dogon23/archives/31545793.html
313デフォルトの名無しさん
2014/09/21(日) 22:44:17.86ID:eogfeBgw >>308
>無限集合は扱わない
>内包的表記は有限集合だけに使えるようにする
こういうのはどうするんだ?
p(a,b) : a,bは(0以外の)自然数で、aはbで割り切れる
としたとき、
{x|p(x,1)} = {1,2,3,…}
{x|p(1,x)} = {1}
>無限集合は扱わない
>内包的表記は有限集合だけに使えるようにする
こういうのはどうするんだ?
p(a,b) : a,bは(0以外の)自然数で、aはbで割り切れる
としたとき、
{x|p(x,1)} = {1,2,3,…}
{x|p(1,x)} = {1}
314デフォルトの名無しさん
2014/09/22(月) 01:03:15.50ID:SEYHtX5N315デフォルトの名無しさん
2014/09/22(月) 01:29:01.36ID:1b5tK9XE ZFC
316デフォルトの名無しさん
2014/09/22(月) 01:30:24.14ID:1b5tK9XE ブール代数
317デフォルトの名無しさん
2014/09/22(月) 01:32:50.90ID:1b5tK9XE 3値論理
3181
2014/09/22(月) 06:51:14.13ID:XoUFao4y319デフォルトの名無しさん
2014/09/22(月) 06:55:11.39ID:3ofAPdb2 >>318
では逆に、HaskellやPythonのリスト内包表記じゃダメな理由は?
では逆に、HaskellやPythonのリスト内包表記じゃダメな理由は?
3201
2014/09/22(月) 08:32:07.69ID:XoUFao4y 遅延評価が必要になる。
めんどくさい割に実用的じゃないと思う。
haskellの無限リストを使うときだって最後はtakeとか使って有限集合に落とすんでしょ?
めんどくさい割に実用的じゃないと思う。
haskellの無限リストを使うときだって最後はtakeとか使って有限集合に落とすんでしょ?
321デフォルトの名無しさん
2014/09/22(月) 11:31:48.61ID:mNTZ+4bu >>291
何の関係もない。
何の関係もない。
322デフォルトの名無しさん
2014/09/22(月) 11:34:43.17ID:mNTZ+4bu323デフォルトの名無しさん
2014/09/22(月) 12:49:44.48ID:jhj0pzxy > haskellの無限リストを使うときだって最後はtakeとか使って有限集合に落とすんでしょ?
takeのように単純な関数だとは限らない。
ゲーム木の探索の枝刈りのようなややこしい条件で止めたりするから意味がある。
まあただtwitterで、らくだの人と川の人が時々論戦しているように、デフォルトで
なんでもかんでも遅延か、遅延にしたいものだけ明示的に遅延にするのが良いのか?
は、まだ結論が出ていないとは思う。
takeのように単純な関数だとは限らない。
ゲーム木の探索の枝刈りのようなややこしい条件で止めたりするから意味がある。
まあただtwitterで、らくだの人と川の人が時々論戦しているように、デフォルトで
なんでもかんでも遅延か、遅延にしたいものだけ明示的に遅延にするのが良いのか?
は、まだ結論が出ていないとは思う。
324デフォルトの名無しさん
2014/09/22(月) 15:09:16.19ID:SUbucwZ9325デフォルトの名無しさん
2014/09/22(月) 16:52:16.32ID:4aSBsr7P 有限集合限定なら言語なんか作らずにライブラリで済むんじゃないか。
それにライブラリ作らなくても、Maximaなら要求よりももっと複雑なこともできる。
それにライブラリ作らなくても、Maximaなら要求よりももっと複雑なこともできる。
326デフォルトの名無しさん
2014/09/22(月) 17:18:16.63ID:LvPIFofq A. 無知ゆえに(ありきたりな)発想が溢れている人、行動力がある人
B. 知識でがんじがらめになって発想が死んだ人
たいがいこのどっちかに当てはまってしまう。そして結局このスレもAとBとの対立構造に終始して終わる。
B. 知識でがんじがらめになって発想が死んだ人
たいがいこのどっちかに当てはまってしまう。そして結局このスレもAとBとの対立構造に終始して終わる。
3271
2014/09/22(月) 18:14:10.47ID:XoUFao4y >>322
そういわれるとそんな気もしてきますね。
>>323
ゲーム木の探索で遅延評価使うとminmaxがαβになったりするんでしょうか。
さすがにそこまではない?
>>324
無限集合を使って生産性が上がる例があるなら教えてほしいです。
無限集合は面白い概念だけど扱いが難しい。
正直>>15のときは無限集合の実装の大変さの見通しが甘かったと言わざるを得ない。
>>325
>有限集合限定なら言語なんか作らずにライブラリで済むんじゃないか。
その可能性はありますね。
>それにライブラリ作らなくても、Maximaなら要求よりももっと複雑なこともできる。
Maximaは昔少しだけ触ったことあるけど色んな事が出来るっぽいですね。
素因数分解とかやらせてみたことあります。
>>326
まあ、最悪なにも形あるものは生み出せなくても私は勉強になってますけどね。
そういわれるとそんな気もしてきますね。
>>323
ゲーム木の探索で遅延評価使うとminmaxがαβになったりするんでしょうか。
さすがにそこまではない?
>>324
無限集合を使って生産性が上がる例があるなら教えてほしいです。
無限集合は面白い概念だけど扱いが難しい。
正直>>15のときは無限集合の実装の大変さの見通しが甘かったと言わざるを得ない。
>>325
>有限集合限定なら言語なんか作らずにライブラリで済むんじゃないか。
その可能性はありますね。
>それにライブラリ作らなくても、Maximaなら要求よりももっと複雑なこともできる。
Maximaは昔少しだけ触ったことあるけど色んな事が出来るっぽいですね。
素因数分解とかやらせてみたことあります。
>>326
まあ、最悪なにも形あるものは生み出せなくても私は勉強になってますけどね。
328デフォルトの名無しさん
2014/09/22(月) 19:40:23.96ID:3ofAPdb2 >>326
Aのほうが遥かにマシだな。
ありきたりでも行動していればそのうちありきたりじゃない発想が出る。
行動する人に対して既存の知識を振り回して笑うことしかできない奴は
いつまでたっても何もつくれない。
Aのほうが遥かにマシだな。
ありきたりでも行動していればそのうちありきたりじゃない発想が出る。
行動する人に対して既存の知識を振り回して笑うことしかできない奴は
いつまでたっても何もつくれない。
329デフォルトの名無しさん
2014/09/22(月) 20:07:25.83ID:SUbucwZ9330デフォルトの名無しさん
2014/09/22(月) 20:21:24.00ID:4th1shUN あたし中卒やからね 仕事をもらわれへんのやと書いた
女の子の手紙の文字は とがりながら震えてる
ガキのくせにと頬を打たれ 少年たちの眼が年をとる
悔しさを握りしめすぎた 拳の中 爪が突き刺さる
女の子の手紙の文字は とがりながら震えてる
ガキのくせにと頬を打たれ 少年たちの眼が年をとる
悔しさを握りしめすぎた 拳の中 爪が突き刺さる
3311
2014/09/22(月) 20:46:51.62ID:XoUFao4y332デフォルトの名無しさん
2014/09/22(月) 21:29:11.48ID:UZeuYMIm 集合を言語へどう使うか決まってないし、有限・無限とか細かい部分を決めても意味ないだろ。
スタンダードな言語に対して、集合が扱える仕組みが取り込めばいいだけなのかとか。
スタンダードな言語に対して、集合が扱える仕組みが取り込めばいいだけなのかとか。
333デフォルトの名無しさん
2014/09/22(月) 21:48:28.53ID:m1LWUU3t 集合論の教科書を想定せずに
>発想から徹底的に集合論的思想で言語仕様を考える
と言ってたのか…
で、結局、有限集合限定だから
>言語なんか作らずにライブラリで済む
んじゃないか、と…
>発想から徹底的に集合論的思想で言語仕様を考える
と言ってたのか…
で、結局、有限集合限定だから
>言語なんか作らずにライブラリで済む
んじゃないか、と…
334デフォルトの名無しさん
2014/09/22(月) 21:54:05.38ID:LvPIFofq ライブラリを作ってみてライブラリではここが不満だって気づいてから言語作り始めても遅くない。
そういう下地があると1ヶ月くらいでコンパイラを書ける。凡人でも。
そういう下地があると1ヶ月くらいでコンパイラを書ける。凡人でも。
335デフォルトの名無しさん
2014/09/22(月) 21:56:13.85ID:Q+rXpvQc >>330
ファイト!
ファイト!
336デフォルトの名無しさん
2014/09/22(月) 21:58:03.07ID:M8xWvQpL337デフォルトの名無しさん
2014/09/22(月) 22:23:43.15ID:UZeuYMIm >>336
どういう用途に使うかに強く依存する。
たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。
最初に何に使うのかが決まらないと、有限・無限はどうするか決まらない。
どういう用途に使うかに強く依存する。
たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。
最初に何に使うのかが決まらないと、有限・無限はどうするか決まらない。
338デフォルトの名無しさん
2014/09/22(月) 22:31:18.61ID:M8xWvQpL >>337
>たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。
何言ってるかさっぱり分からん。
>有限・無限とか細かい部分を決めても意味ないだろ。
とどう関係するんだ?
>たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。
何言ってるかさっぱり分からん。
>有限・無限とか細かい部分を決めても意味ないだろ。
とどう関係するんだ?
339デフォルトの名無しさん
2014/09/22(月) 22:51:19.51ID:UZeuYMIm 任意のプログラムコードを、ある自然数に対応させることは可能のはずだ。この値は有限値で。
具体的には、ゲーデル文構成のようにしたらいいと思うが良くはわからん。
ゲーデルの不完全性定理 - Wikipedia
ゲーデルの不完全性定理とは、数学基礎論における重要な定理の一つで、クルト・ゲーデルが1930年に証明したものである。
ゲーデル文の構成
ゲーデル数というテクニックを使って間接的に自己言及を可能とし、ゲーデル文を構成する。
コンピュータでは全てのデータを一意な数値で表しており、特に文字列や論理式そして論理式の列も数値で表す。
このように、論理式を数値で表す行為を論理式のゲーデル数化といい、命題Pに対応する数値をPのゲーデル数という。
具体的には、ゲーデル文構成のようにしたらいいと思うが良くはわからん。
ゲーデルの不完全性定理 - Wikipedia
ゲーデルの不完全性定理とは、数学基礎論における重要な定理の一つで、クルト・ゲーデルが1930年に証明したものである。
ゲーデル文の構成
ゲーデル数というテクニックを使って間接的に自己言及を可能とし、ゲーデル文を構成する。
コンピュータでは全てのデータを一意な数値で表しており、特に文字列や論理式そして論理式の列も数値で表す。
このように、論理式を数値で表す行為を論理式のゲーデル数化といい、命題Pに対応する数値をPのゲーデル数という。
340デフォルトの名無しさん
2014/09/22(月) 22:56:41.54ID:UZeuYMIm ゲーデル数 - Wikipedia
ゲーデル数は、数理論理学において何らかの形式言語のそれぞれの記号や整論理式に一意に割り振られる自然数である。
一般化
計算可能性理論において、「ゲーデル数化」は上述よりさらに一般化した意味を持つ用語として使われる。
1.形式言語の構成要素に自然数を割り当てて、形式言語の構成要素の操作を、数を操作するアルゴリズムでシミュレートできるようにする。
2.より一般化して、枚挙可能な数学的オブジェクトに自然数を割り当てて、その数学的オブジェクトにアルゴリズム的操作ができるようにする。
これは数というよりも文字列を操作する計算模型(チューリングマシンなど)に必須の考え方である。
チューリングマシン - Wikipedia
チューリング機械とは次の7つ組である。
http://upload.wikimedia.org/math/6/3/d/63d3280aa62307d33bea8f0e64f4dac7.png
Q は有限集合であり、その元を状態という。
Γ は Q に交わらない有限集合であり、字母とよばれる。その元を記号という。
b は Γ の元であり、空白記号とよばれる。
Σ は Γ - {b} の部分集合であり、入力字母とよばれる。その元を入力記号という。
δ は Q × Γ から Q × Γ × {left, right} への写像であり、遷移函数とよばれる。δ(q, a) = (q', a', m) は、
「現在の状態が q であり、着目位置にある記号が a であれば、状態を q' に移し、着目位置に記号 a' を書き込んでから、着目位置を m 方向に1つずらす」と読む。
qinit は Q の元であり、初期状態とよばれる。
qacc は Q の元であり、受理状態とよばれる。
ゲーデル数は、数理論理学において何らかの形式言語のそれぞれの記号や整論理式に一意に割り振られる自然数である。
一般化
計算可能性理論において、「ゲーデル数化」は上述よりさらに一般化した意味を持つ用語として使われる。
1.形式言語の構成要素に自然数を割り当てて、形式言語の構成要素の操作を、数を操作するアルゴリズムでシミュレートできるようにする。
2.より一般化して、枚挙可能な数学的オブジェクトに自然数を割り当てて、その数学的オブジェクトにアルゴリズム的操作ができるようにする。
これは数というよりも文字列を操作する計算模型(チューリングマシンなど)に必須の考え方である。
チューリングマシン - Wikipedia
チューリング機械とは次の7つ組である。
http://upload.wikimedia.org/math/6/3/d/63d3280aa62307d33bea8f0e64f4dac7.png
Q は有限集合であり、その元を状態という。
Γ は Q に交わらない有限集合であり、字母とよばれる。その元を記号という。
b は Γ の元であり、空白記号とよばれる。
Σ は Γ - {b} の部分集合であり、入力字母とよばれる。その元を入力記号という。
δ は Q × Γ から Q × Γ × {left, right} への写像であり、遷移函数とよばれる。δ(q, a) = (q', a', m) は、
「現在の状態が q であり、着目位置にある記号が a であれば、状態を q' に移し、着目位置に記号 a' を書き込んでから、着目位置を m 方向に1つずらす」と読む。
qinit は Q の元であり、初期状態とよばれる。
qacc は Q の元であり、受理状態とよばれる。
341デフォルトの名無しさん
2014/09/22(月) 23:19:51.98ID:M8xWvQpL お前アホだろ。
>プログラムコードは有限だから
ってコード長が有限ってことを言いたかったのかよ。
>プログラムコードは有限だから
ってコード長が有限ってことを言いたかったのかよ。
342デフォルトの名無しさん
2014/09/22(月) 23:51:04.16ID:UZeuYMIm 言語の開発以前に、無限にするか、有限にするか決めたとして。
有限の範囲ではおさまらない具体的な例・モデルってあるのか?
既存のコンピュータ、ノイマン型は、有限集合で操れるから具体的にイメージ出来ない。
有限の範囲ではおさまらない具体的な例・モデルってあるのか?
既存のコンピュータ、ノイマン型は、有限集合で操れるから具体的にイメージ出来ない。
343デフォルトの名無しさん
2014/09/23(火) 00:04:48.04ID:FXTBDWVe とりあえず有限長の語の集合が無限集合になりうることくらいは理解してくれ。
証明が無限を扱うことと、証明長が有限なことは全然別の話。
プログラムにしても同様。
証明が無限を扱うことと、証明長が有限なことは全然別の話。
プログラムにしても同様。
344デフォルトの名無しさん
2014/09/23(火) 00:11:51.00ID:dVlUahkv346デフォルトの名無しさん
2014/09/23(火) 00:32:18.88ID:dVlUahkv 言語を開発する上で、既存の有限集合に基づくモデルで十分だという立場。
無限を扱うメリットを知りたい。
無限を扱うメリットを知りたい。
347デフォルトの名無しさん
2014/09/23(火) 00:50:04.92ID:dVlUahkv 無限小、無限大を取り込んでない、自然数に基づく数学に、あとから無限小、無限大を取り入れても矛盾しない。
超準解析 - Wikipedia
超準解析ではイプシロン-デルタ論法によって一度は数学から追放されたと思われた、無限小や無限大という極限に関する古典的で
直観的な感覚、すなわち、いわゆる実数論にもとづかないライプニッツ流の古典的な微積分を数学的に厳密に定式化し、取り戻すことができる。
このような古典的な微積分におけるオリジナルな無限小解析学とは区別されることもある。
アブラハム・ロビンソンによって考案された。超準解析の基本的な手法である超積はアラン・コンヌらによって作用素環の研究に応用されてもいる。
超実数は実数を拡張した数概念である。実数体に無限小・無限大を加えたものは体をなし、超実数体と呼ばれる。
超実数体は *R, R* などと表記される。その元を超実数という。
Rubyによる 超準解析 クラス.(HyperRael,MathExt)
超実数体とは,(大雑把に云えば) 実数体にライプニッツ的な無限小を添加して出来る体のことだ.
微分等, 通常の実数では limit を使う場面で, 超実数体内部の四則演算として直接求めることが出来る.
超準的な計算では, 無限小や∞の強さもわかるので無限小/無限小, 無限小*∞, ∞/∞ 等の計算が矛盾無く解釈可能となる.
ただし単なる体なので, 真の0(無限小でなく) については, 0*∞=0 で, 0/0 や 1/0 は定義されない.
この点は IEEE754 的な浮動小数点計算で 1.0/0.0 で Infinity を返すような気持の悪さは解消できる.
http://www.math.kobe-u.ac.jp/~kodama/tips-HyperReal.html
超準解析 - Wikipedia
超準解析ではイプシロン-デルタ論法によって一度は数学から追放されたと思われた、無限小や無限大という極限に関する古典的で
直観的な感覚、すなわち、いわゆる実数論にもとづかないライプニッツ流の古典的な微積分を数学的に厳密に定式化し、取り戻すことができる。
このような古典的な微積分におけるオリジナルな無限小解析学とは区別されることもある。
アブラハム・ロビンソンによって考案された。超準解析の基本的な手法である超積はアラン・コンヌらによって作用素環の研究に応用されてもいる。
超実数は実数を拡張した数概念である。実数体に無限小・無限大を加えたものは体をなし、超実数体と呼ばれる。
超実数体は *R, R* などと表記される。その元を超実数という。
Rubyによる 超準解析 クラス.(HyperRael,MathExt)
超実数体とは,(大雑把に云えば) 実数体にライプニッツ的な無限小を添加して出来る体のことだ.
微分等, 通常の実数では limit を使う場面で, 超実数体内部の四則演算として直接求めることが出来る.
超準的な計算では, 無限小や∞の強さもわかるので無限小/無限小, 無限小*∞, ∞/∞ 等の計算が矛盾無く解釈可能となる.
ただし単なる体なので, 真の0(無限小でなく) については, 0*∞=0 で, 0/0 や 1/0 は定義されない.
この点は IEEE754 的な浮動小数点計算で 1.0/0.0 で Infinity を返すような気持の悪さは解消できる.
http://www.math.kobe-u.ac.jp/~kodama/tips-HyperReal.html
348デフォルトの名無しさん
2014/09/23(火) 00:58:09.60ID:IDDuvAyc んなもん、チューリング完全な言語は能力同等なんだから
無限をその言語機能で直接書きやすく実行効率よくするかどうかの判断しだいだよ
で、1はもう無限を直接扱うのはあきらめたんでしょ
今度は有限の制約があっても、1が元々やりたかった範囲がカバーできてるのかって問題になるわけだが、
「やりたかった範囲」がぼんやりしてるからこれ以上はわからんわな
無限をその言語機能で直接書きやすく実行効率よくするかどうかの判断しだいだよ
で、1はもう無限を直接扱うのはあきらめたんでしょ
今度は有限の制約があっても、1が元々やりたかった範囲がカバーできてるのかって問題になるわけだが、
「やりたかった範囲」がぼんやりしてるからこれ以上はわからんわな
349デフォルトの名無しさん
2014/09/23(火) 01:02:03.65ID:IDDuvAyc おっと書きわすれた。まあ俺もみんながいってるように、
まず既存言語+ライブラリでやりたいことがどの程度できるのか確かめる
のがいいと思うけどね
まず既存言語+ライブラリでやりたいことがどの程度できるのか確かめる
のがいいと思うけどね
350デフォルトの名無しさん
2014/09/23(火) 11:31:06.71ID:5tA+8B0p 無限集合を扱わない代わりにストリームを集合として扱えるようにしようぜ
351デフォルトの名無しさん
2014/09/23(火) 11:38:18.07ID:yLd7Mbmy 無限集合を扱うのが困難なように言っているが、どういう操作を実装するか次第だろう。
例えば分数ライブラリがあるが、必要になればいくらでも循環小数や無理数の桁を取り出せ、しかし普段は分子と分母を保存しておくだけ。
それをさらに除算以外の演算もサポートした、値を式で保持するライブラリもある。
実際に何かの集合を扱うたびに本物のコンテナを生成するよりもマシな気がするけど。
>>305
> 関数型言語には状態がないってのはなんとなくしっくりこないなぁ。
変化しないものは状態といわない。
例えば人間には生と死という状態があるが、親が人間かどうかというのは変更がないから状態とはしない。
プログラムでいえば再代入のあるものが状態だ。
c/c++のconst変数は建前では参照透明だ(キャスト、mutableがであるので実際は違う)。
本当に関数型言語に状態がないかどうかは言語によるし、システムコールによる副作用があっても参照透明と呼ぶのはレトリックと言われても仕方ない気もする。
特定の言語自体の価値よりも、関数型プログラミング的テクニック全体に価値がある。c++でもPythonでも使える。
> あと、参照透過性を守ったって停止性問題が根本的に解決するわけじゃないよね?
難題とか複雑性が減るとかいう表現を使ったのは、停止性問題の証明には関係ないからだよ。
> これは自覚症状ないんだが。たとえばどの辺が分かったつもりの発言になってる?
>288 を読んで知ったかぶりらしく思わない人がどれだけいただろうか。
例えば分数ライブラリがあるが、必要になればいくらでも循環小数や無理数の桁を取り出せ、しかし普段は分子と分母を保存しておくだけ。
それをさらに除算以外の演算もサポートした、値を式で保持するライブラリもある。
実際に何かの集合を扱うたびに本物のコンテナを生成するよりもマシな気がするけど。
>>305
> 関数型言語には状態がないってのはなんとなくしっくりこないなぁ。
変化しないものは状態といわない。
例えば人間には生と死という状態があるが、親が人間かどうかというのは変更がないから状態とはしない。
プログラムでいえば再代入のあるものが状態だ。
c/c++のconst変数は建前では参照透明だ(キャスト、mutableがであるので実際は違う)。
本当に関数型言語に状態がないかどうかは言語によるし、システムコールによる副作用があっても参照透明と呼ぶのはレトリックと言われても仕方ない気もする。
特定の言語自体の価値よりも、関数型プログラミング的テクニック全体に価値がある。c++でもPythonでも使える。
> あと、参照透過性を守ったって停止性問題が根本的に解決するわけじゃないよね?
難題とか複雑性が減るとかいう表現を使ったのは、停止性問題の証明には関係ないからだよ。
> これは自覚症状ないんだが。たとえばどの辺が分かったつもりの発言になってる?
>288 を読んで知ったかぶりらしく思わない人がどれだけいただろうか。
352デフォルトの名無しさん
2014/09/23(火) 12:03:18.67ID:9ll4fKxj >>326は嘘で、無知で発想が支離滅裂で実行力もない人が多いみたいです。
353デフォルトの名無しさん
2014/09/23(火) 16:14:06.99ID:49Grt2TR 実装に寄らないクラス定義、メソッド、オペレータ、その処理の定義決めればいいんじゃね
オペレータオーバーロードできない処理系ではオペレータの代わりにメソッド実装でいいし、しっかり概念が定義されてたらどの言語にも移植できるやん
オペレータオーバーロードできない処理系ではオペレータの代わりにメソッド実装でいいし、しっかり概念が定義されてたらどの言語にも移植できるやん
3541
2014/09/24(水) 20:26:39.07ID:sdype2Aq うーん。とりあえず、集合のリテラルがある言語、またはリテラルを自作できる言語ってある?
355デフォルトの名無しさん
2014/09/24(水) 20:34:18.13ID:Z2e1BcPM C++11
356デフォルトの名無しさん
2014/09/24(水) 20:46:24.29ID:c/ueWxaZ Pascalの型に集合はあったけど、リテラルあったっけ?
3571
2014/09/24(水) 21:32:20.18ID:sdype2Aq C++11すげぇw
正気の沙汰とは思えないw
しかしこれ、setみたいなテンプレート型のリテラルもちゃんと作れるのかなぁ?
正気の沙汰とは思えないw
しかしこれ、setみたいなテンプレート型のリテラルもちゃんと作れるのかなぁ?
358デフォルトの名無しさん
2014/09/24(水) 21:47:35.83ID:icQzJbDu つうかC++11使ってリテラル定義しなくても、初期化子書けばいいだけ。
3591
2014/09/24(水) 21:59:47.35ID:sdype2Aq std::initializer_listなんてものもあるのか。
世の中知らないうちに便利になってるな。
世の中知らないうちに便利になってるな。
360デフォルトの名無しさん
2014/09/24(水) 22:19:34.82ID:u+CQqrHx3621
2014/09/26(金) 20:57:23.89ID:TQ6i6UUU C++11結構面白そうだが完全準拠したコンパイラが無いっぽい?
363デフォルトの名無しさん
2014/09/26(金) 21:17:42.44ID:v6QeAlLd お前のOSにゃ無いかもしれんな
3641
2014/09/26(金) 21:24:17.23ID:TQ6i6UUU とりあえずVisual Studio 2013 Express でいじってみてるけど結構楽しい。
int _tmain(int argc, _TCHAR* argv[])
{
set<set<int> > a = { { 1, 2 }, { 3 }, { 4, 5, 6 } };
for (auto i : a){ for (auto j : i) cout << j << " "; cout << endl; }
return 0;
}
とか書けていい感じ。
int _tmain(int argc, _TCHAR* argv[])
{
set<set<int> > a = { { 1, 2 }, { 3 }, { 4, 5, 6 } };
for (auto i : a){ for (auto j : i) cout << j << " "; cout << endl; }
return 0;
}
とか書けていい感じ。
365デフォルトの名無しさん
2014/09/26(金) 21:37:43.18ID:rLR78veI3661
2014/09/26(金) 21:56:27.24ID:TQ6i6UUU >>365
個人的にはもうちょっと言語の設計が根本から変わるようなものが
集合にはあるんじゃないかと思ってるんだが。
それがなんだかは分からないw
いまのところ集合を普通のライブラリとして用意する以上のアイディアは出てない。
個人的にはもうちょっと言語の設計が根本から変わるようなものが
集合にはあるんじゃないかと思ってるんだが。
それがなんだかは分からないw
いまのところ集合を普通のライブラリとして用意する以上のアイディアは出てない。
367デフォルトの名無しさん
2014/09/26(金) 22:40:52.33ID:mU/FSdzC (>>856 の続き)
始めは「考えられるリスクの低減」から
・ライブラリや共通部品の多くは(アルゴリズムやデータ変換を実現する単純なものもあるが)
データベース/ファイル/ネットワーク/プロセス間通信といったプログラムの
外部インターフェイス処理が多くを占める
これらを実装するには、プログラマにシステムコールや標準ライブラリ(>>829)、
そして社外のライブラリや社内の共通部品等等、幅広い知識が求められる
これを経験の浅いメンバに負わせるのは無謀
・ライブラリ/共通部品の実装技術は機能仕様(=ビジネスルール)には依存しないから、
類似のシステム開発プロジェクトがあれば、類似の実装になる
もしライブラリ設計担当がいくつかのプロジェクトを経験したベテランであれば、
過去の(失敗を含めた)経験から、既存の設計やコードを改造母体にして短期間で設計できる
これと同じことを経験の浅いメンバに期待するのは無茶
・万が一、ライブラリ/共通部品の開発日程が遅延して結合テストに間に合わなかったり、
結合テストでバグが多発する事態になれば、その影響はプロジェクトの全体に及ぶ
もしモスク(>>856)の中位/上位層であれば影響範囲は限定的だし、
その炎上の火消しのためにライブラリ/共通部品を担当させて余力のあるベテランを投入できる
(当然、ライブラリ/共通部品設計には日程厳守(or 前倒し)と高品質(=バグ0)をベテランに要求する)
始めは「考えられるリスクの低減」から
・ライブラリや共通部品の多くは(アルゴリズムやデータ変換を実現する単純なものもあるが)
データベース/ファイル/ネットワーク/プロセス間通信といったプログラムの
外部インターフェイス処理が多くを占める
これらを実装するには、プログラマにシステムコールや標準ライブラリ(>>829)、
そして社外のライブラリや社内の共通部品等等、幅広い知識が求められる
これを経験の浅いメンバに負わせるのは無謀
・ライブラリ/共通部品の実装技術は機能仕様(=ビジネスルール)には依存しないから、
類似のシステム開発プロジェクトがあれば、類似の実装になる
もしライブラリ設計担当がいくつかのプロジェクトを経験したベテランであれば、
過去の(失敗を含めた)経験から、既存の設計やコードを改造母体にして短期間で設計できる
これと同じことを経験の浅いメンバに期待するのは無茶
・万が一、ライブラリ/共通部品の開発日程が遅延して結合テストに間に合わなかったり、
結合テストでバグが多発する事態になれば、その影響はプロジェクトの全体に及ぶ
もしモスク(>>856)の中位/上位層であれば影響範囲は限定的だし、
その炎上の火消しのためにライブラリ/共通部品を担当させて余力のあるベテランを投入できる
(当然、ライブラリ/共通部品設計には日程厳守(or 前倒し)と高品質(=バグ0)をベテランに要求する)
3701
2014/09/26(金) 22:55:37.85ID:TQ6i6UUU 誤爆とは思えないほどスレの流れに合ったレスだったが。
まあいいや。
まあいいや。
371デフォルトの名無しさん
2014/09/27(土) 12:16:01.73ID:Tn3/IHEN オメガってZFに基づいた言語がアメリカにあったはずだが見つけられない。
集合はsetとclassの型付け。
上にある仕様記述言語Zとは別。
集合はsetとclassの型付け。
上にある仕様記述言語Zとは別。
3731
2014/09/28(日) 21:20:59.19ID:ngbZk+Gk375デフォルトの名無しさん
2014/09/28(日) 22:47:39.25ID:qFZf/al/ >>373
http://homepages.cs.ncl.ac.uk/cliff.jones/publications/Jones1990.pdf
http://www.cs.ncl.ac.uk/publications/books/papers/100.pdf
http://spivey.oriel.ox.ac.uk/~mike/zrm/zrm.pdf
http://staff.itee.uq.edu.au/ianh/Papers/SCS2.pdf
英語が苦手なのに
>しかたないのでこのスレは>>4とかの言語を勉強するスレにするか。
と書いたのか。
http://homepages.cs.ncl.ac.uk/cliff.jones/publications/Jones1990.pdf
http://www.cs.ncl.ac.uk/publications/books/papers/100.pdf
http://spivey.oriel.ox.ac.uk/~mike/zrm/zrm.pdf
http://staff.itee.uq.edu.au/ianh/Papers/SCS2.pdf
英語が苦手なのに
>しかたないのでこのスレは>>4とかの言語を勉強するスレにするか。
と書いたのか。
377デフォルトの名無しさん
2014/09/28(日) 23:48:18.69ID:qFZf/al/ >>376
http://homepages.uel.ac.uk/A.Kans/MSc%20week3.pdf
http://www.cs.nott.ac.uk/~rxq/files/4FSPnotation.pdf
http://formal.iti.kit.edu/~beckert/teaching/Spezifikation-SS04/11Z.pdf
http://homepages.uel.ac.uk/A.Kans/MSc%20week3.pdf
http://www.cs.nott.ac.uk/~rxq/files/4FSPnotation.pdf
http://formal.iti.kit.edu/~beckert/teaching/Spezifikation-SS04/11Z.pdf
379デフォルトの名無しさん
2014/09/29(月) 01:12:43.07ID:1qhCFqkI >>360についてどう思うかたずねられる →「wiki(pedia)だけじゃよく分からん」
詳しく書かれている文書を提示される →「読むのに時間がかかる」
もっと短い文書を提示される →「プレッシャーかけるな」
詳しく書かれている文書を提示される →「読むのに時間がかかる」
もっと短い文書を提示される →「プレッシャーかけるな」
380デフォルトの名無しさん
2014/09/29(月) 13:28:38.13ID:AXPWss48 >>1
センスは悪くないが、致命的に勉強が足りんな
センスは悪くないが、致命的に勉強が足りんな
3811
2014/09/29(月) 18:35:35.54ID:O3Lh9EkL382デフォルトの名無しさん
2014/09/29(月) 20:16:07.80ID:onaWAXdx どっちに進んだらいいのか分からないんだから、提供された情報を手がかりにして、
wikiだけじゃ分からんとか言わずに自分で情報をさがして勉強するしかないだろ。
情報を提供してもらうためにスレを立てたんだろ。
wikiだけじゃ分からんとか言わずに自分で情報をさがして勉強するしかないだろ。
情報を提供してもらうためにスレを立てたんだろ。
3831
2014/09/29(月) 20:43:37.99ID:O3Lh9EkL3841
2014/09/29(月) 20:52:49.67ID:O3Lh9EkL >>377
ちょっとだけ読んでみただけだから誤解があるかもしれないけど、
これは仕様をガチガチに固めるためのもの?
こんなこと言うと批判がありそうだけど俺としてはbashやRubyみたいに緩い感じでコーディングして
仕様変更があってもちょちょっとハッキングすれば何となく動いちゃうみたいのが好みなんだけど。
ちょっとだけ読んでみただけだから誤解があるかもしれないけど、
これは仕様をガチガチに固めるためのもの?
こんなこと言うと批判がありそうだけど俺としてはbashやRubyみたいに緩い感じでコーディングして
仕様変更があってもちょちょっとハッキングすれば何となく動いちゃうみたいのが好みなんだけど。
385デフォルトの名無しさん
2014/09/29(月) 22:24:17.39ID:MPdknRrK3861
2014/09/29(月) 22:46:32.46ID:O3Lh9EkL387デフォルトの名無しさん
2014/09/29(月) 22:53:43.66ID:6QlMlDt4 Python の set とかってイメージしてる "集合" とはどういう関係にあるのかな
388デフォルトの名無しさん
2014/09/29(月) 23:54:29.23ID:4aZKHf7r Zは仕様記述言語だよ。
Notationと言われているように、日本語だと記法と言ってもいいかもしれない。
Notationと言われているように、日本語だと記法と言ってもいいかもしれない。
389デフォルトの名無しさん
2014/09/30(火) 00:05:52.09ID:lw4FII9v390デフォルトの名無しさん
2014/09/30(火) 00:27:57.32ID:QoKiTOmo 過去の発言をあげつらうとか無粋なことを‥
そのときどきで感想がぽつぽつ上がってそこから何かが生まれればよし、そうでなくてもいいので、こうしてお付き合いしているわけだし‥
そのときどきで感想がぽつぽつ上がってそこから何かが生まれればよし、そうでなくてもいいので、こうしてお付き合いしているわけだし‥
391デフォルトの名無しさん
2014/09/30(火) 00:47:37.34ID:63XDoi4/ 1の興味がどっちに向いてるのかはっきりさせとかないと、誰かが>>360のように情報を出してくれても、
1は興味を持てず理解もできず、情報を出してくれた人を無視することになるわな。
1は興味を持てず理解もできず、情報を出してくれた人を無視することになるわな。
392デフォルトの名無しさん
2014/09/30(火) 04:58:34.96ID:AOM1YMTX 一次元で言ったら
(1-5) | ( 2-6) | (3-9) | (9-10) = (1-6, 3-10) こういうの返すとか
2次元だと、GDIなんかでもよくあるリージョン計算とか
三次元にも応用してとか
言語にこだわらず、集合表記決めて興味持った人が各言語で実装するのがいい
(1-5) | ( 2-6) | (3-9) | (9-10) = (1-6, 3-10) こういうの返すとか
2次元だと、GDIなんかでもよくあるリージョン計算とか
三次元にも応用してとか
言語にこだわらず、集合表記決めて興味持った人が各言語で実装するのがいい
393片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/09/30(火) 07:28:17.49ID:JjKI4EMd ひらがな電卓Calc-Hだと、
「ろくのやくすうはなんですか」とか
「じゅうにいかのそすうは」とか
「よんのばいすうはにでわりきれるか」とか
「いちいじょうのろくのばいすうは、ごよりおおきいさんのばいすうか」
といった質問に答えられるんだけど。参考までに
「ろくのやくすうはなんですか」とか
「じゅうにいかのそすうは」とか
「よんのばいすうはにでわりきれるか」とか
「いちいじょうのろくのばいすうは、ごよりおおきいさんのばいすうか」
といった質問に答えられるんだけど。参考までに
394デフォルトの名無しさん
2014/09/30(火) 12:59:47.25ID:X/itkzZm395デフォルトの名無しさん
2014/09/30(火) 15:20:16.06ID:3YX+fixm さわりは音楽でいうサビかイントロか。
イントロと間違う人も多いだろう。
イントロと間違う人も多いだろう。
396デフォルトの名無しさん
2014/09/30(火) 16:07:43.18ID:tX5UXYDw そりゃサビだろ
最低限なんだから大事なところ押さえないと
最低限なんだから大事なところ押さえないと
3971
2014/09/30(火) 20:27:22.22ID:p23v2Yf3 >>389
まあ、大風呂敷を広げた方が話が盛り上がるかと思って。
>>391
正直すべてのレスをフォローするのはしんどいかも。
方向性はまだ固まってないです。
>>393
結構、ことばがわかりません。ていわれる。
いまのでも結構すごいがこれを実用までもっていったらかなりすごいと思う。
>>394
Zはオブジェクト指向でいうUMLみたいなもん?
集合論プログラミングはぐぐったけどCiNiiの論文がヒットした。
プレビュー読んでみたけどアルゴリズムを自動生成するの?
確かにすごいし理屈も通ってると思う。
これの処理系がすでにあるなら触ってみたいけど、
自分で実装しようとは思わないw。大変すぐるw。
まあ、大風呂敷を広げた方が話が盛り上がるかと思って。
>>391
正直すべてのレスをフォローするのはしんどいかも。
方向性はまだ固まってないです。
>>393
結構、ことばがわかりません。ていわれる。
いまのでも結構すごいがこれを実用までもっていったらかなりすごいと思う。
>>394
Zはオブジェクト指向でいうUMLみたいなもん?
集合論プログラミングはぐぐったけどCiNiiの論文がヒットした。
プレビュー読んでみたけどアルゴリズムを自動生成するの?
確かにすごいし理屈も通ってると思う。
これの処理系がすでにあるなら触ってみたいけど、
自分で実装しようとは思わないw。大変すぐるw。
3981
2014/09/30(火) 21:50:21.63ID:p23v2Yf3 集合論プログラミングは確かに言語の設計が根本から変わってると思う。
こういう情報が得られるだけでもスレをたてた甲斐があるというもの。
こういう情報が得られるだけでもスレをたてた甲斐があるというもの。
399デフォルトの名無しさん
2014/09/30(火) 22:19:13.15ID:ic/LPcqx >>398
わざわざスレを立てなくても 集合論 プログラミング でググればすぐ見つかるんだけど。
「発想から徹底的に集合論的思想で言語仕様を考える」と言っておきながら
その程度の検索すらしてなかったんだな。
わざわざスレを立てなくても 集合論 プログラミング でググればすぐ見つかるんだけど。
「発想から徹底的に集合論的思想で言語仕様を考える」と言っておきながら
その程度の検索すらしてなかったんだな。
401デフォルトの名無しさん
2014/09/30(火) 23:59:40.07ID:izhA5Hzv4021
2014/10/01(水) 06:02:07.09ID:0+f79Okt >>401
VDM 書いたものが実装にならない
集合論プログラミング 書いたものが実装になる
と思い込んでたからな。
どっちも書いたものが実装にならないならあんまり俺の趣味じゃないなぁ。
集合論プログラムは書いたものが実装になってもよさそうなほど
論理を詰めていたように見えたが気のせいだったか。
VDM 書いたものが実装にならない
集合論プログラミング 書いたものが実装になる
と思い込んでたからな。
どっちも書いたものが実装にならないならあんまり俺の趣味じゃないなぁ。
集合論プログラムは書いたものが実装になってもよさそうなほど
論理を詰めていたように見えたが気のせいだったか。
403デフォルトの名無しさん
2014/10/01(水) 09:03:58.23ID:Srlu7drV >>402
VDMは実行可能だ
VDMは実行可能だ
404デフォルトの名無しさん
2014/10/01(水) 11:04:19.89ID:PsfjCcq+ >>398
やっぱりアンタはセンスが良い。というかこれから何かできる人だ。
集合論プログラミングはZなんかに比べるとマイナーだが、Zより実質がある。
実装もできる。アンタが土台にするべき言語はこれじゃないかな?
検索してないとかなんとかというノイズは無視していいよ。
やっぱりアンタはセンスが良い。というかこれから何かできる人だ。
集合論プログラミングはZなんかに比べるとマイナーだが、Zより実質がある。
実装もできる。アンタが土台にするべき言語はこれじゃないかな?
検索してないとかなんとかというノイズは無視していいよ。
405デフォルトの名無しさん
2014/10/01(水) 14:56:19.11ID:BreyGGJ4 >>402
論理式を使って、プログラムに自動的に変換できそうなほど詳細な仕様を書くのは、
>緩い感じでコーディングして仕様変更があってもちょちょっとハッキングすれば
>何となく動いちゃうみたいの
とはかなり違うわな。
論理式を使って、プログラムに自動的に変換できそうなほど詳細な仕様を書くのは、
>緩い感じでコーディングして仕様変更があってもちょちょっとハッキングすれば
>何となく動いちゃうみたいの
とはかなり違うわな。
4061
2014/10/01(水) 19:43:26.77ID:0+f79Okt407デフォルトの名無しさん
2014/10/01(水) 19:49:09.29ID:OzkCABBw >>406
インタプリタで実行できる
インタプリタで実行できる
4081
2014/10/01(水) 20:28:28.86ID:0+f79Okt409デフォルトの名無しさん
2014/10/01(水) 20:39:41.94ID:OzkCABBw >>408
VDMには実行できるexplicit specと実行できないimplicit specがある。
その例は実行できないimplicit specのほう。
このリンク先のはみな実行できるexplicit spec
http://www.vdmtools.jp/doc/tips/vdmIdiom.html
VDMには実行できるexplicit specと実行できないimplicit specがある。
その例は実行できないimplicit specのほう。
このリンク先のはみな実行できるexplicit spec
http://www.vdmtools.jp/doc/tips/vdmIdiom.html
4101
2014/10/01(水) 21:57:06.59ID:0+f79Okt >>409
なんか、サンプルプログラムよんでもイメージが湧きづらい。。。
文字列操作の前後のスペースをトリミングとか何やってるのかよく分からん。
[ p | p in set inds org & org(p) <> ' ']がorgの空白でない文字のインデックスの集合で
パターンマッチでその集合の先頭と末尾を取り出してる。
sがorgの空白じゃない最初の文字のインデックスでeがorgの空白じゃない最後の文字のインデックス
でorg(s,...,e)で頭とおしりの空白を取り除いた文字列を返してるってこと?
なんか、サンプルプログラムよんでもイメージが湧きづらい。。。
文字列操作の前後のスペースをトリミングとか何やってるのかよく分からん。
[ p | p in set inds org & org(p) <> ' ']がorgの空白でない文字のインデックスの集合で
パターンマッチでその集合の先頭と末尾を取り出してる。
sがorgの空白じゃない最初の文字のインデックスでeがorgの空白じゃない最後の文字のインデックス
でorg(s,...,e)で頭とおしりの空白を取り除いた文字列を返してるってこと?
4111
2014/10/01(水) 22:21:29.56ID:0+f79Okt []は集合じゃなくて列か。
412デフォルトの名無しさん
2014/10/01(水) 23:50:12.62ID:PsfjCcq+4131
2014/10/02(木) 12:38:59.14ID:CtSzUDAx あれ?乗っ取られてる?立てただけでちょっと居なくなったすきに…
4141
2014/10/02(木) 18:33:20.87ID:McIgqFFk415デフォルトの名無しさん
2014/10/02(木) 19:01:12.47ID:J690LAeG ここって>>1となれ合うスレ化してるから、馴れ合ってる1こそが1
416デフォルトの名無しさん
2014/10/02(木) 19:52:03.79ID:sULo4gIN4171
2014/10/02(木) 20:07:14.68ID:McIgqFFk418デフォルトの名無しさん
2014/10/02(木) 20:38:47.31ID:sULo4gIN >今からトリップつけても過去のスレに対してはなんの証明にもならん
それは>>415のように考えるしかない。
それは>>415のように考えるしかない。
4201
2014/10/03(金) 20:31:44.20ID:dWJ2kSUt Rubyだとトリミングはstr.stripで一発だな。
ライブラリつかわんでもstr.gsub(/^ +/,"").gsub(/ +$/,"")でワンライナーか。
この比較がフェアかどうかは微妙だが、Rubyと比べてVDMは読むのしんどいな。
慣れてないだけかもしれんが。
ライブラリつかわんでもstr.gsub(/^ +/,"").gsub(/ +$/,"")でワンライナーか。
この比較がフェアかどうかは微妙だが、Rubyと比べてVDMは読むのしんどいな。
慣れてないだけかもしれんが。
421デフォルトの名無しさん
2014/10/03(金) 22:20:11.35ID:wImYRAo7 >>420
的外れな比較だな。
的外れな比較だな。
4221
2014/10/03(金) 22:25:06.66ID:dWJ2kSUt423デフォルトの名無しさん
2014/10/04(土) 04:41:52.82ID:TsYLxX57 で、文字列をトリミングするのが君のいう集合論ベースの言語なのかい?
425デフォルトの名無しさん
2014/10/04(土) 12:53:49.48ID:TsYLxX57 言ってることがブレブレなんだよ。
集合論から徹底的にと言ってみたり有限集合だけと言ってみたり
言語仕様だと言ってみたり便利なライブラリだと言ってみたり
美しい言語だと言ってみたり処理速度がどうのと言ってみたり
で、今度は文字列操作ユーティリティライブラリの充実度か。
結局何がしたいんだ?
集合論から徹底的にと言ってみたり有限集合だけと言ってみたり
言語仕様だと言ってみたり便利なライブラリだと言ってみたり
美しい言語だと言ってみたり処理速度がどうのと言ってみたり
で、今度は文字列操作ユーティリティライブラリの充実度か。
結局何がしたいんだ?
426デフォルトの名無しさん
2014/10/04(土) 13:00:56.11ID:by55sH8H 有限集合のみだと素朴集合論以下だしな。
427デフォルトの名無しさん
2014/10/04(土) 13:34:13.41ID:s6wyGDsN >>425
そんなに結論を急ぐのはなんでなの?
そんなに結論を急ぐのはなんでなの?
428デフォルトの名無しさん
2014/10/04(土) 14:11:28.47ID:TsYLxX57 結論どうこう以前に
こうまで毎回後だしジャンケンばかりでは
永遠にグダグダだろ
こうまで毎回後だしジャンケンばかりでは
永遠にグダグダだろ
429デフォルトの名無しさん
2014/10/04(土) 16:04:23.04ID:+NqOnrEc 個人のチラ裏にそんな文句つけてやるなよ
430デフォルトの名無しさん
2014/10/04(土) 16:08:30.01ID:aLeuItWT ID:TsYLxX57の書き込みに文句をつけるのもなしの方向で
4311
2014/10/04(土) 16:10:38.32ID:jzKUq2O9432デフォルトの名無しさん
2014/10/04(土) 16:17:38.75ID:aLeuItWT 何の教科書だよ。
集合論に基づいた言語と言うから集合論の教科書かと思ってたら
集合論の教科書は想定してなかったとか言い出すし。
集合論に基づいた言語と言うから集合論の教科書かと思ってたら
集合論の教科書は想定してなかったとか言い出すし。
434デフォルトの名無しさん
2014/10/04(土) 18:36:28.77ID:TedbKwqo zfcに基づいたプログラミング言語は理論上作成可能?
435デフォルトの名無しさん
2014/10/04(土) 19:35:13.51ID:WpG7hkwu 論理言語なんてPrologでええやん
436デフォルトの名無しさん
2014/10/04(土) 19:46:48.95ID:TsYLxX57 基づくというだけなら既存のスクリプト言語のsetクラスでも、基づいているとは言えるんじゃね?
ZFCで表現可能な全ての集合を扱える、という条件なら、無理だろ。
ZFCで表現可能な全ての集合を扱える、という条件なら、無理だろ。
437デフォルトの名無しさん
2014/10/05(日) 18:24:35.09ID:jh4sXRSC >>434
そりゃ可能だよ。既にだれか作ってたような
そりゃ可能だよ。既にだれか作ってたような
438デフォルトの名無しさん
2014/10/06(月) 01:43:06.63ID:NlMQaHfx 選択公理は無理だろ。
無限公理もキツイと思う。
無限公理もキツイと思う。
439デフォルトの名無しさん
2014/10/06(月) 12:01:11.94ID:DaOiROEZ 選択公理って、よーするに、どんな集合からでも「その要素を一つ選んで取り出す」ことができる、
とする公理でしょ。コンピュータでそれを原理として使えない理由ってある?
(本物の実数の濃度を持った集合を表現できない、とか?)
とする公理でしょ。コンピュータでそれを原理として使えない理由ってある?
(本物の実数の濃度を持った集合を表現できない、とか?)
440デフォルトの名無しさん
2014/10/06(月) 12:36:12.97ID:Fl7PIp2q 「無限集合の無限集合」をどう扱うよ?
441デフォルトの名無しさん
2014/10/06(月) 12:55:54.86ID:DaOiROEZ (ポインタで表される)一つの要素であることに変わりは無いと思うけど
442デフォルトの名無しさん
2014/10/06(月) 13:25:58.86ID:Fl7PIp2q …解らないなら解らないと正直に言えばいいのに…
443デフォルトの名無しさん
2014/10/06(月) 15:33:29.23ID:DaOiROEZ 説明できないなら(以下略
444デフォルトの名無しさん
2014/10/06(月) 15:44:15.26ID:Chlrt5UY 選択公理は選択する方法があるとは主張するけど、選択する方法を具体的に出す訳じゃないから無問題
445デフォルトの名無しさん
2014/10/06(月) 22:35:03.81ID:NlMQaHfx >439
可能無限なら扱える。実無限は無理。
>441
自然数で番号付けできているから、実数は扱えない。
>444
実数は選択できないよ。
可能無限なら扱える。実無限は無理。
>441
自然数で番号付けできているから、実数は扱えない。
>444
実数は選択できないよ。
446デフォルトの名無しさん
2014/10/06(月) 22:39:52.81ID:DaOiROEZ 哲学屋が語る論理の本で勉強したなw
448デフォルトの名無しさん
2014/10/07(火) 00:54:44.71ID:EYnjWx9Z スレタイに釣られるとそうなるよ
449デフォルトの名無しさん
2014/10/07(火) 05:00:08.90ID:p/BL+CDX DaOiROEZの半可通っぷりが最高w
450デフォルトの名無しさん
2014/10/07(火) 10:56:48.49ID:+SCn7tHo ZFの範疇でさえ消化できてないのに、実無限なんて飛躍しすぎ。
451デフォルトの名無しさん
2014/10/07(火) 11:06:53.72ID:SMQvkaFY どうせなら、量子コンピューターで使う言語にまでにして欲しいな。
4521
2014/10/07(火) 21:14:56.86ID:QnZoLRl/ 量子コンピュータってまだ有効なアルゴリズムが2つ3つしか発見されてないんじゃなかったけ。
453デフォルトの名無しさん
2014/10/07(火) 21:30:05.48ID:waP9/Nh6 量子状態を集合的に扱うと便利。
454デフォルトの名無しさん
2014/10/07(火) 21:41:15.48ID:9NXt3xp/ >450
少ない公理だけでやるんだったらProlog (HornCNF) で十分だと思う。
というかPrologがろくに検討されていないのはなぜ?
少ない公理だけでやるんだったらProlog (HornCNF) で十分だと思う。
というかPrologがろくに検討されていないのはなぜ?
4551
2014/10/07(火) 22:20:49.79ID:QnZoLRl/ Prologもやってみる価値あり?
456デフォルトの名無しさん
2014/10/08(水) 04:21:45.13ID:prFbm0Ro 公理論ベースのプログラミング言語というのにPrologを検討してないとか意味わからなすぎ
457デフォルトの名無しさん
2014/10/08(水) 11:09:43.78ID:OludtdBn 単なる述語論理じゃないか。
458デフォルトの名無しさん
2014/10/08(水) 12:20:34.72ID:dWGNDTcI >>1ってそもそも集合論、公理的集合論を系統的に学んだこと無いだろ?
459デフォルトの名無しさん
2014/10/08(水) 12:47:37.54ID:h0nYZNts 既存の言語に有限集合演算を追加するところから始めれ。
クソスレが一個増えただけで終わる前に。
クソスレが一個増えただけで終わる前に。
460デフォルトの名無しさん
2014/10/08(水) 18:43:36.24ID:UKHmkXIf ここは元々>>1の勉強スレ
4611
2014/10/08(水) 18:47:59.90ID:hP0aEtf7462デフォルトの名無しさん
2014/10/08(水) 20:19:42.08ID:rTFjlrrq 1が今まで読んできた教科書教えて
4631
2014/10/08(水) 20:46:16.58ID:hP0aEtf7464デフォルトの名無しさん
2014/10/08(水) 22:26:27.29ID:rTFjlrrq じゃあ個人情報が漏れない程度の大雑把さで何を学んできたか教えて
4651
2014/10/08(水) 22:32:55.73ID:hP0aEtf7 そんな漠然としたこと聞かれても。
まあ、情報系の学部出身だよ。
まあ、情報系の学部出身だよ。
466デフォルトの名無しさん
2014/10/08(水) 23:00:13.01ID:TzLBQJ9w 人生……かな
467デフォルトの名無しさん
2014/10/08(水) 23:04:08.42ID:rTFjlrrq >>59を見てどの程度の知識があるのか気になったのよ
数学科ではないのね
数学科ではないのね
4681
2014/10/08(水) 23:24:26.28ID:hP0aEtf7 数学科ではないな。
まあ、俺は数学ガチ勢ではないってことで。
まあ、俺は数学ガチ勢ではないってことで。
469デフォルトの名無しさん
2014/10/08(水) 23:51:56.29ID:TxL/GihU >>465
それにしてはレベルが低いな。
それにしてはレベルが低いな。
470デフォルトの名無しさん
2014/10/09(木) 14:59:21.86ID:+VtBJxY5 >スクリプト言語でありながら、速度も求めた Julia という言語。
> Julia は科学技術計算向けだが、汎用的な用途にも使える。
http://julialang.org/
集合論とはちょっと違うが、こういう言語を作るのって、プログラミングとはまた別の頭の良さが必要なんだろうなあ・・・
> Julia は科学技術計算向けだが、汎用的な用途にも使える。
http://julialang.org/
集合論とはちょっと違うが、こういう言語を作るのって、プログラミングとはまた別の頭の良さが必要なんだろうなあ・・・
471デフォルトの名無しさん
2014/10/09(木) 18:53:47.65ID:0qGZB94E >>463
こんなの学部一、二年だろ?
http://www.amazon.co.jp/Constraint-Logic-Programming-Selected-Research/dp/0262023539
こういうの読みなよ。
こんなの学部一、二年だろ?
http://www.amazon.co.jp/Constraint-Logic-Programming-Selected-Research/dp/0262023539
こういうの読みなよ。
472デフォルトの名無しさん
2014/10/09(木) 19:18:35.22ID:tOThY/oR constraint logic programming‥
メジャーなもののなかで一番近い言語はなんですか
メジャーなもののなかで一番近い言語はなんですか
473デフォルトの名無しさん
2014/10/09(木) 19:25:16.95ID:0qGZB94E4741
2014/10/09(木) 20:10:14.35ID:o/OZDU1F475デフォルトの名無しさん
2014/10/11(土) 12:51:05.92ID:8yVA6sZ1 この板でハッとさせられるような事言う奴滅多にいないんだよな。
たまに居ると思ったら5年前の自分の書き込みだったw
たまに居ると思ったら5年前の自分の書き込みだったw
476デフォルトの名無しさん
2014/10/11(土) 13:27:28.71ID:77jPKn4U >>475
つまり、おまえは5年間進歩してないんだな。
つまり、おまえは5年間進歩してないんだな。
477デフォルトの名無しさん
2014/10/11(土) 15:22:20.55ID:zm2pT6ST とっくに出てると思うけど、SQLがまさに集合論をベースとしてる
今ではC#がLINQという名前で取り込んでるな
今ではC#がLINQという名前で取り込んでるな
478デフォルトの名無しさん
2014/10/11(土) 16:17:13.48ID:dB8AJmwd それは集合論ではない。
集合や集合演算を扱えるだけ。
集合や集合演算を扱えるだけ。
479デフォルトの名無しさん
2014/10/11(土) 17:10:54.15ID:LAagPdIX >>477
それSQLじゃなくてRDBシステムが集合論つかってるってことじゃないのか?
それSQLじゃなくてRDBシステムが集合論つかってるってことじゃないのか?
480デフォルトの名無しさん
2014/10/11(土) 18:08:16.60ID:F3plGA7W 集合操作だから集合論とか言うの止めてくれないか
481デフォルトの名無しさん
2014/10/11(土) 20:16:24.89ID:77jPKn4U SQLは集合論つーより代数論だ。
482デフォルトの名無しさん
2014/10/11(土) 20:16:36.33ID:oD37Hh5X 別に素朴集合論に単純な型を付けたようなもので普通に用は足りるだろ。
公理的集合論だからといって現実的には何かできることが増えるわけじゃないぞ。
単に数学の基礎を議論する時に必要というだけで。
公理的集合論だからといって現実的には何かできることが増えるわけじゃないぞ。
単に数学の基礎を議論する時に必要というだけで。
483デフォルトの名無しさん
2014/10/11(土) 20:18:28.72ID:77jPKn4U >>482
その程度のものなら既存で腐る程あるだろ、って話を何度ループすれば気が済むんだ?
その程度のものなら既存で腐る程あるだろ、って話を何度ループすれば気が済むんだ?
484デフォルトの名無しさん
2014/10/11(土) 22:48:51.28ID:oD37Hh5X で、集合論に何を夢見てるんだ?
485デフォルトの名無しさん
2014/10/12(日) 00:31:12.35ID:xA+0V9C8 素朴集合論ってカントールの集合論のことだぞ。
中学生が習うやつじゃないぞ。
中学生が習うやつじゃないぞ。
486デフォルトの名無しさん
2014/10/12(日) 02:13:46.33ID:UDZcvZvs カントンが手術したらモテモテになると勘違いしている様>>1
487デフォルトの名無しさん
2014/10/12(日) 20:49:20.54ID:MyToBo/B だから「単純な型を付けたようなもの」って言ってるだろ。
その意味がわかってない?
その意味がわかってない?
488デフォルトの名無しさん
2014/10/12(日) 20:55:04.62ID:g8Gog7KJ お前が分かってない。
489デフォルトの名無しさん
2014/10/12(日) 21:08:23.19ID:Sn9uUxXA なんとなくだけど、結論を急いで、できないとか意味がないとか言って、一切の建設的な意見を出さず、妨害だけする人って居るよね?
490デフォルトの名無しさん
2014/10/12(日) 21:17:15.44ID:g1iKtf1h そりゃこの広い世界のどこかにはそういう人も居るかもしれないね
491デフォルトの名無しさん
2014/10/12(日) 21:35:02.06ID:xA+0V9C8 素朴集合論に型を付けたらうまくいくんじゃね?
とやってみたら恐ろしく複雑で不自由になったのがフレーゲのタイプ理論。
その後100年近く塩漬け状態。
それなら集合とクラスの二つだけに分けて、後はあまり強く型付けしなければ、
カントールの楽園から追放されないんじゃね?
というのがツェルメロの公理的集合論。
集合論、集合論と言っている人は、
無限公理や正則性公理を積極的に言語で使うつもりがあるのかな?
↓必要なのはここまでなんじゃないのかな。
http://ja.wikipedia.org/wiki/%E9%9B%86%E5%90%88%E3%81%AE%E4%BB%A3%E6%95%B0%E5%AD%A6
とやってみたら恐ろしく複雑で不自由になったのがフレーゲのタイプ理論。
その後100年近く塩漬け状態。
それなら集合とクラスの二つだけに分けて、後はあまり強く型付けしなければ、
カントールの楽園から追放されないんじゃね?
というのがツェルメロの公理的集合論。
集合論、集合論と言っている人は、
無限公理や正則性公理を積極的に言語で使うつもりがあるのかな?
↓必要なのはここまでなんじゃないのかな。
http://ja.wikipedia.org/wiki/%E9%9B%86%E5%90%88%E3%81%AE%E4%BB%A3%E6%95%B0%E5%AD%A6
492デフォルトの名無しさん
2014/10/12(日) 22:31:37.21ID:NJmCyxXF >>489
どのレス?
どのレス?
493デフォルトの名無しさん
2014/10/12(日) 22:35:38.76ID:A+IMFSgX S Set
T Theory
P Programming
Aはどうしよう。
T Theory
P Programming
Aはどうしよう。
494デフォルトの名無しさん
2014/10/12(日) 22:38:10.76ID:Km5KyqRm advanced
application
applied
application
applied
495デフォルトの名無しさん
2014/10/12(日) 22:44:43.09ID:Km5KyqRm the set theory applied programming (STAP) language
略してSTAP言語
略してSTAP言語
496デフォルトの名無しさん
2014/10/13(月) 00:27:06.12ID:ivWOljm1 で、できたの?
497デフォルトの名無しさん
2014/10/13(月) 00:34:39.55ID:hWTf/9FL 200回ぐらい。
498デフォルトの名無しさん
2014/10/13(月) 05:17:51.25ID:zgXTsI5w >>489
既存研究のサーベイが皆無なバカが悪い
既存研究のサーベイが皆無なバカが悪い
499デフォルトの名無しさん
2014/10/13(月) 09:30:42.66ID:7i+sJhXA >>496
ありま〜す
ありま〜す
500デフォルトの名無しさん
2014/10/13(月) 17:01:25.51ID:6ak88RQb 1.動機
2.仕様
3.実装
と進む。前段階へのフィードバックもある。
まだ1.の整理がつけられてない状況。
2.仕様
3.実装
と進む。前段階へのフィードバックもある。
まだ1.の整理がつけられてない状況。
501デフォルトの名無しさん
2014/10/13(月) 18:07:14.67ID:UPM0IlOC まずどんな出力を得たいかを書く
次にそれを得るのに入力に何が必要かを書く
これで仕様決めまで終わるよね
入出力が決まってれば実装手段なんて何でもいい
次にそれを得るのに入力に何が必要かを書く
これで仕様決めまで終わるよね
入出力が決まってれば実装手段なんて何でもいい
503デフォルトの名無しさん
2014/10/13(月) 20:12:54.48ID:EYFsbw6u オブジェクトは全て集合で
ペアノの公理を入力したらそれに則って足し算ができるようになる言語は
どうかな?
ペアノの公理を入力したらそれに則って足し算ができるようになる言語は
どうかな?
504デフォルトの名無しさん
2014/10/13(月) 20:22:39.44ID:5XmBCMSV 足し算しかないのはプレスバーガー算術といって、完全理論だよ
(どの命題も肯定か否定かどちらか一方が証明可能って意味)
足し算とかけ算の混じったペアノ算術は不完全理論だけど
(どの命題も肯定か否定かどちらか一方が証明可能って意味)
足し算とかけ算の混じったペアノ算術は不完全理論だけど
505デフォルトの名無しさん
2014/10/13(月) 22:25:59.32ID:6ak88RQb >>503
ノイマンの自然数の構成も必要だぞ。
ノイマンの自然数の構成も必要だぞ。
506デフォルトの名無しさん
2014/10/14(火) 09:11:24.51ID:0Ml7fYIK 集合への四則演算は濃度に変化無しだよな?
即ち、四則演算はしなくていいって事。
即ち、四則演算はしなくていいって事。
507デフォルトの名無しさん
2014/10/14(火) 13:04:54.64ID:vbP2sDzC 濃度を増やすことが目的じゃなくて
計算結果を求めるのが目的だろうが
計算結果を求めるのが目的だろうが
508デフォルトの名無しさん
2014/10/14(火) 14:33:07.44ID:zPTDiwn8509デフォルトの名無しさん
2014/10/14(火) 17:47:21.71ID:+5iJxgCE 外野として面白く見守ってるだけでいうのもアレだけど
具体的に章末問題をひとつ持ってきて「これをこう書きたい」っていうのがみたい!
1さんだけじゃなくてここに居る皆さんで「こう書いたら気持ちよさそう〜」とかでいいからサ
具体的に章末問題をひとつ持ってきて「これをこう書きたい」っていうのがみたい!
1さんだけじゃなくてここに居る皆さんで「こう書いたら気持ちよさそう〜」とかでいいからサ
510デフォルトの名無しさん
2014/10/14(火) 19:09:39.61ID:bR6+1Vd4 0=φ
1={φ}
2={φ{φ}}
3={φ{φ}{φ{φ}}}
4={φ{φ}{φ{φ}}{φ{φ}{φ{φ}}}}
は良いとして、このノイマンの表現法で通常の4則演算ってどういう意味があるの?
2+2=4 ってこの右側の集合の記法でどうやってでてくるんだ??
1={φ}
2={φ{φ}}
3={φ{φ}{φ{φ}}}
4={φ{φ}{φ{φ}}{φ{φ}{φ{φ}}}}
は良いとして、このノイマンの表現法で通常の4則演算ってどういう意味があるの?
2+2=4 ってこの右側の集合の記法でどうやってでてくるんだ??
511デフォルトの名無しさん
2014/10/14(火) 20:03:06.07ID:ehQP27NF ラムダ ペアノ でググれ
512デフォルトの名無しさん
2014/10/14(火) 20:40:10.02ID:bR6+1Vd4 >>511
ラムダとペアノの奴っていうのは
後者関数と射影関数を使って原始帰納法から原始帰納的関数を定義する方法で
加算を定義するというものと内容的に同値だろうから、
この自然数を包含関係で表現してみた集合に対する演算の定義とは違わないか?
ラムダとペアノの奴っていうのは
後者関数と射影関数を使って原始帰納法から原始帰納的関数を定義する方法で
加算を定義するというものと内容的に同値だろうから、
この自然数を包含関係で表現してみた集合に対する演算の定義とは違わないか?
513デフォルトの名無しさん
2014/10/15(水) 07:50:36.68ID:xIPL4/1H >>510
それはまず
0:=φ
succ(x):=x∪{x}
があって、そこから
1:=succ(0)=φ∪{φ}={φ}
2:=succ(1)={φ}∪{{φ}}={φ∪{φ}}
…
と順に定義していくから
結局はペアノの焼き直しに過ぎない
それはまず
0:=φ
succ(x):=x∪{x}
があって、そこから
1:=succ(0)=φ∪{φ}={φ}
2:=succ(1)={φ}∪{{φ}}={φ∪{φ}}
…
と順に定義していくから
結局はペアノの焼き直しに過ぎない
514デフォルトの名無しさん
2014/10/16(木) 00:40:06.63ID:txhx6QUq515デフォルトの名無しさん
2014/10/17(金) 13:53:23.37ID:dWEICMsc >>511
ノイマンの集合モデルとチャーチのラムダ式モデル(チャーチ数)は、ペアノの自然数の別のモデル。
ノイマンの集合モデルとチャーチのラムダ式モデル(チャーチ数)は、ペアノの自然数の別のモデル。
517デフォルトの名無しさん
2014/10/17(金) 22:55:41.78ID:ZbpwpO5Z5181
2014/10/17(金) 23:03:16.81ID:XLlp2k/U まためんどくさそうな問題を。。。
海岸線のデータは多角形で与えられるの?
入力データ作るだけもでかなり面倒だなぁ。
海岸線のデータは多角形で与えられるの?
入力データ作るだけもでかなり面倒だなぁ。
5191
2014/10/17(金) 23:20:00.94ID:XLlp2k/U できれば100ステップくらいで実装できるの希望。
5201
2014/10/17(金) 23:30:05.44ID:XLlp2k/U 垂直二等分線がカギになるのかな。
どっちにしろむずかしすぎ。
どっちにしろむずかしすぎ。
521デフォルトの名無しさん
2014/10/17(金) 23:53:33.32ID:Dp+Vl0QI 関数型言語(笑)でいいと思うよ
522デフォルトの名無しさん
2014/10/18(土) 00:33:49.53ID:8XT1TYTP5231
2014/10/18(土) 09:56:05.69ID:JlR7w5XX524デフォルトの名無しさん
2014/10/18(土) 12:22:35.42ID:/oNwCDSd >>517
実際のデータをおいている場所をご存知のかたはおられませんか?
実際のデータをおいている場所をご存知のかたはおられませんか?
525デフォルトの名無しさん
2014/10/18(土) 14:38:07.57ID:8EPYxHvD >>523
(まだ手元にある>>463)教科書や扱いたい問題を「いくつか具体的に」示せ、
言語仕様も叩き台になるものを示せ、
1がそうしたことすらやらないんじゃどうしようもない、
ってことだろうに。
http://www.weblio.jp/content/%E3%81%9F%E3%81%9F%E3%81%8D%E3%81%A0%E3%81%84
(まだ手元にある>>463)教科書や扱いたい問題を「いくつか具体的に」示せ、
言語仕様も叩き台になるものを示せ、
1がそうしたことすらやらないんじゃどうしようもない、
ってことだろうに。
http://www.weblio.jp/content/%E3%81%9F%E3%81%9F%E3%81%8D%E3%81%A0%E3%81%84
526デフォルトの名無しさん
2014/10/18(土) 14:48:23.34ID:MO+ZAloR5271
2014/10/18(土) 19:42:31.60ID:JlR7w5XX528デフォルトの名無しさん
2014/10/18(土) 21:20:22.32ID:zBDuzTiF5291
2014/10/18(土) 21:42:25.30ID:JlR7w5XX >>528
ケチつけるというか、難易度が半端ないんだが。
もうちょっとお手軽に楽しめるお題を期待していた。
それと本からじゃないけど暇つぶしに一個出題。
一本の紐がありこれを次の操作を9回繰り返して切断する。
操作「今ある紐の断片からランダムに一つ選択し三等分する。」
この操作を行った後、紐の断片をランダムに2つ選択する。
2つの断片の長さが等しい確率を求めよ。
※未解決な問題
操作をn回行った後断片をランダムに2つ選択したとき長さが等しい確率をp(n)とおく。
lim[n→∞]p(n)はいくつになるか。
ケチつけるというか、難易度が半端ないんだが。
もうちょっとお手軽に楽しめるお題を期待していた。
それと本からじゃないけど暇つぶしに一個出題。
一本の紐がありこれを次の操作を9回繰り返して切断する。
操作「今ある紐の断片からランダムに一つ選択し三等分する。」
この操作を行った後、紐の断片をランダムに2つ選択する。
2つの断片の長さが等しい確率を求めよ。
※未解決な問題
操作をn回行った後断片をランダムに2つ選択したとき長さが等しい確率をp(n)とおく。
lim[n→∞]p(n)はいくつになるか。
530デフォルトの名無しさん
2014/10/18(土) 22:05:05.10ID:nO1Wa2kk これに計算機必要なの?
532デフォルトの名無しさん
2014/10/18(土) 23:08:22.47ID:e6RQ0dr6534デフォルトの名無しさん
2014/10/19(日) 09:37:05.49ID:29Wx6lEI あらら。
集合論関係無く、集合操作したかったってことでしょ?
で、聞いてみたら既にいろんな言語(ライブラリ)が存在したと。
集合論関係無く、集合操作したかったってことでしょ?
で、聞いてみたら既にいろんな言語(ライブラリ)が存在したと。
536デフォルトの名無しさん
2014/10/19(日) 17:46:26.61ID:SfAoaW7H5371
2014/10/19(日) 19:25:17.13ID:juftpz1M5381
2014/10/19(日) 19:29:53.16ID:juftpz1M あれ、文字化けしてんなぁ。
ニムゲームね。
ニムゲームね。
5391
2014/10/19(日) 21:14:49.94ID:juftpz1M ちなみに>>529の問題はRubyで689byteで実装できた。
もっと短くかける言語があるよ!という人がいたら教えて。
もっと短くかける言語があるよ!という人がいたら教えて。
540デフォルトの名無しさん
2014/10/19(日) 21:24:53.85ID:CFixaMQx >>537
まだ手元にある離散数学やアルゴリズムの教科書を何冊か挙げる程度のことすらしないのはなぜ?
まだ手元にある離散数学やアルゴリズムの教科書を何冊か挙げる程度のことすらしないのはなぜ?
5411
2014/10/19(日) 21:38:28.27ID:juftpz1M542デフォルトの名無しさん
2014/10/19(日) 22:07:12.36ID:C9CvfGxs 教科書捨てる奴ってw 学術的な研究はとっとと諦めた方がいい。向いてない。
543デフォルトの名無しさん
2014/10/19(日) 22:15:08.20ID:lrejmkiS >>541
「あんまり」じゃなくて「一冊しか」だろ。
「あんまり」じゃなくて「一冊しか」だろ。
545デフォルトの名無しさん
2014/10/19(日) 22:28:38.99ID:N1Fbmuag547デフォルトの名無しさん
2014/10/20(月) 09:04:25.01ID:jBlrymD4 >>533
> このスレは基本雑談ってことで。
君は軽い気持ちで立てたスレかもしれないが、多くの住民はム板にクソスレを立てるべきではないと感じている。
だから君への風当たりが強いのである。
雑談なら雑談スレやブログやVIPでやればよい。まあ、このスレを使い切った後にな。
> このスレは基本雑談ってことで。
君は軽い気持ちで立てたスレかもしれないが、多くの住民はム板にクソスレを立てるべきではないと感じている。
だから君への風当たりが強いのである。
雑談なら雑談スレやブログやVIPでやればよい。まあ、このスレを使い切った後にな。
548デフォルトの名無しさん
2014/10/20(月) 10:17:53.34ID:UiYQrarC だから、巡回セールスマン問題とかの為に、量子コンピューター用の言語にすればいいのに。
549デフォルトの名無しさん
2014/10/20(月) 12:52:46.72ID:C1FZ+AtI とりあえず圏論を学習してからにしてくれ
550デフォルトの名無しさん
2014/10/20(月) 18:45:10.40ID:9HS8Ctp3 >>546
で、結局何がしたいの?後出しジャンケンがしたかっただけ?
で、結局何がしたいの?後出しジャンケンがしたかっただけ?
5511
2014/10/20(月) 19:25:51.34ID:TfUqLiTt552デフォルトの名無しさん
2014/10/20(月) 20:21:35.78ID:4bxYYw/L 教科書捨てるくらいだから頭の中空なんだろ。アイディアもない。
普通ならアホなアイティアで収拾つかなくなってなきゃいけない。
そういうカオスが偶然ぷよぷよみたいに連鎖して新しい発想になる。
才能無い人が努力やコミュ力で才能ある人を打ち負かすっていう
根性論はもう見飽きた。
普通ならアホなアイティアで収拾つかなくなってなきゃいけない。
そういうカオスが偶然ぷよぷよみたいに連鎖して新しい発想になる。
才能無い人が努力やコミュ力で才能ある人を打ち負かすっていう
根性論はもう見飽きた。
5531
2014/10/20(月) 20:43:37.79ID:TfUqLiTt >才能無い人が努力やコミュ力で才能ある人を打ち負かすっていう
アニメかなんかか?
アニメかなんかか?
554デフォルトの名無しさん
2014/10/20(月) 20:58:59.44ID:4bxYYw/L デスマーチとかやってるのは才能ないやつ(納期ギリギリまで上流工程やってる上司+素人同然のコーダー)を寄せ集めてやってるからだと思う。
だから デスマーチ=根性論 と思っている。断っておくが、アニメの話でもある。
だから デスマーチ=根性論 と思っている。断っておくが、アニメの話でもある。
5551
2014/10/20(月) 22:04:32.06ID:TfUqLiTt なぜに突然デスマーチ?
カオスだ偶然だで新しい発想は出ないと思うぞ。
根性からはでるかもしれんが。
まあ、新しいものってのはセオリーに裏打ちされてるもんだよ大抵。
カオスだ偶然だで新しい発想は出ないと思うぞ。
根性からはでるかもしれんが。
まあ、新しいものってのはセオリーに裏打ちされてるもんだよ大抵。
556デフォルトの名無しさん
2014/10/20(月) 22:15:50.47ID:4bxYYw/L ある世界Aには学術体系、理論体系が構築されている。
もう一つの世界Bがゴチャゴチャのカオスだとする。
AとBの間には写像のように紐付けがされている。
発想は世界Bから生まれる。
世界Bが空なのが1だ。
もう一つの世界Bがゴチャゴチャのカオスだとする。
AとBの間には写像のように紐付けがされている。
発想は世界Bから生まれる。
世界Bが空なのが1だ。
558デフォルトの名無しさん
2014/10/20(月) 23:17:33.77ID:4bxYYw/L559デフォルトの名無しさん
2014/10/21(火) 04:55:39.53ID:55M9GoPd >>551
クレクレ言うから条件に合いそうなものを提供すると、
別の条件を出してソレジャナイと言う。
かといって、自分から何かを提供するわけでもない。
ひたすらクレクレ言い続けて、ソレジャナイと返し続ける。
そういうのを後出しジャンケンと言う。
クレクレ言うから条件に合いそうなものを提供すると、
別の条件を出してソレジャナイと言う。
かといって、自分から何かを提供するわけでもない。
ひたすらクレクレ言い続けて、ソレジャナイと返し続ける。
そういうのを後出しジャンケンと言う。
560デフォルトの名無しさん
2014/10/21(火) 05:07:05.92ID:rC2hZRaT 後出しかぁ
どうせなら中出しの方がいいな
どうせなら中出しの方がいいな
561デフォルトの名無しさん
2014/10/21(火) 08:21:27.32ID:7wZlZLdP ジャンケンドピュッ
562デフォルトの名無しさん
2014/10/21(火) 11:02:34.86ID:yoqXS5RA このチラ裏まだやってたのか
まだ見限ってない人がいるんだな
まだ見限ってない人がいるんだな
563デフォルトの名無しさん
2014/10/21(火) 14:21:29.74ID:3SFXCOz9 >>559
本当にそれのくりかえしだもんな。
本当にそれのくりかえしだもんな。
5641
2014/10/21(火) 19:14:06.10ID:+255aWxA565片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/21(火) 20:10:33.19ID:tyo0JEbH566デフォルトの名無しさん
2014/10/21(火) 20:13:11.64ID:rAN/sZsH 後出しジャンケン継続宣言w
568片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/21(火) 20:46:47.47ID:tyo0JEbH >>1は、大学か独学でコンパイラやスクリプト言語の作り方の勉強をしたのかね?
570片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/21(火) 21:08:49.12ID:tyo0JEbH 新しく言語を作るなら、バックエンドはGCC系、LLVM系、他言語変換系(Java,JS,C,C++)のいずれかが妥当だろうな。
571片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/21(火) 21:21:00.17ID:tyo0JEbH GCCで作るなら、GDCのソースを読むべし。
GDC (D Programming Language for GCC)
GDC (D Programming Language for GCC)
572片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/21(火) 21:27:37.89ID:tyo0JEbH 言語変換で作るなら、Pascal⇔C変換プログラムのソースを読むべし。
5731
2014/10/21(火) 21:28:12.21ID:+255aWxA LLVMとか多分無理。
他言語変換系がいいかな。
個人的にはRubyが好みなんだが。
他言語変換系がいいかな。
個人的にはRubyが好みなんだが。
574片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/10/21(火) 21:57:41.40ID:tyo0JEbH Ruby上で推論・数式処理・計算をする実行時モジュール作ればいいんじゃね?
5751
2014/10/21(火) 22:36:26.49ID:+255aWxA なぜに突然、推論、数式処理がでてくるのかわからんが。
わざと面倒くさそうなの持ってきてない?
わざと面倒くさそうなの持ってきてない?
576デフォルトの名無しさん
2014/10/22(水) 05:45:57.21ID:wja3nREO 集合論扱うのに必須だからだろ
577デフォルトの名無しさん
2014/10/22(水) 05:48:31.37ID:wja3nREO ルビ厨ってこんなんばっかり
威勢のいいこと言うだけで自分は何もしない
他人や他言語の成果に乗っかるだけ
威勢のいいこと言うだけで自分は何もしない
他人や他言語の成果に乗っかるだけ
578デフォルトの名無しさん
2014/10/22(水) 15:09:01.24ID:WTBQKchq Rubyまでとばっちりw
579デフォルトの名無しさん
2014/10/22(水) 18:30:22.20ID:kKncjr9Q580デフォルトの名無しさん
2014/10/22(水) 19:56:19.33ID:fCfdG1e1 >>517
二つの海岸線を曲線L1, L2とおいた時に、あるp(x,y)∈L1と曲線L2との中間点を
pとpを通る傾き-dx/dyの直線lとL2との交点との間にひかれる線分の中点とすると、
二つの海岸線の中間線はこの中点を集めたものになる?
二つの海岸線を曲線L1, L2とおいた時に、あるp(x,y)∈L1と曲線L2との中間点を
pとpを通る傾き-dx/dyの直線lとL2との交点との間にひかれる線分の中点とすると、
二つの海岸線の中間線はこの中点を集めたものになる?
581デフォルトの名無しさん
2014/10/22(水) 22:36:02.17ID:iNJY0L1E 設問の矛盾が問題ややこしくしているだけ。
その矛盾とは湾だ。湾を除外すれば簡単になる←このへんの要領の良さが仕事では重要。
まず陸地に外接する凹みのない多角形を生成すればいい。
次に各国の外接多角形どうしから等距離の点の軌道を求めればよい。
その矛盾とは湾だ。湾を除外すれば簡単になる←このへんの要領の良さが仕事では重要。
まず陸地に外接する凹みのない多角形を生成すればいい。
次に各国の外接多角形どうしから等距離の点の軌道を求めればよい。
582デフォルトの名無しさん
2014/10/22(水) 22:41:47.09ID:iNJY0L1E 国Aの外接多角形上の点を定めれば、そこから国Bへの最短距離の線分が定まる。その中間点は明らかに
国Bから同様の手順で求めた中間点と同じだ。だからその軌道で中間線は定まる。
国Bから同様の手順で求めた中間点と同じだ。だからその軌道で中間線は定まる。
583デフォルトの名無しさん
2014/10/22(水) 22:49:57.00ID:iNJY0L1E なお凸な外接多角形を用いない場合、中間線は定まらない。
584デフォルトの名無しさん
2014/10/22(水) 23:34:03.55ID:iNJY0L1E 設問(仕事における設計)を改変したことで怒られることはありえるので、アホ設計者に相談するのが先決である。
585デフォルトの名無しさん
2014/10/22(水) 23:58:12.26ID:iNJY0L1E 定まらなくもないか、凹の部分の曲率が、相手国から引いた最短距離を半径とする円より小さいならば定まる。
586デフォルトの名無しさん
2014/10/23(木) 01:20:06.15ID:mtwqOq23 ああそっか、最短距離でいいのか…いらんこと考えて複雑にしてたthx
http://pastebin.com/LqkjJc5k
http://pastebin.com/LqkjJc5k
587デフォルトの名無しさん
2014/10/23(木) 01:51:05.76ID:B12M++5h 何がムカつくって、>1が何もするつもりが無さそうなのに成果だけクレクレ言っているところだよな。
>1はPrologについて調査したのか?
>1はPrologについて調査したのか?
588デフォルトの名無しさん
2014/10/23(木) 02:14:57.76ID:TE8bWo7Y 最短距離じゃない。線分とそれを微小移動させた線分とが作る平行四辺形の密度が全海域に渡って一定となるように微小移動(速度関数)を決めればいいのか。
微分積分の問題。
微分積分の問題。
589デフォルトの名無しさん
2014/10/23(木) 02:16:30.21ID:TE8bWo7Y 平行四辺形じゃなくて四角形 ,ねじれて2つの三角形になることもある。
590デフォルトの名無しさん
2014/10/23(木) 02:20:07.97ID:TE8bWo7Y ねじれて2つの三角形になることもある→ない。
591デフォルトの名無しさん
2014/10/23(木) 04:45:24.37ID:xJ2edcK8 で、それのどこが集合論?
592デフォルトの名無しさん
2014/10/23(木) 04:46:42.26ID:dXJn7cDs ID:TE8bWo7Y は病気なんです。何も言わずにNGして下さい
593デフォルトの名無しさん
2014/10/23(木) 09:00:17.01ID:xLBbOXbP >>588
別に海岸線上の点を連続的に動かす必要ないでしょ
一般に距離空間において点Pから集合A,Bまでの距離をそれぞれd(P,A),d(P,B)とおくと
これらは連続関数になるからd(P,A)=d(P,B)を満たす点Pの集合を求めりゃいいだけ
別に海岸線上の点を連続的に動かす必要ないでしょ
一般に距離空間において点Pから集合A,Bまでの距離をそれぞれd(P,A),d(P,B)とおくと
これらは連続関数になるからd(P,A)=d(P,B)を満たす点Pの集合を求めりゃいいだけ
594デフォルトの名無しさん
2014/10/23(木) 12:20:33.04ID:TE8bWo7Y 海岸線を微分するためには連続関数にしなければならない。
そのためにはまずB-spline曲線近似する必要がある。
プロットした点を除外し再計算することでB-splineから湾を除去することもできる。
このように海岸線をパラメトリック曲線で表すことにより
パラメータの範囲を求めることができる。
どのように求めるかというと2つのパラメトリック曲線上の点が
2つの海岸線の共通の接線となる値を求め、それの最大と最小を求めればいいのだ。
これにより分割すべき海域が求まる。
次に海域を等密度で並ぶ線を求めることを考える。
そのためにはまずB-spline曲線近似する必要がある。
プロットした点を除外し再計算することでB-splineから湾を除去することもできる。
このように海岸線をパラメトリック曲線で表すことにより
パラメータの範囲を求めることができる。
どのように求めるかというと2つのパラメトリック曲線上の点が
2つの海岸線の共通の接線となる値を求め、それの最大と最小を求めればいいのだ。
これにより分割すべき海域が求まる。
次に海域を等密度で並ぶ線を求めることを考える。
595デフォルトの名無しさん
2014/10/23(木) 12:25:21.29ID:TE8bWo7Y 訂正;2つのパラメトリック曲線上の点が→2つのパラメトリック曲線上の点を通る線が
596デフォルトの名無しさん
2014/10/23(木) 12:40:29.47ID:TE8bWo7Y そんなことしなくてもいいか。
2つのB-spline曲線上の点を結ぶ線分で、他の箇所と交わらないようにパラメータの最大と最小を求めればいい。
2つのB-spline曲線上の点を結ぶ線分で、他の箇所と交わらないようにパラメータの最大と最小を求めればいい。
5971
2014/10/23(木) 18:46:19.11ID:gc7yGcGD598デフォルトの名無しさん
2014/10/23(木) 19:35:25.06ID:xJ2edcK8 B-spline以外にもC1連続な曲線なんていくらでもあるだろ
599デフォルトの名無しさん
2014/10/23(木) 19:39:22.10ID:TE8bWo7Y さて2つのB-spline曲線をF(t),G(t) とする。
2つの曲線上の点を結ぶ大陸間横断線分が海域を等密度で並ぶようにし,F,G間の関係式を求めてみよう。
まずその線分が微小移動したときにできる細い四角形の面積を求める。
2つのベクトルのなす三角形の面積の外積公式より
A=(1/2)*|ΔF×L|
B=(1/2)*|ΔG×(-L)| (面積が負にならないようにベクトルの向きを逆にするといい)
A+Bが細い四角形の面積であり、これを大陸間横断線分の長さ|L|で割ったものを密度と定義し一定であればよい。
なおLは大陸間横断線分のベクトルであり、後に積分するので移動前と移動後とは近似できる。
(A+B)/|L|=C ただしCは定数
A+B=C*|L|と変形し両辺積分する。積分範囲は上記ですでに求めてある。
∫Adt+∫Bdt=曲線の長さの関数の定数倍=c(t)
F(t)=F(Fx(t),Fy(t)),G(t)=G(Gx(t),Gy(t))とすると
c(t)=∫(Fx'*(Gy-Fy)-Fy'*(Gx-Fx))dt-∫(Gx'*(Gy-Fy)-Gy'*(Gx-Fx))dt
c(t)=∫(Fx'-Gx')*(Gy-Fy)dt + ∫(Gy'-Fy')*(Gx-Fx)dt
c(t)=-∫(Gx-Fx)'*(Gy-Fy)dt + ∫(Gx-Fx)*(Gy-Fy)'dt
部分積分の公式より
c(t)=-∫(Gx-Fx)'*(Gy-Fy)dt +[(Gx-Fx)*(Gy-Fy)](a→b)- ∫(Gx-Fx)'*(Gy-Fy)dt
c(t)=[(Gx-Fx)*(Gy-Fy)](a→b)- 2∫(Gx-Fx)'*(Gy-Fy)dt ・・・(1)
この式はこれ以上簡単にならないように思えるが、B-spline曲線はベジェ曲線の集まりであるから各ベジェでこの積分式を解くことができる。
c(t)もB-spline曲線の性質により簡単に求まるので、F(t)とG(t)の関係式が得られる。
関係式が得られたら線分と中点も求まる。
なお辺が交差して四角形が崩れないようにするには大陸間横断線分が他の部分と交差しないように湾を削っておけばよい。
>>598
どんな曲線でもいいわけではなく(1)が解けなければいけない。
2つの曲線上の点を結ぶ大陸間横断線分が海域を等密度で並ぶようにし,F,G間の関係式を求めてみよう。
まずその線分が微小移動したときにできる細い四角形の面積を求める。
2つのベクトルのなす三角形の面積の外積公式より
A=(1/2)*|ΔF×L|
B=(1/2)*|ΔG×(-L)| (面積が負にならないようにベクトルの向きを逆にするといい)
A+Bが細い四角形の面積であり、これを大陸間横断線分の長さ|L|で割ったものを密度と定義し一定であればよい。
なおLは大陸間横断線分のベクトルであり、後に積分するので移動前と移動後とは近似できる。
(A+B)/|L|=C ただしCは定数
A+B=C*|L|と変形し両辺積分する。積分範囲は上記ですでに求めてある。
∫Adt+∫Bdt=曲線の長さの関数の定数倍=c(t)
F(t)=F(Fx(t),Fy(t)),G(t)=G(Gx(t),Gy(t))とすると
c(t)=∫(Fx'*(Gy-Fy)-Fy'*(Gx-Fx))dt-∫(Gx'*(Gy-Fy)-Gy'*(Gx-Fx))dt
c(t)=∫(Fx'-Gx')*(Gy-Fy)dt + ∫(Gy'-Fy')*(Gx-Fx)dt
c(t)=-∫(Gx-Fx)'*(Gy-Fy)dt + ∫(Gx-Fx)*(Gy-Fy)'dt
部分積分の公式より
c(t)=-∫(Gx-Fx)'*(Gy-Fy)dt +[(Gx-Fx)*(Gy-Fy)](a→b)- ∫(Gx-Fx)'*(Gy-Fy)dt
c(t)=[(Gx-Fx)*(Gy-Fy)](a→b)- 2∫(Gx-Fx)'*(Gy-Fy)dt ・・・(1)
この式はこれ以上簡単にならないように思えるが、B-spline曲線はベジェ曲線の集まりであるから各ベジェでこの積分式を解くことができる。
c(t)もB-spline曲線の性質により簡単に求まるので、F(t)とG(t)の関係式が得られる。
関係式が得られたら線分と中点も求まる。
なお辺が交差して四角形が崩れないようにするには大陸間横断線分が他の部分と交差しないように湾を削っておけばよい。
>>598
どんな曲線でもいいわけではなく(1)が解けなければいけない。
600デフォルトの名無しさん
2014/10/23(木) 19:46:13.66ID:xJ2edcK8 >>599
人格障害ですか?お大事に。
人格障害ですか?お大事に。
601デフォルトの名無しさん
2014/10/23(木) 20:26:31.21ID:TE8bWo7Y まともに解こうとすると糞難しい。
この問題を安易に解く方法は両陸地に接する円をすこしづつ動かして中心点をつないでいくのがよい。
この問題を安易に解く方法は両陸地に接する円をすこしづつ動かして中心点をつないでいくのがよい。
602デフォルトの名無しさん
2014/10/23(木) 21:45:05.80ID:lKZXmaCH6031
2014/10/23(木) 22:11:09.64ID:gc7yGcGD604587ではない
2014/10/23(木) 22:48:38.73ID:jdc4xe8Q >>597
問題領域が「有限集合と集合間の関係」でモデル化できるのであれば、
関数型やオブジェクト指向よりも論理型言語の Prolog のほうが圧倒的に簡潔に書ける
・プログラミング雑談スレ♯+++
http://peace.2ch.net/test/read.cgi/tech/1406986967/357-371
この例では、従業員/部門/所属という有限集合を扱っている
たとえば集合 従業員 は以下のように定義される
従業員 = { <1, 山田>, <2, 鈴木>, <3, 田中>. <4, 松下>. <5, 本田> }
ここで、「<X, Y>」は集合 X と Y の直積を表す
問題領域が「有限集合と集合間の関係」でモデル化できるのであれば、
関数型やオブジェクト指向よりも論理型言語の Prolog のほうが圧倒的に簡潔に書ける
・プログラミング雑談スレ♯+++
http://peace.2ch.net/test/read.cgi/tech/1406986967/357-371
この例では、従業員/部門/所属という有限集合を扱っている
たとえば集合 従業員 は以下のように定義される
従業員 = { <1, 山田>, <2, 鈴木>, <3, 田中>. <4, 松下>. <5, 本田> }
ここで、「<X, Y>」は集合 X と Y の直積を表す
605デフォルトの名無しさん
2014/10/24(金) 11:20:44.18ID:gLVwzl7v606デフォルトの名無しさん
2014/10/24(金) 19:07:28.65ID:smFrq6Ls そういう意味での終了ならとっくに終了してる。ずっと雑談スレとして続いている。
まあこのペースなら放置よりも1000の方が落ちるのが早そうだから、さっさと消化して落としてしまうのがいいだろう。
まあこのペースなら放置よりも1000の方が落ちるのが早そうだから、さっさと消化して落としてしまうのがいいだろう。
607デフォルトの名無しさん
2014/10/25(土) 13:59:00.13ID:hqtmXmou >>605-606
ほんとにCoqなんかで終了と思っとるん?
ほんとにCoqなんかで終了と思っとるん?
608デフォルトの名無しさん
2014/10/25(土) 14:49:44.46ID:CW0KbvIq 思ってるよ
何か問題でも?
何か問題でも?
609デフォルトの名無しさん
2014/10/25(土) 15:00:33.74ID:rVCkRMh+ それは証明系であって、汎用プログラミング言語じゃない。
コーディングしているのは証明。
コーディングしているのは証明。
610デフォルトの名無しさん
2014/10/25(土) 17:23:24.88ID:0lds8eT1 >>609
それのどこが問題なんだ?
それのどこが問題なんだ?
6111
2014/10/25(土) 21:33:01.44ID:ujOd7NYK prologでconnect4作ろうとしたんだがやり方がよくわからん。
盤面の情報はどうやって保持すればいいんだ?
盤面の情報はどうやって保持すればいいんだ?
612デフォルトの名無しさん
2014/10/26(日) 04:14:23.56ID:dhX+3K0L613デフォルトの名無しさん
2014/10/26(日) 11:52:04.74ID:WbgAndU6 >>612
その人に理由きいたって無駄だよ。
関数型言語は効率悪いから集合論言語として却下するけど、
集合論言語は効率度外視でいいとか言い出す上に
ルビーは文字列操作ユーティリティーが充実してるから使えるとか
真顔で書いちゃう人なんだから。
その人に理由きいたって無駄だよ。
関数型言語は効率悪いから集合論言語として却下するけど、
集合論言語は効率度外視でいいとか言い出す上に
ルビーは文字列操作ユーティリティーが充実してるから使えるとか
真顔で書いちゃう人なんだから。
614デフォルトの名無しさん
2014/10/26(日) 12:19:59.03ID:lx1fz+FP おいおいそんなこと書くと『わざと曲解してないか?』って言われちゃうぞ
6151
2014/10/26(日) 19:06:58.39ID:bR5aD7tI >>613
関数型言語却下は効率わるいからじゃなくて生産性あがんないからだよ。
まあ、探せば生産性あがる問題もあるのかもしれんが。
prologなんか無限ループっぽくなるんだが。
裏でなにやってんのかよくわからん。
prolog確かに面白そうではあるんだが、いまいち理解できん。
関数型言語却下は効率わるいからじゃなくて生産性あがんないからだよ。
まあ、探せば生産性あがる問題もあるのかもしれんが。
prologなんか無限ループっぽくなるんだが。
裏でなにやってんのかよくわからん。
prolog確かに面白そうではあるんだが、いまいち理解できん。
616デフォルトの名無しさん
2014/10/26(日) 21:24:52.33ID:cZX7ddvm >>615
有限集合限定でよければHaskellのリストで代用できるだろ。重複要素を取り除くようにすればいいだけで。
「生産性が上がらないからHaskell等は却下」ということなら集合を扱う言語を新たに作っても生産性は上がらない。
1は「集合を扱う言語を作れば高い生産性をもつはずだ」と具体案も示さずに言っているだけ。
有限集合限定でよければHaskellのリストで代用できるだろ。重複要素を取り除くようにすればいいだけで。
「生産性が上がらないからHaskell等は却下」ということなら集合を扱う言語を新たに作っても生産性は上がらない。
1は「集合を扱う言語を作れば高い生産性をもつはずだ」と具体案も示さずに言っているだけ。
6171
2014/10/26(日) 21:39:05.82ID:bR5aD7tI618デフォルトの名無しさん
2014/10/26(日) 22:12:04.35ID:lx1fz+FP6191
2014/10/26(日) 22:24:04.14ID:bR5aD7tI620デフォルトの名無しさん
2014/10/26(日) 22:37:21.48ID:lx1fz+FP なんでそこでキューやスタックがでてくるんだw
有限集合の話じゃないのかよwwww
有限集合の話じゃないのかよwwww
6211
2014/10/26(日) 22:40:47.72ID:bR5aD7tI 集合とリストは本質的に異なるという立場。
まあ、代用はできるんだが。
まあ、代用はできるんだが。
622デフォルトの名無しさん
2014/10/26(日) 22:51:49.39ID:lx1fz+FP6231
2014/10/26(日) 23:02:30.10ID:bR5aD7tI ぶっちゃけラッパーかませば問題ないなw
そういう薄いラッパーみたいなこまごまとした小道具がきっちりそろってるのがRubyの魅力だったりする。
でもまあ、今更だけど効率的に計算オーダーが変わっちゃうのはやっぱちょっと気になるかな。
そういう薄いラッパーみたいなこまごまとした小道具がきっちりそろってるのがRubyの魅力だったりする。
でもまあ、今更だけど効率的に計算オーダーが変わっちゃうのはやっぱちょっと気になるかな。
624デフォルトの名無しさん
2014/10/26(日) 23:09:02.90ID:uNWVyTps Rubyしかしらないだけでしょ
625デフォルトの名無しさん
2014/10/26(日) 23:16:23.07ID:lx1fz+FP 効率以外の面では既存言語(例えばhaskell)に集合操作ぽいラッパーがあればそれで充分と認めたんだよな?
問題は有限集合を扱う効率だけだということになってかなり整理されたな。
じゃお前さんが「生産性」の上では充分だと思うようなラッパーを既存言語の上で定義してくれよ。
haskellでもrubyでもいいよ
それがあれば効率よく処理する必要があるターゲットがみんなにも具体的によくわかる。
問題は有限集合を扱う効率だけだということになってかなり整理されたな。
じゃお前さんが「生産性」の上では充分だと思うようなラッパーを既存言語の上で定義してくれよ。
haskellでもrubyでもいいよ
それがあれば効率よく処理する必要があるターゲットがみんなにも具体的によくわかる。
6261
2014/10/27(月) 00:02:38.69ID:hKk3OxSM627デフォルトの名無しさん
2014/10/27(月) 00:16:15.58ID:xsoB8LA3 ここまで短時間で主張を二転三転されると笑うしかないな
あえて好意的に解釈しても正気かどうか心配になるレベル
あえて好意的に解釈しても正気かどうか心配になるレベル
628デフォルトの名無しさん
2014/10/27(月) 00:50:39.76ID:UstcwDIj 関数型で生産性上がらないみたいなこといってるけど、例えば商集合演算を書く時はどうすんの。
集合論に基づいた言語を作るなら、少なくとも関数がファーストクラスであることは生産性に大きく関わると思うんだけど。
あと数学の関数は状態を持たないから、全ての関数が参照透明であるかどうかはともかくとして、
数学の意味での関数を使う場合には参照透明な関数であることを制約するような記述ができる必要があるかもね。
集合論に基づいた言語を作るなら、少なくとも関数がファーストクラスであることは生産性に大きく関わると思うんだけど。
あと数学の関数は状態を持たないから、全ての関数が参照透明であるかどうかはともかくとして、
数学の意味での関数を使う場合には参照透明な関数であることを制約するような記述ができる必要があるかもね。
629デフォルトの名無しさん
2014/10/27(月) 03:06:19.81ID:S1pbHk8f >>623
「集合論に基づいた言語」を新たにつくっても、その言語に「こまごまとした小道具」はそろってないわけだが、
そうするとその新言語は1にとって魅力がないってことになるんじゃないか?
Rubyだったら簡単にできることが新言語では簡単にはできないのだから。
「集合論に基づいた言語」を新たにつくっても、その言語に「こまごまとした小道具」はそろってないわけだが、
そうするとその新言語は1にとって魅力がないってことになるんじゃないか?
Rubyだったら簡単にできることが新言語では簡単にはできないのだから。
630デフォルトの名無しさん
2014/10/27(月) 04:05:38.32ID:dHQizD3i631デフォルトの名無しさん
2014/10/27(月) 05:43:19.35ID:Rvvlh30F 結局、ルビー以外を提案しても全部却下して
「ここがルビーのいいところ」とか書いちゃうんだよ。
関数型言語の生産性の高さも知らずにね。
「ここがルビーのいいところ」とか書いちゃうんだよ。
関数型言語の生産性の高さも知らずにね。
632デフォルトの名無しさん
2014/10/27(月) 06:55:54.77ID:9dCb0Lih そもそも「作りたい」ってスレタイが間違ってんじゃね
こいつ絶対作る気ないだろ
こいつ絶対作る気ないだろ
633デフォルトの名無しさん
2014/10/27(月) 11:42:55.16ID:VoSGhOqg そんなことはどうでもいい
6341
2014/10/27(月) 20:16:20.56ID:hKk3OxSM6351
2014/10/27(月) 20:19:14.66ID:hKk3OxSM それにしてもprolog動かんなぁ。
センスないわ俺。
センスないわ俺。
636デフォルトの名無しさん
2014/10/27(月) 21:05:20.40ID:K1rstjve6371
2014/10/27(月) 21:22:05.89ID:hKk3OxSM 俺がケチつけられないほど明確に生産性の上がってる問題を頼む。
6381
2014/10/27(月) 21:25:15.63ID:hKk3OxSM まあ、集合論に基づいた言語は絵空事で終わる可能性があるからな。
関数型言語はそんなことないんだろ?
関数型言語はそんなことないんだろ?
639デフォルトの名無しさん
2014/10/27(月) 21:40:34.27ID:xsoB8LA3 ほんとに何言ってんのかねこの人はwww
640デフォルトの名無しさん
2014/10/27(月) 21:48:32.99ID:K1rstjve641デフォルトの名無しさん
2014/10/27(月) 22:01:34.98ID:UstcwDIj 高階関数によるチェインなんかは生産性のあがる例じゃないの。並列化も簡単でしょ。
まあ関数型のスレではないけど、集合論というか数学ってまさに関数型言語なのに、
よくわかってなさそうだからつっこまれるんだろうけど。
まあ関数型のスレではないけど、集合論というか数学ってまさに関数型言語なのに、
よくわかってなさそうだからつっこまれるんだろうけど。
642デフォルトの名無しさん
2014/10/27(月) 22:37:28.46ID:K1rstjve6431
2014/10/27(月) 22:42:25.97ID:hKk3OxSM644デフォルトの名無しさん
2014/10/27(月) 22:54:12.79ID:CRLCLkYm jqueryのメソッドチェーンは便利だね
645デフォルトの名無しさん
2014/10/27(月) 22:57:50.25ID:UstcwDIj >>643
個人的な経験でいえば、DBからデータを取ってきて加工したりするときに非常に書きやすいかな。
とにかく、コレクションのデータを加工して流すときに非常に簡潔に書ける。
他にもあるけど、今すぐに思いついたのはこれかな。
並列化はClojureなんかは簡単に書ける。Javaも8からできたんじゃなかったっけ。まあJavaのあれは関数型と言うには気持ち悪いけど。
というか、適用する関数が副作用を持たないと仮定するなら、作用させるデータを分割して再結合すればいいっていう単純な話でそ。
個人的な経験でいえば、DBからデータを取ってきて加工したりするときに非常に書きやすいかな。
とにかく、コレクションのデータを加工して流すときに非常に簡潔に書ける。
他にもあるけど、今すぐに思いついたのはこれかな。
並列化はClojureなんかは簡単に書ける。Javaも8からできたんじゃなかったっけ。まあJavaのあれは関数型と言うには気持ち悪いけど。
というか、適用する関数が副作用を持たないと仮定するなら、作用させるデータを分割して再結合すればいいっていう単純な話でそ。
646デフォルトの名無しさん
2014/10/27(月) 23:02:23.54ID:UstcwDIj あ、メソッドチェーンにおける並列化が簡単にできるという意味ね。
プログラム自動並列化は詳しくないけどまだ発展途上じゃないかな。
プログラム自動並列化は詳しくないけどまだ発展途上じゃないかな。
6471
2014/10/27(月) 23:32:47.45ID:hKk3OxSM >>645
ふーむ。確かにコレクションのデータを加工して流すのは出現頻度が高そう。
勉強になりました。
Clojuerちょっとぐぐってみたけど、ソフトウェア・トランザクション・メモリーとかよくわからんかった。
とりあえず簡単に並列化できそうな雰囲気は伝わってきたw
ふーむ。確かにコレクションのデータを加工して流すのは出現頻度が高そう。
勉強になりました。
Clojuerちょっとぐぐってみたけど、ソフトウェア・トランザクション・メモリーとかよくわからんかった。
とりあえず簡単に並列化できそうな雰囲気は伝わってきたw
648デフォルトの名無しさん
2014/10/28(火) 00:54:20.05ID:2moDL6+C >>とにかく、コレクションのデータを加工して流すときに非常に簡潔に書ける。
>ふーむ。確かにコレクションのデータを加工して流すのは出現頻度が高そう。
>勉強になりました。
このスレでHaskellの名前が出てから2ヶ月たつけど、2ヶ月の間に自分で調べたりはしなかったんだな。
>ふーむ。確かにコレクションのデータを加工して流すのは出現頻度が高そう。
>勉強になりました。
このスレでHaskellの名前が出てから2ヶ月たつけど、2ヶ月の間に自分で調べたりはしなかったんだな。
649デフォルトの名無しさん
2014/10/28(火) 01:22:16.19ID:F9KmtOQp この言語が最強っていう信念のある人だからね
650デフォルトの名無しさん
2014/10/28(火) 01:46:36.67ID:2moDL6+C Ruby最強と思っているらしいけど、それなら新しい言語を作ろうなんて思わければ良さそうなものだがな。
新しい言語を作っても、Rubyにあるような、お気に入りの便利な機能なんかないから、「Rubyなら簡単にできるのに」
って不満がたまるだけだろうに。
集合を使った表記法のプログラムを読むのもかなりしんどいそうだし。>>634
新しい言語を作っても、Rubyにあるような、お気に入りの便利な機能なんかないから、「Rubyなら簡単にできるのに」
って不満がたまるだけだろうに。
集合を使った表記法のプログラムを読むのもかなりしんどいそうだし。>>634
651デフォルトの名無しさん
2014/10/28(火) 13:51:55.51ID:/Y9XnqU0652デフォルトの名無しさん
2014/10/28(火) 14:27:02.71ID:BaOL+HSr653デフォルトの名無しさん
2014/10/28(火) 15:52:04.32ID:g7PPMDyH 関数型の生産性の証拠は求めるけど
もちろんルビー最強の証拠なんて知らんぷり
もちろんルビー最強の証拠なんて知らんぷり
654デフォルトの名無しさん
2014/10/28(火) 15:53:32.28ID:g7PPMDyH 典型的なルビ厨
655デフォルトの名無しさん
2014/10/28(火) 16:20:55.17ID:mPN7Yd+C >集合論に基づいた言語は教科書の章末問題をサクサクっとインプリメントすることを目的としてる。
>実用性はあんまり求めない。
>集合論に基づいた言語では狭い領域の問題に限り(教科書の章末問題とか)
>高い生産性を発揮することを目標にしてる。
1の言う「生産性」はこういうことだから、教科書やそれに載ってる問題を具体的に挙げて、
この問題をこういうふうに書きたいんだけど、Rubyではこんなふうにしか書けない、
Haskellではこんなふうにしか書けない…、そのためにサクサクっとインプリメントすることができず、
生産性が上がらない
って話を1がしないとどうしようもないんだよな。
Rubyその他、既存の言語で「サクサクっとインプリメントすること」ができるのなら
新しい言語をつくる意味がないんだから。
>実用性はあんまり求めない。
>集合論に基づいた言語では狭い領域の問題に限り(教科書の章末問題とか)
>高い生産性を発揮することを目標にしてる。
1の言う「生産性」はこういうことだから、教科書やそれに載ってる問題を具体的に挙げて、
この問題をこういうふうに書きたいんだけど、Rubyではこんなふうにしか書けない、
Haskellではこんなふうにしか書けない…、そのためにサクサクっとインプリメントすることができず、
生産性が上がらない
って話を1がしないとどうしようもないんだよな。
Rubyその他、既存の言語で「サクサクっとインプリメントすること」ができるのなら
新しい言語をつくる意味がないんだから。
656デフォルトの名無しさん
2014/10/28(火) 20:20:01.18ID:sNcgfmnM6571
2014/10/28(火) 21:27:06.97ID:Eyw4r4/G >>648
まあな
>>651
>絵空事で終わらない可能性がゼロでないことを説明してくれ。
それはむずかしいな。
数学っぽくプログラムできたらいいんじゃね。とか
教科書の記述がそのまま実装になったらいいんじゃね、とか
そういう曖昧なイメージがあるだけで、見切り発車でスレたてたからな。
>C++ やるんじゃなかったけ? <functional> とか高階関数だらけじゃん。
functionalって使ったことないかも。
setやmapでoperator<を定義することはあるけどそれとは違う?
>Ruby では使わないの?
Enumerableのメソッドならよく使うが。
>>652
Rubyのcollectとかはよく使う。
>>655
>>656
まあ、サクサクインプリメントできない問題が具体的にあったわけじゃないんだよな。
数学的な記述がそのまんま実装になったら楽しいかなぁとかその程度の問題意識しかなかった。
プログラミングの素養がなくても教科書丸コピで動いちゃうみたいな?
そんな感じ。
ちなみに、教科書丸コピは後付けなんだよなぁ。
いろいろやってるうちにこのスレを立てた時の最初の気持ちは何だったのかもう忘れてしまった。
まあな
>>651
>絵空事で終わらない可能性がゼロでないことを説明してくれ。
それはむずかしいな。
数学っぽくプログラムできたらいいんじゃね。とか
教科書の記述がそのまま実装になったらいいんじゃね、とか
そういう曖昧なイメージがあるだけで、見切り発車でスレたてたからな。
>C++ やるんじゃなかったけ? <functional> とか高階関数だらけじゃん。
functionalって使ったことないかも。
setやmapでoperator<を定義することはあるけどそれとは違う?
>Ruby では使わないの?
Enumerableのメソッドならよく使うが。
>>652
Rubyのcollectとかはよく使う。
>>655
>>656
まあ、サクサクインプリメントできない問題が具体的にあったわけじゃないんだよな。
数学的な記述がそのまんま実装になったら楽しいかなぁとかその程度の問題意識しかなかった。
プログラミングの素養がなくても教科書丸コピで動いちゃうみたいな?
そんな感じ。
ちなみに、教科書丸コピは後付けなんだよなぁ。
いろいろやってるうちにこのスレを立てた時の最初の気持ちは何だったのかもう忘れてしまった。
658デフォルトの名無しさん
2014/10/28(火) 22:13:27.20ID:SAcW2ukT >>657
教科書の演習問題を丸コピすれば答を出してくれるソフトをつくろうと
してたのか? w
ごまかそうとしないで、どの教科書のどの演習問題をどのように実装できる
言語をつくろうとしているのかちゃんと書け。
教科書の演習問題を丸コピすれば答を出してくれるソフトをつくろうと
してたのか? w
ごまかそうとしないで、どの教科書のどの演習問題をどのように実装できる
言語をつくろうとしているのかちゃんと書け。
659デフォルトの名無しさん
2014/10/28(火) 23:02:45.22ID:SAcW2ukT >>575
こんなことを書くぐらいだから、推論や数式処理の機能をもつ言語を考えていたわけじゃないよな。
こんなことを書くぐらいだから、推論や数式処理の機能をもつ言語を考えていたわけじゃないよな。
660デフォルトの名無しさん
2014/10/29(水) 01:09:17.84ID:7WbuvXm2 プログラミング言語に有限集合を扱う機能を持たせさえすれば
離散数学やアルゴリズムの教科書の
「数学的な記述がそのまんま実装になった」り
「プログラミングの素養がなくても教科書丸コピで動」かせるようになると
1は思っているということだな。
離散数学やアルゴリズムの教科書の
「数学的な記述がそのまんま実装になった」り
「プログラミングの素養がなくても教科書丸コピで動」かせるようになると
1は思っているということだな。
661デフォルトの名無しさん
2014/10/29(水) 07:51:54.82ID:uFHhP6NK662デフォルトの名無しさん
2014/10/29(水) 15:03:48.76ID:+dOdWCkt663デフォルトの名無しさん
2014/10/29(水) 20:53:26.55ID:0HNaGJ1I 当の本人がどうしたいのかハッキリしてない以上
「顧客が本当に必要だったもの」のあの絵の状態になる可能性は非常に高い
本人はプログラマのつもりかも知れんが、実際は顧客の物言いをしてる
しかも、注文とダメ出しだけ多くて、かつ本人は解ってる(つもり)というタイプの
この板は「こんなソフト作ってよ」と頼む場所ではないと思うのだが
「顧客が本当に必要だったもの」のあの絵の状態になる可能性は非常に高い
本人はプログラマのつもりかも知れんが、実際は顧客の物言いをしてる
しかも、注文とダメ出しだけ多くて、かつ本人は解ってる(つもり)というタイプの
この板は「こんなソフト作ってよ」と頼む場所ではないと思うのだが
664デフォルトの名無しさん
2014/10/29(水) 21:05:16.16ID:ITcKex6d まだ構想(=夢)の段階であれこれと夢想し構想し、その過程が文字で見える過程を、傍からみている私は楽しんでいる
>>1 続けてくれ
>>1 続けてくれ
6651
2014/10/29(水) 23:04:45.80ID:6KDieIbJ666デフォルトの名無しさん
2014/10/30(木) 00:38:38.53ID:HxKeCYce667デフォルトの名無しさん
2014/10/30(木) 03:27:37.45ID:sggd5tBz6681
2014/10/31(金) 20:03:03.95ID:g6D744er prologのconnect4がどうしても動かん。
誰か俺のコードをデバッグしてくれ。現状のコードは以下。
get_atでリストのN番目の要素を返す。
get_stoneでBOARDの(X,Y)の位置にある石を返す。盤の外を指定したときは3を返す。
straightで連続した石の数を数える。DX,DYは連続した石を探索する方向。
board([[],[],[],[],[],[],[]]).
myboard([[1,2],[1,1],[1,1,1],[1,1,1,2],[],[],[1,2,1]]).
get_at(_,[],_):- fail.
get_at(0,[X|_],X).
get_at(N,[_|Ls],Y):-
N1 is N -1,
get_at(N1,Ls,Y).
get_stone(_,X,_,3):- X<0,!.
get_stone(_,X,_,3):- 6<X,!.
get_stone(_,_,Y,3):- Y<0,!.
get_stone(BOARD,X,Y,0):-
get_at(X,BOARD,Xs),
length(Xs,L),
Y >= L,!.
get_stone(BOARD,X,Y,S):-
get_at(X,BOARD,Xs),
get_at(Y,Xs,S),!.
straight(BOARD,X,Y,_,_,S,0):-
get_stone(BOARD,X,Y,S1),
S1 \== S,!.
straight(BOARD,X,Y,DX,DY,Stn,Len):-
X1 is X + DX,
Y1 is Y + DY,
Len1 is Len + 1,
straight(BOARD,X1,Y1,DX,DY,Stn,Len1),!.
誰か俺のコードをデバッグしてくれ。現状のコードは以下。
get_atでリストのN番目の要素を返す。
get_stoneでBOARDの(X,Y)の位置にある石を返す。盤の外を指定したときは3を返す。
straightで連続した石の数を数える。DX,DYは連続した石を探索する方向。
board([[],[],[],[],[],[],[]]).
myboard([[1,2],[1,1],[1,1,1],[1,1,1,2],[],[],[1,2,1]]).
get_at(_,[],_):- fail.
get_at(0,[X|_],X).
get_at(N,[_|Ls],Y):-
N1 is N -1,
get_at(N1,Ls,Y).
get_stone(_,X,_,3):- X<0,!.
get_stone(_,X,_,3):- 6<X,!.
get_stone(_,_,Y,3):- Y<0,!.
get_stone(BOARD,X,Y,0):-
get_at(X,BOARD,Xs),
length(Xs,L),
Y >= L,!.
get_stone(BOARD,X,Y,S):-
get_at(X,BOARD,Xs),
get_at(Y,Xs,S),!.
straight(BOARD,X,Y,_,_,S,0):-
get_stone(BOARD,X,Y,S1),
S1 \== S,!.
straight(BOARD,X,Y,DX,DY,Stn,Len):-
X1 is X + DX,
Y1 is Y + DY,
Len1 is Len + 1,
straight(BOARD,X1,Y1,DX,DY,Stn,Len1),!.
669デフォルトの名無しさん
2014/10/31(金) 20:34:56.87ID:eFG4AR46670デフォルトの名無しさん
2014/10/31(金) 20:42:19.57ID:eFG4AR46671デフォルトの名無しさん
2014/11/01(土) 00:21:10.18ID:QdACbqof >>670
その結果。
http://peace.2ch.net/test/read.cgi/tech/1289016056/786
|全般的な感想として、1)..3) を見るに (Prolog 以前に)一般的なプログラミングの基礎が身に付いていないと思う
|おそらく集合理論言語スレの 1 だと思うけど、大学で情報系を専攻していたのなら情けない結果だ
|学生時代に遊んでいたのか、当時はできたけど今はその感覚が戻っていないだけなのか、わからないけどね
|現状のレベルでは、言語処理系を自作するなんてのは、夢物語か妄想のたぐいと判断せざるをえない
その結果。
http://peace.2ch.net/test/read.cgi/tech/1289016056/786
|全般的な感想として、1)..3) を見るに (Prolog 以前に)一般的なプログラミングの基礎が身に付いていないと思う
|おそらく集合理論言語スレの 1 だと思うけど、大学で情報系を専攻していたのなら情けない結果だ
|学生時代に遊んでいたのか、当時はできたけど今はその感覚が戻っていないだけなのか、わからないけどね
|現状のレベルでは、言語処理系を自作するなんてのは、夢物語か妄想のたぐいと判断せざるをえない
672片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/01(土) 20:55:00.77ID:jtBHZTX6 Boost.Iclを参照せよ。
674デフォルトの名無しさん
2014/11/02(日) 14:33:07.98ID:2+jwxmIt6751
2014/11/02(日) 18:33:09.61ID:WfQoOxnP676デフォルトの名無しさん
2014/11/02(日) 20:08:03.24ID:4mhasaGI >>425
今度は『ここは雑談スレだ』と言い出した。
今度は『ここは雑談スレだ』と言い出した。
6771
2014/11/02(日) 21:55:00.94ID:WfQoOxnP あと、このスレは俺中心に進めていく必要はないんだぜ?
みんなで雑談してくれて構わないんだぜ?
みんなで雑談してくれて構わないんだぜ?
678デフォルトの名無しさん
2014/11/02(日) 22:45:12.36ID:2oaHueQb >>676
雑談スレはすでにあるのにな。
http://peace.2ch.net/test/read.cgi/tech/1406986967/
>>559
1は「何でもいいから話題クレクレ」に路線変更。
雑談スレはすでにあるのにな。
http://peace.2ch.net/test/read.cgi/tech/1406986967/
>>559
1は「何でもいいから話題クレクレ」に路線変更。
679デフォルトの名無しさん
2014/11/03(月) 08:07:42.94ID:FKymKC8X680デフォルトの名無しさん
2014/11/03(月) 11:16:05.33ID:C9Z/RfTt それでもいいんじゃない‥雑談スレはすぐに話題が収束するからね‥
6811
2014/11/05(水) 21:01:40.21ID:aXYuBMMC prolog版connect4できたっぽいのであげます。
http://www.age2.tv/rd05/src/up5443.txt.html
長かった…!
prologでプログラミングするには…
なんと多くの辛抱が必要なものかと…!
あんまりテストしてないのでバグがあるかも。
http://www.age2.tv/rd05/src/up5443.txt.html
長かった…!
prologでプログラミングするには…
なんと多くの辛抱が必要なものかと…!
あんまりテストしてないのでバグがあるかも。
6821
2014/11/05(水) 21:29:06.77ID:aXYuBMMC prolog識者がいたら添削たのむ
684デフォルトの名無しさん
2014/11/06(木) 01:47:04.84ID:TxZPnLvK >>682
TwitterにPrologおじさんがいるからみてもらえ
TwitterにPrologおじさんがいるからみてもらえ
6851
2014/11/06(木) 20:03:55.57ID:1yGaI9pi686デフォルトの名無しさん
2014/11/06(木) 21:01:27.80ID:C8/OFtDI6871
2014/11/06(木) 22:26:58.78ID:1yGaI9pi Boost.Iclちらっとぐぐってみたけど、実装の大変さの割に活躍する場面があんまりないようなw
いつ使うかな〜コレ。
たしかに集合っちゃ集合なんだけど正直微妙。
いつ使うかな〜コレ。
たしかに集合っちゃ集合なんだけど正直微妙。
688デフォルトの名無しさん
2014/11/07(金) 04:13:14.72ID:QM030TJs689デフォルトの名無しさん
2014/11/07(金) 04:36:31.62ID:Nfw1pK0/690デフォルトの名無しさん
2014/11/07(金) 17:32:05.33ID:eCqmNoes 実装が大変かどうかは問題にならん。
692デフォルトの名無しさん
2014/11/08(土) 05:55:33.54ID:N89Y1+Fh これが集合論の何に参考になるのかサッパリわからんわ。
添削するだけ無駄。結局文句だけ言ってルビー最高って結論出すだけw
添削するだけ無駄。結局文句だけ言ってルビー最高って結論出すだけw
6931
2014/11/08(土) 10:50:24.96ID:vsjOn1b16941
2014/11/08(土) 12:45:40.20ID:vsjOn1b1 ×connect4は習作として優れている
○connect4は習作の題材として優れている
○connect4は習作の題材として優れている
695デフォルトの名無しさん
2014/11/08(土) 15:02:48.96ID:PXfop+Ut696デフォルトの名無しさん
2014/11/08(土) 15:17:42.64ID:N89Y1+Fh connect4を集合論プログラミングの例題として使いたいんなら、
まずはconnect4のルールを集合論的に定義するのが先だ。
今のところ1がやってるのは単なる手続き的実装例の移植じゃん。
それで参考になるわけがない。
まずはconnect4のルールを集合論的に定義するのが先だ。
今のところ1がやってるのは単なる手続き的実装例の移植じゃん。
それで参考になるわけがない。
697デフォルトの名無しさん
2014/11/08(土) 15:33:25.11ID:oJ3Se8B2698片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/08(土) 15:40:24.89ID:ebCh2W7f 記述は日本語なのか英語なのか数学記号によるのか?
6991
2014/11/08(土) 19:44:24.22ID:vsjOn1b1700デフォルトの名無しさん
2014/11/08(土) 19:53:04.25ID:LHO3gvAT >>693
プログラミングパラダイムごとに得意な領域、不得意な領域が存在するのに、なんで例題一個だけで言語を判断しようとするの?短絡的すぎない?
全部Prologで書くのはきついものがあるけど、部分的にPrologを採用してるプロジェクトはあるよ
(とはいえPrologがconnect4を作るのに向いているかどうかで言えばたぶん向いてないとは思うけどね)
プログラミングパラダイムごとに得意な領域、不得意な領域が存在するのに、なんで例題一個だけで言語を判断しようとするの?短絡的すぎない?
全部Prologで書くのはきついものがあるけど、部分的にPrologを採用してるプロジェクトはあるよ
(とはいえPrologがconnect4を作るのに向いているかどうかで言えばたぶん向いてないとは思うけどね)
7011
2014/11/08(土) 20:18:34.70ID:vsjOn1b1 >>700
ぐう正論ですな。
まあ、そんな簡単に新しい言語は深く習得できないからな。
感触掴むくらいがせいぜいじゃね?
判断が早いというのは言われてみればそうだと思う。
ちなみにPrologで生産性が上がる問題があるなら教えてくれ。
ぐう正論ですな。
まあ、そんな簡単に新しい言語は深く習得できないからな。
感触掴むくらいがせいぜいじゃね?
判断が早いというのは言われてみればそうだと思う。
ちなみにPrologで生産性が上がる問題があるなら教えてくれ。
702デフォルトの名無しさん
2014/11/08(土) 21:02:07.77ID:7W78geqS >>699 >>701
>集合論プログラミングとは関係ない
ならPrologスレでやれよ。
Prologに詳しい人はそっちのほうが多いはずだ。
【論理】Prolog【初心者】
http://peace.2ch.net/test/read.cgi/tech/1289016056/
>集合論プログラミングとは関係ない
ならPrologスレでやれよ。
Prologに詳しい人はそっちのほうが多いはずだ。
【論理】Prolog【初心者】
http://peace.2ch.net/test/read.cgi/tech/1289016056/
7031
2014/11/08(土) 21:21:57.05ID:vsjOn1b1 connect4は直接関係ないけどprologは関係あるかもしれないだろ。
つか、なんでこのスレでやっちゃダメなんだ。
意味わからん。
つか、なんでこのスレでやっちゃダメなんだ。
意味わからん。
704デフォルトの名無しさん
2014/11/08(土) 21:29:37.77ID:7W78geqS705デフォルトの名無しさん
2014/11/08(土) 21:35:40.48ID:LHO3gvAT7061
2014/11/08(土) 21:55:42.68ID:vsjOn1b1 >>704
You can't connect the dots looking forward. You can only connect them looking backwardsだよ!
>>705
>あとユニフィケーションと並列化の相性がよく、派生言語がいくつか出てるらしいね、Erlangとか
ErlangってPrologの派生だったの?
なんか並列化が得意らしいというのは聞いたことがあったが。
> >>702のスレも業務への適用の話とかしててまだ途中だけど読んでて結構おもしろい
そういやPrologスレちゃんと読んでないな。読んでみるか。
>まあ言いたかったことは、他のパラダイムは切り捨てるより取り入れたほうが自分の糧になるよということで
>以前関数型あたりも簡単に切り捨ててたから、それじゃもったいないよ
またまたぐう正論ですな。
気を付けます。
You can't connect the dots looking forward. You can only connect them looking backwardsだよ!
>>705
>あとユニフィケーションと並列化の相性がよく、派生言語がいくつか出てるらしいね、Erlangとか
ErlangってPrologの派生だったの?
なんか並列化が得意らしいというのは聞いたことがあったが。
> >>702のスレも業務への適用の話とかしててまだ途中だけど読んでて結構おもしろい
そういやPrologスレちゃんと読んでないな。読んでみるか。
>まあ言いたかったことは、他のパラダイムは切り捨てるより取り入れたほうが自分の糧になるよということで
>以前関数型あたりも簡単に切り捨ててたから、それじゃもったいないよ
またまたぐう正論ですな。
気を付けます。
707デフォルトの名無しさん
2014/11/09(日) 06:16:58.35ID:co8RBkg8708デフォルトの名無しさん
2014/11/09(日) 16:46:55.86ID:9LyR+5oz 1は何かものを作れる人間じゃないから。
7091
2014/11/09(日) 18:17:59.58ID:Yrjok8yA >>707
んーどうだろうな。
俺もスレたてた時はすべてを集合で表せば数学的にうまくいくんじゃね?とか思ってたんだけど、
やっぱリストはリスト、タプルはタプルなんだよな。
connect4も無理に集合的に扱わないで手続型で扱った方が自然かもしれないんだよな〜
ぶっちゃけ、集合にこだわる意味が根底から揺らいでるw
数学の基礎的な部分が集合論でできてるってのはそうなんだろうけど、
応用問題解くときに些末な問題に煩わされたくないよね?
まあ、集合論でうまくいきそうな問題⇔教科書の章末問題かなぁとか思ってたんだけどさ。
その辺はあんまり整理できてない。
んーどうだろうな。
俺もスレたてた時はすべてを集合で表せば数学的にうまくいくんじゃね?とか思ってたんだけど、
やっぱリストはリスト、タプルはタプルなんだよな。
connect4も無理に集合的に扱わないで手続型で扱った方が自然かもしれないんだよな〜
ぶっちゃけ、集合にこだわる意味が根底から揺らいでるw
数学の基礎的な部分が集合論でできてるってのはそうなんだろうけど、
応用問題解くときに些末な問題に煩わされたくないよね?
まあ、集合論でうまくいきそうな問題⇔教科書の章末問題かなぁとか思ってたんだけどさ。
その辺はあんまり整理できてない。
710デフォルトの名無しさん
2014/11/09(日) 19:17:53.75ID:co8RBkg8 リストもタプルも集合論の枠組み内で普通に扱えるのだが、
もういいや、1に何かを期待するのはやめた。
もういいや、1に何かを期待するのはやめた。
711デフォルトの名無しさん
2014/11/09(日) 19:30:26.31ID:FyV/3PpB そろそろループ再開ですか?
712片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/09(日) 19:44:15.77ID:XU91kGr5 算術演算+−×÷!/√
括弧()[]
等号不等号=≠<>≦≧≒≪≫
無限大∞
集合∈∋⊆⊇⊂⊃∪∩{|}#
論理:∧∨¬⇒⇔∀∃→∴∵
パーセント%
その他の記号±≡…;?
括弧()[]
等号不等号=≠<>≦≧≒≪≫
無限大∞
集合∈∋⊆⊇⊂⊃∪∩{|}#
論理:∧∨¬⇒⇔∀∃→∴∵
パーセント%
その他の記号±≡…;?
713デフォルトの名無しさん
2014/11/09(日) 20:00:10.30ID:NPL58Du1714片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/11/09(日) 20:28:33.70ID:XU91kGr5 俺の研究内容が似ているので燃料投下する。国の生活保護と同様に、たとえ悪魔にもエサを与えよう。
715デフォルトの名無しさん
2014/11/09(日) 21:17:29.34ID:b4iNH/wh 1「悪魔の餌 クレクレ」
7161
2014/11/10(月) 21:45:18.40ID:AsAdiTVl 試しにRubyでconnect4書いてみた。
http://www.age2.tv/rd05/src/up5560.txt.html
行数的にはhaskellのほうが短いくらいなんだが^^;
オフサイドルールのせいかな?
http://www.age2.tv/rd05/src/up5560.txt.html
行数的にはhaskellのほうが短いくらいなんだが^^;
オフサイドルールのせいかな?
717デフォルトの名無しさん
2014/11/11(火) 04:23:27.89ID:m7WVeZhS >>716
スレ違いだバカ
スレ違いだバカ
718デフォルトの名無しさん
2014/11/11(火) 16:25:56.08ID:kmmZIWoZ スレタイでHaskellで良いじゃんと思ってスレ開いたら1が馬鹿すぎてスレをそっと閉じることにした
7191
2014/11/17(月) 21:47:20.82ID:IjeD6lYX とりあえず、次の宿題は圏論かな〜?
7201
2014/11/17(月) 23:26:02.06ID:IjeD6lYX とりあえず、ここ読んだけど。。。
http://ja.wikibooks.org/wiki/Haskell/%E5%9C%8F%E8%AB%96
ぃみゎかんなぃ。。
もぅマヂ無理。。
リスカしょ・・・
ようするにdoが使いたいだけ?
http://ja.wikibooks.org/wiki/Haskell/%E5%9C%8F%E8%AB%96
ぃみゎかんなぃ。。
もぅマヂ無理。。
リスカしょ・・・
ようするにdoが使いたいだけ?
721デフォルトの名無しさん
2014/11/18(火) 00:04:28.78ID:e4RrhwW3 >>720
Haskellスレでやれ。
Haskellに詳しい人はそっちのほうが多いはずだ。
関数型プログラミング言語Haskell Part26
http://peace.2ch.net/test/read.cgi/tech/1406436392/
Haskellスレでやれ。
Haskellに詳しい人はそっちのほうが多いはずだ。
関数型プログラミング言語Haskell Part26
http://peace.2ch.net/test/read.cgi/tech/1406436392/
722デフォルトの名無しさん
2014/11/18(火) 00:07:08.02ID:l6oqTr0E7231
2014/11/18(火) 21:56:19.27ID:+WEtmfNy http://d.hatena.ne.jp/Lost_dog/20111211/1323616949
ここも読んでみたけどやっぱわからん。
というか、読んでも目が滑る。
だれか圏論のいい入門textプリーズ
ここも読んでみたけどやっぱわからん。
というか、読んでも目が滑る。
だれか圏論のいい入門textプリーズ
724デフォルトの名無しさん
2014/11/19(水) 19:50:12.10ID:dm216OYo とりあえず『圏論の基礎』でも読んでみたら?
7251
2014/11/19(水) 19:56:54.80ID:V2tDw9NJ7261
2014/11/26(水) 20:02:22.17ID:JT4BoUXj 圏論の基礎買ったけど早くも積読w
727デフォルトの名無しさん
2014/11/29(土) 18:24:47.22ID:8AtyRUwF >>701 の話だけど、ドコモで prolog が動いてる的な記事をなんかで読んだことがある
7281
2014/11/30(日) 19:47:48.77ID:O0/vTNqA729デフォルトの名無しさん
2014/11/30(日) 22:28:37.23ID:mFsly3WX Prolog で書くと「コード量10分の一」となる例には、他にも型推論があるね
以下のblog記事では、単純な型推論をPrologで記述している
・Prolog で型チェック:Rainy Day Codings:So-net blog
http://rainyday.blog.so-net.ne.jp/2008-06-16
自分の知る範囲では、世界で最も簡潔な型推論の実装コードだね
これも、もし(型システムという)形式的なルールが定義されていれば、
それを直接的に表現できるという Prolog の特徴が活かされている
Haskell でもこんな芸当はできない
以下のblog記事では、単純な型推論をPrologで記述している
・Prolog で型チェック:Rainy Day Codings:So-net blog
http://rainyday.blog.so-net.ne.jp/2008-06-16
自分の知る範囲では、世界で最も簡潔な型推論の実装コードだね
これも、もし(型システムという)形式的なルールが定義されていれば、
それを直接的に表現できるという Prolog の特徴が活かされている
Haskell でもこんな芸当はできない
730デフォルトの名無しさん
2014/12/01(月) 15:16:30.87ID:pglWaPo9 おおっと、Haskell信者に対して挑発だ〜!
731デフォルトの名無しさん
2014/12/01(月) 15:51:58.42ID:oEpuqve5 別にユニフィケーションがどっち方向にも働く、というのはPrologの特性だし、
Haskellにそんなものあっても困るだけだし。
Haskellにそんなものあっても困るだけだし。
733デフォルトの名無しさん
2014/12/01(月) 20:27:28.82ID:pmQ3LQ8v Prologのシンボル使ったユニフィケーションを実装するのは
Rubyに限らず手続き型言語ではライブラリ頼りでやらんと面倒い
むしろそれに特化され過ぎて、手続き的な書き方が面倒いって言語がProlog
Rubyに限らず手続き型言語ではライブラリ頼りでやらんと面倒い
むしろそれに特化され過ぎて、手続き的な書き方が面倒いって言語がProlog
734デフォルトの名無しさん
2014/12/01(月) 22:36:56.45ID:oEpuqve5 そういったものをなんでもまぜこぜできるからLispは偉い、というのが
竹内先生@NUEの主張だったなw
竹内先生@NUEの主張だったなw
735デフォルトの名無しさん
2014/12/01(月) 23:52:04.88ID:6Gpd+bqZ736デフォルトの名無しさん
2014/12/02(火) 00:14:21.85ID:+stn5l+y 集合論だと逐次処理やりにくいしな
SQLとも違うみたいだし
SQLとも違うみたいだし
737デフォルトの名無しさん
2014/12/03(水) 15:47:19.25ID:C/BNzxz3 集合論だと、逐次処理は処理系の中でやる。
プログラムにはmapやらfilterやらが出てきて、逐次処理は隠蔽されるのでは?
それを考えると、1がlispで満足できないのが不思議でならない。
まぁ、文字通り「何も」考えていないのだろうな。
プログラムにはmapやらfilterやらが出てきて、逐次処理は隠蔽されるのでは?
それを考えると、1がlispで満足できないのが不思議でならない。
まぁ、文字通り「何も」考えていないのだろうな。
7381
2014/12/03(水) 19:55:52.44ID:oIRBJSMm lispってそんないいかなぁ。
ちょっとやったことあるけど、インデントつけても括弧の対応がすぐわかんなくなるんだが。
コード読みにくいったらありゃしない。
ちょっとやったことあるけど、インデントつけても括弧の対応がすぐわかんなくなるんだが。
コード読みにくいったらありゃしない。
739デフォルトの名無しさん
2014/12/03(水) 20:36:17.67ID:HSbdY3zj740デフォルトの名無しさん
2014/12/03(水) 21:18:09.35ID:DVPNx2yH >>734
S式を使っているからうまく混ぜられる、S式こそLisp最大の特長、とかいう主張だったな。
S式を使っているからうまく混ぜられる、S式こそLisp最大の特長、とかいう主張だったな。
742デフォルトの名無しさん
2014/12/03(水) 23:15:45.16ID:cePlsLqN ほげ言語のパラドックスでも読んどけ
743デフォルトの名無しさん
2014/12/04(木) 01:08:18.94ID:jHjIGczB 集合に順序があるのはむしろベクトルかタプルに見える
集合論って考えは好きだけどソートみたいな逐次処理でよく使うものはどうなるんだろうか
並列処理的なこと考えてるひとがいるみたいなんでそれに乗っかると
並列処理ならクイックソートよりマージソートのほうが速そうだがそれが集合論かと言われるとちょっと困る
でもソートが本来のやりたいことではなくてソートしたデータにまた何らかの処理をする要求のほうが多い気がするんでどうでもいいか
2分探索なり逐次処理の環境で考えだされたアルゴリズムはほとんど使えない気がするんでまた誰かが良さそうな手順を考えださないとな
集合論って考えは好きだけどソートみたいな逐次処理でよく使うものはどうなるんだろうか
並列処理的なこと考えてるひとがいるみたいなんでそれに乗っかると
並列処理ならクイックソートよりマージソートのほうが速そうだがそれが集合論かと言われるとちょっと困る
でもソートが本来のやりたいことではなくてソートしたデータにまた何らかの処理をする要求のほうが多い気がするんでどうでもいいか
2分探索なり逐次処理の環境で考えだされたアルゴリズムはほとんど使えない気がするんでまた誰かが良さそうな手順を考えださないとな
744デフォルトの名無しさん
2014/12/05(金) 09:26:36.60ID:I64sWIzc 数学できる人間に見られたいクズが集まるスレ
745デフォルトの名無しさん
2014/12/05(金) 11:54:06.72ID:IjAdRY0C 自己紹介か?
7461
2014/12/05(金) 20:20:24.20ID:b89FafAC とりあえず、圏論からは戦術的転進するか。
別のネタを探そう。
別のネタを探そう。
747デフォルトの名無しさん
2014/12/05(金) 20:55:48.99ID:B18WNnFt748デフォルトの名無しさん
2014/12/05(金) 23:22:33.28ID:oLmzY7WJ しかしまあスレタイ通りにはなかなかいってないけど総合的には良スレっぽい
749デフォルトの名無しさん
2014/12/06(土) 01:07:31.28ID:tjNXDvF3750デフォルトの名無しさん
2014/12/06(土) 10:37:54.51ID:kt8GWotW lisp の括弧は rainbow-parentheses 的なの入れるとマシになる
751デフォルトの名無しさん
2014/12/06(土) 18:03:11.24ID:KgmhP8S/ lispで区切りに()だけ使うんじゃなくて集合を表す時は{}使うとかどうなの?
集合は{
集合は{
7521
2014/12/06(土) 18:04:03.49ID:KgmhP8S/ 途中で書き込んじゃった。
集合は{}で表すってイメージあるんだけど。
集合は{}で表すってイメージあるんだけど。
753デフォルトの名無しさん
2014/12/06(土) 18:56:15.26ID:dXBvUp0m clojureは#{}が集合のリテラルとしてある
他のlispでもリードマクロかけばそういうことはできる
是非についてなら。その表記が存在することが対象のプログラミングに有効ならあり、そうでなきゃなし
他のlispでもリードマクロかけばそういうことはできる
是非についてなら。その表記が存在することが対象のプログラミングに有効ならあり、そうでなきゃなし
7541
2014/12/06(土) 18:59:55.68ID:KgmhP8S/ ほほう。
clojure検討してみる価値あり?
clojure検討してみる価値あり?
755デフォルトの名無しさん
2014/12/06(土) 19:20:33.09ID:dXBvUp0m まあlisp系はマクロ書けば簡単に構文拡張できるから、新しい言語を試行錯誤したいなら最適ではあるよ
756デフォルトの名無しさん
2014/12/06(土) 19:20:42.39ID:5oGFUyw+ RubyとかJavaにもSetオブジェクトはあるし、リテラルの有無はソースコードの見た目の問題で、
たいして重要じゃない。
たいして重要じゃない。
757デフォルトの名無しさん
2014/12/06(土) 19:28:14.31ID:dXBvUp0m マッチョすぎワロタ
数値や文字列リテラルのない言語でも頑張ってくれそう
数値や文字列リテラルのない言語でも頑張ってくれそう
7581
2014/12/06(土) 19:49:14.64ID:KgmhP8S/ リテラルの有無は結構気になるな、俺は。
Rubyの配列やマップのリテラルは気に入ってる。
Rubyの配列やマップのリテラルは気に入ってる。
7591
2014/12/06(土) 19:51:57.69ID:KgmhP8S/ clojureってjavaなのか。
クラスパスとかあんまわかってないんだよな〜じつは
クラスパスとかあんまわかってないんだよな〜じつは
760デフォルトの名無しさん
2014/12/06(土) 20:40:46.96ID:VB5mtD/4 >>748
VIPやシベリアだったらな。
VIPやシベリアだったらな。
7611
2014/12/06(土) 21:05:36.24ID:KgmhP8S/ パッと見common lispよりclojureのほうがオサレにみえる。
あんまりcommon lisp知らんけど。
あんまりcommon lisp知らんけど。
762デフォルトの名無しさん
2014/12/06(土) 21:16:11.69ID:5oGFUyw+ なんでもいいから手を動かせ
7631
2014/12/07(日) 00:04:16.45ID:2ooQYugx OO言語だとobj.method(x)って書くけどlisp系だと(method obj x)って書くじゃん?
OO言語になれてるからかこの順番の違いが結構イラつく。
OO言語になれてるからかこの順番の違いが結構イラつく。
764デフォルトの名無しさん
2014/12/07(日) 00:11:32.48ID:t9ahLiCr ほんとこの1は駄目だなw
765デフォルトの名無しさん
2014/12/07(日) 01:41:10.92ID:bfkTF4nN lispでC風メソッド呼び出し構文開発したってのをどっかのブログでみたな
766デフォルトの名無しさん
2014/12/07(日) 02:32:50.17ID:lyVqLM7u リテラルでいろいろ指定できるのは便利だけどな
Clojureだと
{key1 obj1 , key2 obj2}でmap
#{obj1 obj2 obj3} でset
[obj1 obj2 obj3] でvector
'(obj1 obj2 obj3) でlist
地味にsetがありがたかったり(他の言語だとsetのリテラル滅多に無い)
Clojureだと
{key1 obj1 , key2 obj2}でmap
#{obj1 obj2 obj3} でset
[obj1 obj2 obj3] でvector
'(obj1 obj2 obj3) でlist
地味にsetがありがたかったり(他の言語だとsetのリテラル滅多に無い)
767デフォルトの名無しさん
2014/12/07(日) 12:08:48.39ID:mrRmmrII7681
2014/12/07(日) 17:19:43.84ID:2ooQYugx いつものようにclojureでconnect4書こうと思ったが、
>>763のことを差し引いても想像以上にモチベーション上がんない。
何のせいだ?
パッと見clojure良さそうに見えるのに。
Prologのときも苦戦したがモチベーションは保てた。
>>763のことを差し引いても想像以上にモチベーション上がんない。
何のせいだ?
パッと見clojure良さそうに見えるのに。
Prologのときも苦戦したがモチベーションは保てた。
769デフォルトの名無しさん
2014/12/07(日) 18:06:31.44ID:NlsKlGNA >>768
このスレでは集合論に基づいた言語と関係ない話題はルール違反です。
このスレでは集合論に基づいた言語と関係ない話題はルール違反です。
770デフォルトの名無しさん
2014/12/07(日) 19:50:11.74ID:npVck0tg771デフォルトの名無しさん
2014/12/08(月) 04:17:29.43ID:jYPMOE5Q >>768
モチベーションを保てないってことだから続かないと思うけど
続けるならClojureスレに行け
【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
モチベーションを保てないってことだから続かないと思うけど
続けるならClojureスレに行け
【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
7721
2014/12/09(火) 23:17:28.28ID:PZp4J+Rx リアルが忙しくなりそうです。
しばらくこれなくなるかもだが、俺が留守の間おまえらでこのスレを盛り上げてくれよな。
よろしく。
しばらくこれなくなるかもだが、俺が留守の間おまえらでこのスレを盛り上げてくれよな。
よろしく。
773デフォルトの名無しさん
2014/12/10(水) 21:31:22.32ID:7P/sQ89x 削除依頼していけよ
7741
2014/12/26(金) 19:46:13.23ID:pkBFPf36 仕事納めだよ。
しかし見事にレスがついてないな。
お前らで盛り上げてくれていいのに。
しかし見事にレスがついてないな。
お前らで盛り上げてくれていいのに。
775片山博文MZ ◆T6xkBnTXz7B0
2015/01/03(土) 12:40:55.68ID:XgnEofgF776デフォルトの名無しさん
2015/01/03(土) 14:07:47.18ID:MdLSAVWL7771
2015/01/03(土) 18:31:19.39ID:y8FDuePZ とりあえず片山さんがCoqで一番成功してると思った例題を教えて
それで判断するわ。
それで判断するわ。
778片山博文MZ ◆T6xkBnTXz7B0
2015/01/03(土) 19:06:58.41ID:XgnEofgF 俺もCoqについては初心者だが、数学、グラフ理論の超難しい問題
「四色問題」の証明がCoqでできたらしい。
「四色問題」の証明がCoqでできたらしい。
7791
2015/01/03(土) 20:02:04.73ID:y8FDuePZ 手続き型言語とかに比べて完結に実装できるってこと?面白そうではある
7801
2015/01/03(土) 20:38:21.69ID:rEeqS3sH ID違うと思うけど1です。
簡潔に実装できるんじゃなくて、
実装はHaskellとかでやって、その正しさをCoqで保証するの?
よくわからん。
簡潔に実装できるんじゃなくて、
実装はHaskellとかでやって、その正しさをCoqで保証するの?
よくわからん。
7811
2015/01/03(土) 21:16:03.70ID:rEeqS3sH Coq単体で動くのか。
prologに近いのか?
ぶっちゃけかなりむずいなこれは。
prologに近いのか?
ぶっちゃけかなりむずいなこれは。
7821
2015/01/03(土) 22:17:48.00ID:rEeqS3sH わからんということがわかった。
底なし沼みたいな感じやなこれ。
底なし沼みたいな感じやなこれ。
783デフォルトの名無しさん
2015/01/03(土) 23:44:50.02ID:Y5c4kVu77841
2015/01/04(日) 13:03:03.07ID:1dxkxQcz 片山さんはCoqどれくらい書けるの?
例えばド、モルガンの証明とか書けるの?
例えばド、モルガンの証明とか書けるの?
785片山博文MZ ◆T6xkBnTXz7B0
2015/01/04(日) 21:15:57.30ID:izkph8nP788デフォルトの名無しさん
2015/01/04(日) 21:59:00.42ID:7jAGFdTv7891
2015/01/06(火) 00:03:50.53ID:iQ4UNt/k Coqで任意の自然数nに対してn*(n+1)が偶数であることを証明しようとしたがどうしてもできない。
だれかHELP.
だれかHELP.
7901
2015/01/06(火) 00:34:25.70ID:iQ4UNt/k 定義はこれで。
Theorem t:
forall (n:nat),exists m , (n*(n+1) = 2 * m).
Theorem t:
forall (n:nat),exists m , (n*(n+1) = 2 * m).
791デフォルトの名無しさん
2015/01/06(火) 05:55:25.49ID:Gduz5N96 偶数+1は奇数
奇数+1は偶数
遇数*奇数も奇数*遇数も遇数
自然数は奇数か偶数かどちらかである
奇数+1は偶数
遇数*奇数も奇数*遇数も遇数
自然数は奇数か偶数かどちらかである
7921
2015/01/06(火) 21:04:14.92ID:iQ4UNt/k 「nが奇数ならn+1は偶数」を証明しようとして詰まってる。
Require Import Even.
Lemma l:
forall (n : nat), odd n -> even (n+1).
intros.
induction n.
simpl.
apply even_S.
これでodd 0とかいうのが出てくるけど、ここからどうしていいかわからない。
Require Import Even.
Lemma l:
forall (n : nat), odd n -> even (n+1).
intros.
induction n.
simpl.
apply even_S.
これでodd 0とかいうのが出てくるけど、ここからどうしていいかわからない。
7931
2015/01/06(火) 21:10:59.52ID:iQ4UNt/k 「自然数nに対してn*(n+1)が偶数である」
本題のこっちはここまで進んだ。
Require Import Even.
Theorem t:
forall (n:nat), even (n*(n+1)).
intros.
apply even_mult_aux.
本題のこっちはここまで進んだ。
Require Import Even.
Theorem t:
forall (n:nat), even (n*(n+1)).
intros.
apply even_mult_aux.
7941
2015/01/06(火) 23:17:17.43ID:iQ4UNt/k Coq難しすぎんよ〜
もう寝る。
もう寝る。
7951
2015/01/07(水) 19:22:04.95ID:DdlkDaa+ http://www.iij-ii.co.jp/lab/techdoc/coqt/coqt6.html
このページによるとforall (P : Prop), P \/ ~ Pは証明できなんだそうだ。
forall (n:nat), even (n*(n+1)).も証明できないのかもしれないな。
このページによるとforall (P : Prop), P \/ ~ Pは証明できなんだそうだ。
forall (n:nat), even (n*(n+1)).も証明できないのかもしれないな。
796デフォルトの名無しさん
2015/01/07(水) 20:14:30.38ID:zH4wOwdk7971
2015/01/07(水) 21:02:58.84ID:DdlkDaa+ odd 0 -> Falseは証明できたっぽい。
これをどう活用すればいいのかわからない。
Lemma l2:
odd 0 -> False.
apply not_even_and_odd.
apply even_O.
これをどう活用すればいいのかわからない。
Lemma l2:
odd 0 -> False.
apply not_even_and_odd.
apply even_O.
798デフォルトの名無しさん
2015/01/08(木) 15:50:20.90ID:FouB2F9v S
799デフォルトの名無しさん
2015/01/08(木) 18:29:26.11ID:qFLJfmjp O
800デフォルトの名無しさん
2015/01/08(木) 19:09:01.13ID:XNa5H7Wz S
8011
2015/01/08(木) 20:07:08.21ID:9tH8cNHX ハルヒか?
8021
2015/01/08(木) 22:27:11.24ID:9tH8cNHX そもそもodd n -> even (S n)って定義そのものなんだよなぁ。
8031
2015/01/11(日) 19:52:52.15ID:zln55Xsd ギブアップ。
だれか正解しってたら教えて。
だれか正解しってたら教えて。
8041
2015/01/13(火) 18:35:43.03ID:7YFvdf+i 片山さん答え知ってたら教えて
805デフォルトの名無しさん
2015/01/13(火) 20:23:10.10ID:ElusS0xD http://peace.2ch.net/test/read.cgi/tech/1419929875/23
> 23 名前:片山博文MZ ◆T6xkBnTXz7B0 [sage]: 2015/01/13(火) 18:53:35.00 ID:gURRjQHf
> 私はお下品
> 23 名前:片山博文MZ ◆T6xkBnTXz7B0 [sage]: 2015/01/13(火) 18:53:35.00 ID:gURRjQHf
> 私はお下品
806片山博文MZ ◆T6xkBnTXz7B0
2015/01/13(火) 21:52:38.35ID:gURRjQHf ヒント。
Require Import Even.
Lemma eSr: forall n:nat, even (1 + n) -> odd n.
intros.
apply (even_plus_odd_inv_r 1).
apply H.
Require Import Even.
Lemma eSr: forall n:nat, even (1 + n) -> odd n.
intros.
apply (even_plus_odd_inv_r 1).
apply H.
8071
2015/01/13(火) 22:46:33.61ID:ld5ZWEPI Lemma l : forall (n:nat), even (1+n)-> odd n.
intros.
apply (even_plus_odd_inv_r 1).
apply H.
apply odd_S.
apply even_O.
Qed.
こう?
nを偶数と奇数に場合分けする方法がわからんとです。
intros.
apply (even_plus_odd_inv_r 1).
apply H.
apply odd_S.
apply even_O.
Qed.
こう?
nを偶数と奇数に場合分けする方法がわからんとです。
8081
2015/01/13(火) 23:04:11.48ID:ld5ZWEPI even(1+n)にeven(1+n) -> odd nをapplyして odd nにならんのか?
よくわからん。
よくわからん。
809片山博文MZ ◆T6xkBnTXz7B0
2015/01/13(火) 23:09:34.67ID:gURRjQHf Lemma oS: forall n:nat, even n -> odd (S n).
intros.
apply odd_S.
apply H.
Qed.
intros.
apply odd_S.
apply H.
Qed.
8101
2015/01/13(火) 23:38:41.86ID:ld5ZWEPI 証明済みのLemmaの活用の仕方がわからんです。
applyじゃないの?
applyじゃないの?
811片山博文MZ ◆T6xkBnTXz7B0
2015/01/13(火) 23:39:26.18ID:gURRjQHf replace (even (S n)) with (odd n).
apply even_or_odd.
もう少しだな。
apply even_or_odd.
もう少しだな。
8121
2015/01/14(水) 00:05:14.20ID:upPMt0VH A=Bを示したかったらA->BかつB->Aで方針あってますか?
8131
2015/01/14(水) 00:09:20.78ID:upPMt0VH もう寝ます。
また明日よろしくお願いします。
また明日よろしくお願いします。
814片山博文MZ ◆T6xkBnTXz7B0
2015/01/14(水) 19:03:17.31ID:lWtQJ7uI 聞きたいことがあれば、俺の掲示板に来いよ。待ってるぜ。
815片山博文MZ ◆T6xkBnTXz7B0
2015/01/15(木) 14:58:59.94ID:OiYOltU9816デフォルトの名無しさん
2015/01/15(木) 18:04:49.36ID:UYCK2hGt817デフォルトの名無しさん
2015/01/15(木) 20:46:59.13ID:QgJ4DA/V8181
2015/01/15(木) 21:04:35.89ID:RCkerH2f お前らこのスレが伸びちゃ困る理由でもあるのかw
819デフォルトの名無しさん
2015/01/15(木) 22:49:41.86ID:5ppshwSd8201
2015/01/15(木) 23:03:37.94ID:RCkerH2f このスレはお前らで盛り上げてくれてもかまわないんだぜ?
821デフォルトの名無しさん
2015/01/16(金) 00:08:32.30ID:q80wbXpz このスレ見てるの結構楽しい(煽りとかではなくいろんな話が出てくるし)から盛り上がって欲しい
8221
2015/01/16(金) 00:10:36.55ID:tbQRRWp6 できたっぽい。
片山さんに教えてもらったページみた。
Require Import Even.
Theorem t:forall n:nat,even (n * (1+n)).
intros.
apply even_mult_aux.
elim n.
left.
apply even_O.
intros.
elim H.
right.
apply even_S.
apply odd_S.
apply H0.
left.
apply H0.
Qed.
Coq相当親切なチュートリアルがないと勉強できんわ。
どのタクティク使えばいいのかとかわからんすぎる。
片山さんに教えてもらったページみた。
Require Import Even.
Theorem t:forall n:nat,even (n * (1+n)).
intros.
apply even_mult_aux.
elim n.
left.
apply even_O.
intros.
elim H.
right.
apply even_S.
apply odd_S.
apply H0.
left.
apply H0.
Qed.
Coq相当親切なチュートリアルがないと勉強できんわ。
どのタクティク使えばいいのかとかわからんすぎる。
823片山博文MZ ◆T6xkBnTXz7B0
2015/01/16(金) 01:05:01.69ID:IPI8U3lP8241
2015/01/16(金) 18:38:49.28ID:tbQRRWp6 MZとかQZとかって何なの?
別にいいんだけど。
片山QZの定理はなんかえらい難しそうなのでやめとく。
別にいいんだけど。
片山QZの定理はなんかえらい難しそうなのでやめとく。
825片山博文MZ ◆T6xkBnTXz7B0
2015/01/16(金) 18:52:49.05ID:IPI8U3lP QZというのはC/C++宿題スレに生息している人だよ。
そうだな。2n=n+nの証明なんかどうかな? 楽勝?
そうだな。2n=n+nの証明なんかどうかな? 楽勝?
8261
2015/01/16(金) 19:09:16.59ID:tbQRRWp6 掛け算の定義がどこにあるのかわからん。
証明もいいけどコードの自動生成のほうが面白そうかな〜
証明もいいけどコードの自動生成のほうが面白そうかな〜
827片山博文MZ ◆T6xkBnTXz7B0
2015/01/16(金) 22:32:01.39ID:IPI8U3lP >>826
英語では、掛け算がmultiplicationで、自然数がnatural numbersだろ?
それを略すればmul,natになるだろ?
SearchAbout mul.
SearchAbout nat.
で検索できるから。
英語では、掛け算がmultiplicationで、自然数がnatural numbersだろ?
それを略すればmul,natになるだろ?
SearchAbout mul.
SearchAbout nat.
で検索できるから。
8291
2015/01/17(土) 00:13:16.15ID:e9PIZEl5 ぶっちゃけCoqやってると無限に時間を吸われる可能性がある。
早めに身を引いた方がよさそうかな〜とも思う。
早めに身を引いた方がよさそうかな〜とも思う。
830片山博文MZ ◆T6xkBnTXz7B0
2015/01/17(土) 01:27:28.08ID:PPUSm5YO 数学に基づいた言語としてCoqは最適の例かと思われたが、御気に召さないとはこれ如何に。
では、そなたはどのような言語が希望か申し上げてみよ。
では、そなたはどのような言語が希望か申し上げてみよ。
8311
2015/01/17(土) 02:12:55.60ID:e9PIZEl5 いや〜確かにCoq面白いんだけど。
勉強するのに時間かかり過ぎるっていうか
もうちょっと市民権を得て入門書とか充実してからの方がいいかな〜と。
証明も紙なら簡単にできることが結構難しかったりで、
実利を得るところまで勉強進めるのがしんどい。
実用までいかなくてただのパズルで終わりそう。
Coq参考になるところは多いと思うんだけどね。
どこまで時間費やすか見極めたほうがよさげ。
片山さんはCoqにどの程度手ごたえ感じてるの?
勉強するのに時間かかり過ぎるっていうか
もうちょっと市民権を得て入門書とか充実してからの方がいいかな〜と。
証明も紙なら簡単にできることが結構難しかったりで、
実利を得るところまで勉強進めるのがしんどい。
実用までいかなくてただのパズルで終わりそう。
Coq参考になるところは多いと思うんだけどね。
どこまで時間費やすか見極めたほうがよさげ。
片山さんはCoqにどの程度手ごたえ感じてるの?
832片山博文MZ ◆T6xkBnTXz7B0
2015/01/17(土) 02:59:53.32ID:PPUSm5YO 麿は、この素晴らしきCoqを使えば、不具合のないソフトウェアが作れると見ては、
これをマスターすれば世界征服も夢ではないと、そのような所存でおじゃるよ。
これをマスターすれば世界征服も夢ではないと、そのような所存でおじゃるよ。
833片山博文MZ ◆T6xkBnTXz7B0
2015/01/17(土) 03:31:41.14ID:PPUSm5YO Coqと人工知能を組み合わせたら……、金融取引に活かせば……とか楽しい妄想が広がるでおじゃる。
8341
2015/01/18(日) 22:30:12.77ID:Pnbu8M/I 人工知能といえばdeep learningとかいうのが流行らしいんだが。
8351
2015/01/20(火) 23:02:01.33ID:RE29itzd 2n=n+nはomegaで一発っぽい。
omegaなしだとどうやるかわからん。
omegaなしだとどうやるかわからん。
836デフォルトの名無しさん
2015/01/21(水) 01:37:31.40ID:+/NZ76QF837片山博文MZ ◆T6xkBnTXz7B0
2015/01/21(水) 08:55:01.51ID:y20qOxOP n=1×nを使う
8381
2015/01/21(水) 19:32:48.10ID:83hEDbKu 途中よけいなことしてるかもだができたっぽい。
Require Import Arith.
Theorem t:forall n:nat,2*n=n+n.
intros.
replace (2*n) with (n*(S 1)).
symmetry.
replace (n+n) with (n*1+n).
apply mult_n_Sm.
replace (n*1) with (1*n).
replace (1*n) with n.
auto.
symmetry.
apply mult_1_l.
apply mult_comm.
apply mult_comm.
Qed.
Require Import Arith.
Theorem t:forall n:nat,2*n=n+n.
intros.
replace (2*n) with (n*(S 1)).
symmetry.
replace (n+n) with (n*1+n).
apply mult_n_Sm.
replace (n*1) with (1*n).
replace (1*n) with n.
auto.
symmetry.
apply mult_1_l.
apply mult_comm.
apply mult_comm.
Qed.
8391
2015/01/21(水) 19:37:49.38ID:83hEDbKu Coqは一日一時間までにする。
それ以上は自重。
それ以上は自重。
8401
2015/01/21(水) 20:33:19.47ID:83hEDbKu 片山さんの模範解答うp希望
841片山博文MZ ◆T6xkBnTXz7B0
2015/01/21(水) 22:08:31.55ID:OPHJ2hAi >>840
Require Import Arith.
Theorem t: forall n:nat, 2*n = n+n.
intros.
replace (n+n) with (1*n + 1*n).
replace 2 with (1+1).
apply mult_plus_distr_r.
auto.
replace (1*n) with n.
auto.
symmetry.
apply mult_1_l.
Qed.
Require Import Arith.
Theorem t: forall n:nat, 2*n = n+n.
intros.
replace (n+n) with (1*n + 1*n).
replace 2 with (1+1).
apply mult_plus_distr_r.
auto.
replace (1*n) with n.
auto.
symmetry.
apply mult_1_l.
Qed.
8421
2015/01/21(水) 22:49:05.70ID:83hEDbKu ふーむ。確かに片山さんのほうが自然な証明ですな。
843片山博文MZ ◆T6xkBnTXz7B0
2015/01/23(金) 02:17:55.54ID:22/uje4h 布教のために数学板でも展開するぞ。
【Coq】コンピューターで証明しよう【コック】・2ch.net
http://wc2014.2ch.net/test/read.cgi/math/1421944863/
【Coq】コンピューターで証明しよう【コック】・2ch.net
http://wc2014.2ch.net/test/read.cgi/math/1421944863/
844デフォルトの名無しさん
2015/10/21(水) 21:08:46.20ID:qGjQS7QU845デフォルトの名無しさん
2015/10/21(水) 21:49:58.99ID:kanshW5q ほう、4並べのソルバですか。面白い
なぜこのスレなのかは気にしないでおこう
thx
なぜこのスレなのかは気にしないでおこう
thx
846デフォルトの名無しさん
2016/05/01(日) 11:01:21.14ID: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的に分散され、特定のサーバーに依存しません
c
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的に分散され、特定のサーバーに依存しません
c
847デフォルトの名無しさん
2018/02/28(水) 18:29:32.35ID:F8/eMdWm やぁ
848デフォルトの名無しさん
2018/05/23(水) 22:19:44.05ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
TQ9W4
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
TQ9W4
849デフォルトの名無しさん
2018/07/04(水) 23:44:36.75ID:gFgZc5FG 6HI
850デフォルトの名無しさん
2018/11/23(金) 11:17:18.34ID:lDkmAROy >>118
Haskellのクイックソートはリスト内包表記使った方が美しい。
qsort [] = []
qsort (x:xs) = small ++ [x] ++ leage
where
small = qsort [a|a <- xs,a <= x]
leage = qsort [a|a <- xs,a > x]
>>1 が求めるのってHaskellやPythonのリスト内包表記だけでプログラミングしたいとか?
SQLやC#のLinqにも通じるけど。
集合論的なのがあれば便利だけど、「だけ」と言うのはプログラミング上もキツイと思うな。
文字数を求める関数
再帰版
length [] = []
length (_:xs) = 1 + length xs
リスト内包表記版
length xs = sum [1 | _ <- xs] ― リスト内包表記で1行になるけど、結局sum関数は必要。(チャレンジしたけど、リスト内包表記だけでsum関数は無理ぽ)
sum [] = 0
sum (x:xs) = x + sum xs
Haskellのクイックソートはリスト内包表記使った方が美しい。
qsort [] = []
qsort (x:xs) = small ++ [x] ++ leage
where
small = qsort [a|a <- xs,a <= x]
leage = qsort [a|a <- xs,a > x]
>>1 が求めるのってHaskellやPythonのリスト内包表記だけでプログラミングしたいとか?
SQLやC#のLinqにも通じるけど。
集合論的なのがあれば便利だけど、「だけ」と言うのはプログラミング上もキツイと思うな。
文字数を求める関数
再帰版
length [] = []
length (_:xs) = 1 + length xs
リスト内包表記版
length xs = sum [1 | _ <- xs] ― リスト内包表記で1行になるけど、結局sum関数は必要。(チャレンジしたけど、リスト内包表記だけでsum関数は無理ぽ)
sum [] = 0
sum (x:xs) = x + sum xs
851デフォルトの名無しさん
2018/11/23(金) 11:18:01.12ID:lDkmAROy sum (x:xs) = x + sum xs
852デフォルトの名無しさん
2018/11/25(日) 12:00:26.30ID:mrb3Dvz9 もう許してやれよ
853デフォルトの名無しさん
2019/06/19(水) 05:01:29.66ID:tVNS+22r 【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
854デフォルトの名無しさん
2019/09/20(金) 10:28:23.43ID:4f4Q+09G Haskellじゃないの?
集合とか要素に型、集合にも型名を与えて処理する
Haskellとモナドの動画見てたけど少しだけ理解
計算は集合が状態遷移で形態(形状)変化した結果だと思う
[1 1]->sum->[1]みたいな
モナドの適当な感想
モナドは状態遷移を行う処理手続き関数の中に
バグや矛盾が入り込みにくい小さなプログラム単位を数珠つなぎに連鎖させ
エラーなり問題点の発生場所を明確化する手法な気がした
scalaのモナドは読むの辛いね(慣れ?)
集合とか要素に型、集合にも型名を与えて処理する
Haskellとモナドの動画見てたけど少しだけ理解
計算は集合が状態遷移で形態(形状)変化した結果だと思う
[1 1]->sum->[1]みたいな
モナドの適当な感想
モナドは状態遷移を行う処理手続き関数の中に
バグや矛盾が入り込みにくい小さなプログラム単位を数珠つなぎに連鎖させ
エラーなり問題点の発生場所を明確化する手法な気がした
scalaのモナドは読むの辛いね(慣れ?)
855デフォルトの名無しさん
2020/01/09(木) 12:03:21.50ID:Ydnkghao >>1
Z言語ではだめですか
Z言語ではだめですか
■ このスレッドは過去ログ倉庫に格納されています
