集合論に基づいた言語を作りたい

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2014/08/10(日) 21:27:16.56ID:x7G32Sd0
計算機科学の基礎は集合論であるという。
ならば、集合論に基づいた言語を作れば美しい言語になるのでは?
そんな発想から徹底的に集合論的思想で言語仕様を考えるスレです。
2014/11/09(日) 16:46:55.86ID:9LyR+5oz
1は何かものを作れる人間じゃないから。
709
垢版 |
2014/11/09(日) 18:17:59.58ID:Yrjok8yA
>>707
んーどうだろうな。
俺もスレたてた時はすべてを集合で表せば数学的にうまくいくんじゃね?とか思ってたんだけど、
やっぱリストはリスト、タプルはタプルなんだよな。
connect4も無理に集合的に扱わないで手続型で扱った方が自然かもしれないんだよな〜
ぶっちゃけ、集合にこだわる意味が根底から揺らいでるw
数学の基礎的な部分が集合論でできてるってのはそうなんだろうけど、
応用問題解くときに些末な問題に煩わされたくないよね?

まあ、集合論でうまくいきそうな問題⇔教科書の章末問題かなぁとか思ってたんだけどさ。
その辺はあんまり整理できてない。
2014/11/09(日) 19:17:53.75ID:co8RBkg8
リストもタプルも集合論の枠組み内で普通に扱えるのだが、
もういいや、1に何かを期待するのはやめた。
2014/11/09(日) 19:30:26.31ID:FyV/3PpB
そろそろループ再開ですか?
2014/11/09(日) 19:44:15.77ID:XU91kGr5
算術演算+−×÷!/√
括弧()[]
等号不等号=≠<>≦≧≒≪≫
無限大∞
集合∈∋⊆⊇⊂⊃∪∩{|}#
論理:∧∨¬⇒⇔∀∃→∴∵
パーセント%
その他の記号±≡…;?
2014/11/09(日) 20:00:10.30ID:NPL58Du1
1に餌を与えないでください。
>>425>>559 >>655-665
2014/11/09(日) 20:28:33.70ID:XU91kGr5
俺の研究内容が似ているので燃料投下する。国の生活保護と同様に、たとえ悪魔にもエサを与えよう。
2014/11/09(日) 21:17:29.34ID:b4iNH/wh
1「悪魔の餌 クレクレ」
716
垢版 |
2014/11/10(月) 21:45:18.40ID:AsAdiTVl
試しにRubyでconnect4書いてみた。
http://www.age2.tv/rd05/src/up5560.txt.html

行数的にはhaskellのほうが短いくらいなんだが^^;
オフサイドルールのせいかな?
2014/11/11(火) 04:23:27.89ID:m7WVeZhS
>>716
スレ違いだバカ
2014/11/11(火) 16:25:56.08ID:kmmZIWoZ
スレタイでHaskellで良いじゃんと思ってスレ開いたら1が馬鹿すぎてスレをそっと閉じることにした
719
垢版 |
2014/11/17(月) 21:47:20.82ID:IjeD6lYX
とりあえず、次の宿題は圏論かな〜?
720
垢版 |
2014/11/17(月) 23:26:02.06ID:IjeD6lYX
とりあえず、ここ読んだけど。。。

http://ja.wikibooks.org/wiki/Haskell/%E5%9C%8F%E8%AB%96

ぃみゎかんなぃ。。

もぅマヂ無理。。

リスカしょ・・・

ようするにdoが使いたいだけ?
2014/11/18(火) 00:04:28.78ID:e4RrhwW3
>>720
Haskellスレでやれ。
Haskellに詳しい人はそっちのほうが多いはずだ。

関数型プログラミング言語Haskell Part26
http://peace.2ch.net/test/read.cgi/tech/1406436392/
2014/11/18(火) 00:07:08.02ID:l6oqTr0E
1に餌を与えないでください。
>>425 >>559 >>655-665
723
垢版 |
2014/11/18(火) 21:56:19.27ID:+WEtmfNy
http://d.hatena.ne.jp/Lost_dog/20111211/1323616949
ここも読んでみたけどやっぱわからん。
というか、読んでも目が滑る。
だれか圏論のいい入門textプリーズ
2014/11/19(水) 19:50:12.10ID:dm216OYo
とりあえず『圏論の基礎』でも読んでみたら?
725
垢版 |
2014/11/19(水) 19:56:54.80ID:V2tDw9NJ
http://www.amazon.co.jp/dp/4621063243
これ?
まあ本屋いってみてあったら立ち読みしてみるわ。
726
垢版 |
2014/11/26(水) 20:02:22.17ID:JT4BoUXj
圏論の基礎買ったけど早くも積読w
2014/11/29(土) 18:24:47.22ID:8AtyRUwF
>>701 の話だけど、ドコモで prolog が動いてる的な記事をなんかで読んだことがある
728
垢版 |
2014/11/30(日) 19:47:48.77ID:O0/vTNqA
http://iiyu.asablo.jp/blog/2014/07/28/7400231
これか。
コード量10分の一は確かにすごい。
しかし2370万行とか正気の沙汰じゃないな。
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 でもこんな芸当はできない
730デフォルトの名無しさん
垢版 |
2014/12/01(月) 15:16:30.87ID:pglWaPo9
おおっと、Haskell信者に対して挑発だ〜!
2014/12/01(月) 15:51:58.42ID:oEpuqve5
別にユニフィケーションがどっち方向にも働く、というのはPrologの特性だし、
Haskellにそんなものあっても困るだけだし。
732
垢版 |
2014/12/01(月) 19:25:13.06ID:TTRJBgwa
>>729
ふーむ。Rubyだとどうなるかな〜。
ヨクワカラヌ。
2014/12/01(月) 20:27:28.82ID:pmQ3LQ8v
Prologのシンボル使ったユニフィケーションを実装するのは
Rubyに限らず手続き型言語ではライブラリ頼りでやらんと面倒い
むしろそれに特化され過ぎて、手続き的な書き方が面倒いって言語がProlog
2014/12/01(月) 22:36:56.45ID:oEpuqve5
そういったものをなんでもまぜこぜできるからLispは偉い、というのが
竹内先生@NUEの主張だったなw
2014/12/01(月) 23:52:04.88ID:6Gpd+bqZ
1に餌を与えないでください。
>>425>>559 >>655-665

1は推論や数式処理を扱うのは面倒くさいと思っている。
>>574-576
2014/12/02(火) 00:14:21.85ID:+stn5l+y
集合論だと逐次処理やりにくいしな
SQLとも違うみたいだし
2014/12/03(水) 15:47:19.25ID:C/BNzxz3
集合論だと、逐次処理は処理系の中でやる。
プログラムにはmapやらfilterやらが出てきて、逐次処理は隠蔽されるのでは?

それを考えると、1がlispで満足できないのが不思議でならない。

まぁ、文字通り「何も」考えていないのだろうな。
738
垢版 |
2014/12/03(水) 19:55:52.44ID:oIRBJSMm
lispってそんないいかなぁ。
ちょっとやったことあるけど、インデントつけても括弧の対応がすぐわかんなくなるんだが。
コード読みにくいったらありゃしない。
2014/12/03(水) 20:36:17.67ID:HSbdY3zj
>>738
ちょっとやってみただけで慣れようともせずケチつける。
>>700>>701>>705>>706
2014/12/03(水) 21:18:09.35ID:DVPNx2yH
>>734
S式を使っているからうまく混ぜられる、S式こそLisp最大の特長、とかいう主張だったな。
741
垢版 |
2014/12/03(水) 22:35:36.35ID:oIRBJSMm
>>740
詳しく
2014/12/03(水) 23:15:45.16ID:cePlsLqN
ほげ言語のパラドックスでも読んどけ
2014/12/04(木) 01:08:18.94ID:jHjIGczB
集合に順序があるのはむしろベクトルかタプルに見える

集合論って考えは好きだけどソートみたいな逐次処理でよく使うものはどうなるんだろうか
並列処理的なこと考えてるひとがいるみたいなんでそれに乗っかると
並列処理ならクイックソートよりマージソートのほうが速そうだがそれが集合論かと言われるとちょっと困る

でもソートが本来のやりたいことではなくてソートしたデータにまた何らかの処理をする要求のほうが多い気がするんでどうでもいいか
2分探索なり逐次処理の環境で考えだされたアルゴリズムはほとんど使えない気がするんでまた誰かが良さそうな手順を考えださないとな
2014/12/05(金) 09:26:36.60ID:I64sWIzc
数学できる人間に見られたいクズが集まるスレ
2014/12/05(金) 11:54:06.72ID:IjAdRY0C
自己紹介か?
746
垢版 |
2014/12/05(金) 20:20:24.20ID:b89FafAC
とりあえず、圏論からは戦術的転進するか。
別のネタを探そう。
2014/12/05(金) 20:55:48.99ID:B18WNnFt
1に餌を与えないでください。
>>425>>559 >>655-665
2014/12/05(金) 23:22:33.28ID:oLmzY7WJ
しかしまあスレタイ通りにはなかなかいってないけど総合的には良スレっぽい
2014/12/06(土) 01:07:31.28ID:tjNXDvF3
>>746
圏論を勉強する気など最初からなくて、ネタのつもりだったわけだ。
圏論以外に何をもってきても同じだろうな。
2014/12/06(土) 10:37:54.51ID:kt8GWotW
lisp の括弧は rainbow-parentheses 的なの入れるとマシになる
2014/12/06(土) 18:03:11.24ID:KgmhP8S/
lispで区切りに()だけ使うんじゃなくて集合を表す時は{}使うとかどうなの?
集合は{
752
垢版 |
2014/12/06(土) 18:04:03.49ID:KgmhP8S/
途中で書き込んじゃった。
集合は{}で表すってイメージあるんだけど。
2014/12/06(土) 18:56:15.26ID:dXBvUp0m
clojureは#{}が集合のリテラルとしてある
他のlispでもリードマクロかけばそういうことはできる
是非についてなら。その表記が存在することが対象のプログラミングに有効ならあり、そうでなきゃなし
754
垢版 |
2014/12/06(土) 18:59:55.68ID:KgmhP8S/
ほほう。
clojure検討してみる価値あり?
2014/12/06(土) 19:20:33.09ID:dXBvUp0m
まあlisp系はマクロ書けば簡単に構文拡張できるから、新しい言語を試行錯誤したいなら最適ではあるよ
2014/12/06(土) 19:20:42.39ID:5oGFUyw+
RubyとかJavaにもSetオブジェクトはあるし、リテラルの有無はソースコードの見た目の問題で、
たいして重要じゃない。
2014/12/06(土) 19:28:14.31ID:dXBvUp0m
マッチョすぎワロタ
数値や文字列リテラルのない言語でも頑張ってくれそう
758
垢版 |
2014/12/06(土) 19:49:14.64ID:KgmhP8S/
リテラルの有無は結構気になるな、俺は。
Rubyの配列やマップのリテラルは気に入ってる。
759
垢版 |
2014/12/06(土) 19:51:57.69ID:KgmhP8S/
clojureってjavaなのか。
クラスパスとかあんまわかってないんだよな〜じつは
2014/12/06(土) 20:40:46.96ID:VB5mtD/4
>>748
VIPやシベリアだったらな。
761
垢版 |
2014/12/06(土) 21:05:36.24ID:KgmhP8S/
パッと見common lispよりclojureのほうがオサレにみえる。
あんまりcommon lisp知らんけど。
2014/12/06(土) 21:16:11.69ID:5oGFUyw+
なんでもいいから手を動かせ
763
垢版 |
2014/12/07(日) 00:04:16.45ID:2ooQYugx
OO言語だとobj.method(x)って書くけどlisp系だと(method obj x)って書くじゃん?
OO言語になれてるからかこの順番の違いが結構イラつく。
2014/12/07(日) 00:11:32.48ID:t9ahLiCr
ほんとこの1は駄目だなw
2014/12/07(日) 01:41:10.92ID:bfkTF4nN
lispでC風メソッド呼び出し構文開発したってのをどっかのブログでみたな
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のリテラル滅多に無い)
2014/12/07(日) 12:08:48.39ID:mrRmmrII
>>726
圏論の和書として定評があり再版が望まれているのは
http://www.amazon.co.jp/dp/4837504574
amazon 価格がすべてを物語っている
768
垢版 |
2014/12/07(日) 17:19:43.84ID:2ooQYugx
いつものようにclojureでconnect4書こうと思ったが、
>>763のことを差し引いても想像以上にモチベーション上がんない。
何のせいだ?
パッと見clojure良さそうに見えるのに。
Prologのときも苦戦したがモチベーションは保てた。
2014/12/07(日) 18:06:31.44ID:NlsKlGNA
>>768
このスレでは集合論に基づいた言語と関係ない話題はルール違反です。
2014/12/07(日) 19:50:11.74ID:npVck0tg
>>768
今度は「なぜか分からないけどモチベーションを保てない」かw

>>425>>559>>655-665
2014/12/08(月) 04:17:29.43ID:jYPMOE5Q
>>768
モチベーションを保てないってことだから続かないと思うけど
続けるならClojureスレに行け

【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
772
垢版 |
2014/12/09(火) 23:17:28.28ID:PZp4J+Rx
リアルが忙しくなりそうです。
しばらくこれなくなるかもだが、俺が留守の間おまえらでこのスレを盛り上げてくれよな。
よろしく。
2014/12/10(水) 21:31:22.32ID:7P/sQ89x
削除依頼していけよ
774
垢版 |
2014/12/26(金) 19:46:13.23ID:pkBFPf36
仕事納めだよ。
しかし見事にレスがついてないな。
お前らで盛り上げてくれていいのに。
2015/01/03(土) 12:40:55.68ID:XgnEofgF
>>1さんよ、

Coqという言語を使えば、集合論を含む数学の証明や、プログラムの性質や品質保証ができるらしいぞ。
やってみないか?
2015/01/03(土) 14:07:47.18ID:MdLSAVWL
>>775
>>713-714
7771
垢版 |
2015/01/03(土) 18:31:19.39ID:y8FDuePZ
とりあえず片山さんがCoqで一番成功してると思った例題を教えて
それで判断するわ。
2015/01/03(土) 19:06:58.41ID:XgnEofgF
俺もCoqについては初心者だが、数学、グラフ理論の超難しい問題
「四色問題」の証明がCoqでできたらしい。
7791
垢版 |
2015/01/03(土) 20:02:04.73ID:y8FDuePZ
手続き型言語とかに比べて完結に実装できるってこと?面白そうではある
780
垢版 |
2015/01/03(土) 20:38:21.69ID:rEeqS3sH
ID違うと思うけど1です。
簡潔に実装できるんじゃなくて、
実装はHaskellとかでやって、その正しさをCoqで保証するの?
よくわからん。
781
垢版 |
2015/01/03(土) 21:16:03.70ID:rEeqS3sH
Coq単体で動くのか。
prologに近いのか?
ぶっちゃけかなりむずいなこれは。
782
垢版 |
2015/01/03(土) 22:17:48.00ID:rEeqS3sH
わからんということがわかった。
底なし沼みたいな感じやなこれ。
2015/01/03(土) 23:44:50.02ID:Y5c4kVu7
今回のクレクレ・ループは終わりかな。

>>425>>559>>655-665
7841
垢版 |
2015/01/04(日) 13:03:03.07ID:1dxkxQcz
片山さんはCoqどれくらい書けるの?
例えばド、モルガンの証明とか書けるの?
2015/01/04(日) 21:15:57.30ID:izkph8nP
>>784
TutorialのPDFをコンビニで2in1pageで両面印刷して研究し始めたとこ。
数学と論理学と英語とプログラミングの知識が要求される地獄山だな。
786
垢版 |
2015/01/04(日) 21:40:34.76ID:7jAGFdTv
>>785
そのチュートリアルのURLくだしあ。
2015/01/04(日) 21:45:09.09ID:izkph8nP
>>786
「Coq tutorial PDF」で検索
2015/01/04(日) 21:59:00.42ID:7jAGFdTv
https://coq.inria.fr/distrib/current/files/Tutorial.pdf
これ?
結構分量ありますね。
789
垢版 |
2015/01/06(火) 00:03:50.53ID:iQ4UNt/k
Coqで任意の自然数nに対してn*(n+1)が偶数であることを証明しようとしたがどうしてもできない。
だれかHELP.
790
垢版 |
2015/01/06(火) 00:34:25.70ID:iQ4UNt/k
定義はこれで。
Theorem t:
forall (n:nat),exists m , (n*(n+1) = 2 * m).
2015/01/06(火) 05:55:25.49ID:Gduz5N96
偶数+1は奇数
奇数+1は偶数
遇数*奇数も奇数*遇数も遇数
自然数は奇数か偶数かどちらかである
792
垢版 |
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とかいうのが出てくるけど、ここからどうしていいかわからない。
793
垢版 |
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.
794
垢版 |
2015/01/06(火) 23:17:17.43ID:iQ4UNt/k
Coq難しすぎんよ〜
もう寝る。
795
垢版 |
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)).も証明できないのかもしれないな。
2015/01/07(水) 20:14:30.38ID:zH4wOwdk
1に餌を与えないでください。
>>425>>559>>655-665
7971
垢版 |
2015/01/07(水) 21:02:58.84ID:DdlkDaa+
odd 0 -> Falseは証明できたっぽい。
これをどう活用すればいいのかわからない。

Lemma l2:
odd 0 -> False.

apply not_even_and_odd.

apply even_O.
2015/01/08(木) 15:50:20.90ID:FouB2F9v
S
2015/01/08(木) 18:29:26.11ID:qFLJfmjp
O
2015/01/08(木) 19:09:01.13ID:XNa5H7Wz
S
801
垢版 |
2015/01/08(木) 20:07:08.21ID:9tH8cNHX
ハルヒか?
802
垢版 |
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
片山さん答え知ってたら教えて
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
> 私はお下品
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.
807
垢版 |
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を偶数と奇数に場合分けする方法がわからんとです。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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