集合論に基づいた言語を作りたいat TECH
集合論に基づいた言語を作りたい - 暇つぶし2ch300:1
14/09/20 22:48:20.83 YTPHYjLC.net
>>297
すいません。後付けできるってのがよくわからないです。
コンパイル時には明示的に宣言しないといけないのは型クラスもインターフェースも同じですよね?

>>299
集合論に基づいた言語は教科書の章末問題をサクサクっとインプリメントすることを目的としてる。
実用性はあんまり求めない。

301:デフォルトの名無しさん
14/09/20 23:24:10.24 rTgfsjb+.net
URLリンク(en.wikibooks.org)
のA concerted exampleと同じことをtype classなしで書いてみれば?
type classがあると細々としたことまで、
少ないコード量で強く型付けできることが分かるはず。

302:デフォルトの名無しさん
14/09/21 13:51:15.50 jEJWijVn.net
>>288
> haskell触ってみたけど、今のところ関数型言語や参照透過性の有難さはあんまり実感できてない。
参照透明の良さっていうのは、逆から言うと、状態が沢山あるコードはクソだ、ってこと。
停止性問題で難題になったのは、状態が少し増えるだけで組み合わせの数が爆発すること。
再代入が減らせれば、コードの複雑性が減ることがあるから、参照透明がありがたい。
関数型の良さは、宣言型言語であること。参照透明は関数型言語の目的ではなく、それを必要としているというだけだ。

生産性が劇的に上がるかというと、c++でテンプレートメタプログラミングしてる人からそれを取り上げたら劇的に生産性が下がると言うだろうし、const をc++から取り除いても劇的に生産性が下がるだろう。
Ruby と haskell を比べても仕方ない。
一つのプロジェクトで一つの言語しか使えないわけではないのだから、部分によって、書きやすい言語、高速な言語、ライブラリの充実した言語を使い分ければよい。
そして Ruby でも関数型スタイルで一部を書くことができる。

なんかちょっと固定観念が強い気がする。
あとコンピュータサイエンスと言語の歴史を知らないのにあれこれ分かったつもりになってるように見えるのが不安。

303:デフォルトの名無しさん
14/09/21 14:55:43.06 hG2OFVWB.net
「集合論に基づいた言語」をつくるうえで参考になるかもしれないということで関数型言語の話が
出てきているんだろうけど、>>1はそれについて、参考になったとか、自分が考えているのとはこう違うから
参考にならなかったという話はせず、効率やら生産性の話をするんだよな。
「集合論に基づいた言語」で効率や生産性の向上を目的としてないなら、関数型言語で効率や生産性の向上が
なくてもどうでもいいことだと思うけど。

304:デフォルトの名無しさん
14/09/21 15:30:26.77 hG2OFVWB.net
無限集合を扱おうとすれば、関数型言語にあるような遅延評価か、論理型言語にあるような全解収集をするしかないだろ。
要素の重複を認めないのなら、生成されたものがすでに集合に含まれているかどうか調べるためのしくみも必要だし。
集合の包含関係はどのように調べるんだろ。

それとも数式処理のようなものを考えているのかな。

305:1
14/09/21 16:27:12.72 iz+Z8HKh.net
>>302
関数型言語には状態がないってのはなんとなくしっくりこないなぁ。
状態はあるけど考慮しなきゃいけないスコープが関数の引数に限られるってイメージなんだが。
あと、参照透過性を守ったって停止性問題が根本的に解決するわけじゃないよね?

>なんかちょっと固定観念が強い気がする。
まあ、おれもいいおっさんだからな。
それなりに固定観念はあるだろう。

>あとコンピュータサイエンスと言語の歴史を知らないのにあれこれ分かったつもりになってるように見えるのが不安。
これは自覚症状ないんだが。たとえばどの辺が分かったつもりの発言になってる?


>>303
言語を評価するとなったら効率か生産性かだろう。
集合論に基づいた言語では狭い領域の問題に限り(教科書の章末問題とか)
高い生産性を発揮することを目標にしてる。
関数型言語触ってみたけど>>286のコードに関していえばヒントになるようなものはなかった。
型クラスとかは勉強すれば面白いのかもしれん。

306:1
14/09/21 16:55:50.54 iz+Z8HKh.net
>>304
無限集合は扱いが難しいので、できれば無しの方向で。

307:デフォルトの名無しさん
14/09/21 19:35:49.05 hG2OFVWB.net
無しの方向ってどうするの?
自然数全体の集合等を扱わないとか、内包的記法を扱わないとか。

308:1
14/09/21 20:23:58.88 iz+Z8HKh.net
自然数全体の集合の部分集合は基本的に表現するのに無限のビットを必要とするので。
遅延評価とか使えばある程度ごまかせるかもしれないけど、
遅延評価つかっても無限集合の包含関係とかは計算不能な場合もあるので、無限集合は扱わない方向で。

内包的表記は有限集合だけに使えるようにするとか。

309:デフォルトの名無しさん
14/09/21 20:27:48.01 WCtTxfaP.net
∞という数・文字をあつかえばいい。
{ 2n | n=1,・・,∞}は無限集合。

310:デフォルトの名無しさん
14/09/21 20:40:29.63 WCtTxfaP.net
無限大を扱うのも無限小を扱うのも似通ったもので。1/xで反転するので。
時空間で無限小を扱わない量子重力理論を思い出した。




時空の原子を追うループ量子重力理論  L.スモーリン(カナダ・ペリメター理論物理学研究所)

私たちは空間も時間も連続したものだと考えているが,実は大間違いかもしれない。
相対論と量子力学の統合を目指す新理論によると,「時空の原子」が存在する。
アインシュタインが果たせなかった難問解決の道筋が見えてきた。
量子力学と一般相対論の基本原理を注意深く組み合わせることで,「ループ量子重力理論」が生まれた。
この理論によると,空間は個別の小さな塊からできていて,最小の塊の体積はおよそ1立方プランク長(10-99cm3)だ。
時間の進みは飛び飛びで,その最小単位はおよそ1プランク秒(10-43秒)となる。
ループ量子重力理論は純粋に理論的な研究の成果だが,実際に検証できる可能性がある。
例えば,空間の構造が離散的だとすると,そこを伝わる光のスピードは波長によってわずかに異なる。
この観測が可能な天文衛星が計画されており,時空の離散的構造から生まれる効果が近い将来に確かめられるだろう。
URLリンク(www.nikkei-science.com)

311:1
14/09/21 20:47:19.79 iz+Z8HKh.net
>>309
簡単にいうけど、実際に実装するのは結構難しいんじゃないかな。

312:デフォルトの名無しさん
14/09/21 20:49:08.07 WCtTxfaP.net
量子重力理論でフリードマン方程式に到達 ―築き上げられた「ミクロからマクロへの架け橋」

「ビッグバンの只中に何が起こっていたのか」ということについては、現行の物理学では説明を下すことができない。
この二つを統合させた「全方位的な」理論 が―量子重力理論が ―求められているところであり、研究が進められている。
この度、ドイツとカナダの研究チームによってPhysical Review Lettersに発表された重大な発見は、まさにこの路線に沿ったものだ。

発表された理論によれば、空間はこれ以上分割することのできない、ほんの小さな「土台、構成要素 (building blocks)≒ 素空間」からできているという。
この着想を出発点として彼らが到達したのは、宇宙論の方程式のなかでも最も肝要なものの一つとして見なされている「フリードマン方程式」だ。
今回の成果は、量子力学と相対論が実際に統合可能であるということを示している ―
URLリンク(livedoor.blogimg.jp)

アインシュタインによる一般相対性理論では重力が扱われており、言うなれば「マクロな世界」を一般的に記述するのが相対論だ。他方、量子力学が扱うのは原子や素粒子といったような「ミクロの世界」だった。
両理論ともに、それぞれの縄張りの領域では成功を収めてきたが、プランクスケールのような極限的な状況においては破綻してしまう、という難点が指摘されていた。

水が原子から構成されているのとまったく同じように、空間はある種の「原子」から ―素空間から ―構成されているのではないか、とOriti氏は想像している。
そして、二つの理論を統合することのできるような新たな理論ではこの「空間の原子」を記述することが切に求められるというわけであり、その理論が冒頭でも触れた「量子重力理論」だ。

アインシュタインの相対論では、時空は連続的なものとして捉えられている。
しかし、Oriti氏らによる数学的なタスクでは、空間を極小の「素空間」へと分解して、これに量子力学を適用させることが試みられた。
それにより空間に、ひいては空間を記述する相対論に量子力学を応用してみる、というのがチームの企てだった。
URLリンク(livedoor.blogimg.jp)
URLリンク(blog.livedoor.jp)

313:デフォルトの名無しさん
14/09/21 22:44:17.86 eogfeBgw.net
>>308
>無限集合は扱わない
>内包的表記は有限集合だけに使えるようにする

こういうのはどうするんだ?

p(a,b) : a,bは(0以外の)自然数で、aはbで割り切れる
としたとき、
{x|p(x,1)} = {1,2,3,…}
{x|p(1,x)} = {1}

314:デフォルトの名無しさん
14/09/22 01:03:15.50 SEYHtX5N.net
>無限集合は扱わない方向で。

オートマトンが受理する列の集合が無限集合になることもあるけど
それも扱わないのか?
>>83

315:デフォルトの名無しさん
14/09/22 01:29:01.36 1b5tK9XE.net
ZFC

316:デフォルトの名無しさん
14/09/22 01:30:24.14 1b5tK9XE.net
ブール代数

317:デフォルトの名無しさん
14/09/22 01:32:50.90 1b5tK9XE.net
3値論理

318:1
14/09/22 06:51:14.13 XoUFao4y.net
>>313
両方扱わない。
それは、p(1,x)の計算結果がたまたま有限集合になってるだけで、
定義域は無限集合なので扱わない。

>>314
オートマトンが受理する列の集合を変数として扱うことはしない。
関数として受理するかしないかを判定することはもちろんできる。

>>315
ZFCから導き出される真の式の集合とかは変数として扱わない。

>>316
ブール代数は基本的に有限だよね?

>>317
マイナーすぎじゃね?

319:デフォルトの名無しさん
14/09/22 06:55:11.39 3ofAPdb2.net
>>318
では逆に、HaskellやPythonのリスト内包表記じゃダメな理由は?

320:1
14/09/22 08:32:07.69 XoUFao4y.net
遅延評価が必要になる。
めんどくさい割に実用的じゃないと思う。
haskellの無限リストを使うときだって最後はtakeとか使って有限集合に落とすんでしょ?

321:デフォルトの名無しさん
14/09/22 11:31:48.61 mNTZ+4bu.net
>>291
何の関係もない。

322:デフォルトの名無しさん
14/09/22 11:34:43.17 mNTZ+4bu.net
>>305
>状態はあるけど考慮しなきゃいけないスコープが関数の引数に限られるってイメージなんだが。

それが関数に状態がないということ。
引数が同じなら同じ結果を返す。
数学的な関数の定義に等しい。

323:デフォルトの名無しさん
14/09/22 12:49:44.48 jhj0pzxy.net
> haskellの無限リストを使うときだって最後はtakeとか使って有限集合に落とすんでしょ?

takeのように単純な関数だとは限らない。
ゲーム木の探索の枝刈りのようなややこしい条件で止めたりするから意味がある。

まあただtwitterで、らくだの人と川の人が時々論戦しているように、デフォルトで
なんでもかんでも遅延か、遅延にしたいものだけ明示的に遅延にするのが良いのか?
は、まだ結論が出ていないとは思う。

324:デフォルトの名無しさん
14/09/22 15:09:16.19 SUbucwZ9.net
無限集合を扱わないで

>教科書の章末問題をサクサクっとインプリメントする

のはちゃんとできるのかな。
できるんだったら >>15みたいなことを言わずに最初から有限集合に限定と言えば良いわけで。

325:デフォルトの名無しさん
14/09/22 16:52:16.32 4aSBsr7P.net
有限集合限定なら言語なんか作らずにライブラリで済むんじゃないか。
それにライブラリ作らなくても、Maximaなら要求よりももっと複雑なこともできる。

326:デフォルトの名無しさん
14/09/22 17:18:16.63 LvPIFofq.net
A. 無知ゆえに(ありきたりな)発想が溢れている人、行動力がある人
B. 知識でがんじがらめになって発想が死んだ人

たいがいこのどっちかに当てはまってしまう。そして結局このスレもAとBとの対立構造に終始して終わる。

327:1
14/09/22 18:14:10.47 XoUFao4y.net
>>322
そういわれるとそんな気もしてきますね。

>>323
ゲーム木の探索で遅延評価使うとminmaxがαβになったりするんでしょうか。
さすがにそこまではない?

>>324
無限集合を使って生産性が上がる例があるなら教えてほしいです。
無限集合は面白い概念だけど扱いが難しい。
正直>>15のときは無限集合の実装の大変さの見通しが甘かったと言わざるを得ない。

>>325
>有限集合限定なら言語なんか作らずにライブラリで済むんじゃないか。
その可能性はありますね。

>それにライブラリ作らなくても、Maximaなら要求よりももっと複雑なこともできる。
Maximaは昔少しだけ触ったことあるけど色んな事が出来るっぽいですね。
素因数分解とかやらせてみたことあります。

>>326
まあ、最悪なにも形あるものは生み出せなくても私は勉強になってますけどね。

328:デフォルトの名無しさん
14/09/22 19:40:23.96 3ofAPdb2.net
>>326
Aのほうが遥かにマシだな。
ありきたりでも行動していればそのうちありきたりじゃない発想が出る。
行動する人に対して既存の知識を振り回して笑うことしかできない奴は
いつまでたっても何もつくれない。

329:デフォルトの名無しさん
14/09/22 20:07:25.83 SUbucwZ9.net
>>327
生産性が上がる例とかいうのは知らんけど。
俺が何冊か見た集合論の教科書は無限集合を扱ったものばかりだったから、
無限集合を扱えない処理系で
>教科書の章末問題をサクサクっとインプリメントする
なんてできるのかな と思った。

無限集合を扱っている教科書を想定してたから>>15になったんだろ?

330:デフォルトの名無しさん
14/09/22 20:21:24.00 4th1shUN.net
あたし中卒やからね 仕事をもらわれへんのやと書いた
女の子の手紙の文字は とがりながら震えてる
ガキのくせにと頬を打たれ 少年たちの眼が年をとる
悔しさを握りしめすぎた 拳の中 爪が突き刺さる

331:1
14/09/22 20:46:51.62 XoUFao4y.net
>>329
>>15>>13で話振られたから答えただけ。
実は集合論の教科書はあんまり想定してなくて、離散数学の教科書を想定してた。

332:デフォルトの名無しさん
14/09/22 21:29:11.48 UZeuYMIm.net
集合を言語へどう使うか決まってないし、有限・無限とか細かい部分を決めても意味ないだろ。
スタンダードな言語に対して、集合が扱える仕組みが取り込めばいいだけなのかとか。

333:デフォルトの名無しさん
14/09/22 21:48:28.53 m1LWUU3t.net
集合論の教科書を想定せずに
>発想から徹底的に集合論的思想で言語仕様を考える
と言ってたのか…
で、結局、有限集合限定だから
>言語なんか作らずにライブラリで済む
んじゃないか、と…

334:デフォルトの名無しさん
14/09/22 21:54:05.38 LvPIFofq.net
ライブラリを作ってみてライブラリではここが不満だって気づいてから言語作り始めても遅くない。
そういう下地があると1ヶ月くらいでコンパイラを書ける。凡人でも。

335:デフォルトの名無しさん
14/09/22 21:56:13.85 Q+rXpvQc.net
>>330
ファイト!

336:デフォルトの名無しさん
14/09/22 21:58:03.07 M8xWvQpL.net
>>332
>有限・無限とか細かい部分を決めても意味ないだろ。

一番大きい部分だろw

337:デフォルトの名無しさん
14/09/22 22:23:43.15 UZeuYMIm.net
>>336
どういう用途に使うかに強く依存する。
たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。
最初に何に使うのかが決まらないと、有限・無限はどうするか決まらない。

338:デフォルトの名無しさん
14/09/22 22:31:18.61 M8xWvQpL.net
>>337
>たとえば、プログラムコードは有限だから、それを有限集合で表現するのは可能だろう。

何言ってるかさっぱり分からん。

>有限・無限とか細かい部分を決めても意味ないだろ。

とどう関係するんだ?

339:デフォルトの名無しさん
14/09/22 22:51:19.51 UZeuYMIm.net
任意のプログラムコードを、ある自然数に対応させることは可能のはずだ。この値は有限値で。
具体的には、ゲーデル文構成のようにしたらいいと思うが良くはわからん。



ゲーデルの不完全性定理 - Wikipedia
ゲーデルの不完全性定理とは、数学基礎論における重要な定理の一つで、クルト・ゲーデルが1930年に証明したものである。
ゲーデル文の構成
ゲーデル数というテクニックを使って間接的に自己言及を可能とし、ゲーデル文を構成する。
コンピュータでは全てのデータを一意な数値で表しており、特に文字列や論理式そして論理式の列も数値で表す。
このように、論理式を数値で表す行為を論理式のゲーデル数化といい、命題Pに対応する数値をPのゲーデル数という。

340:デフォルトの名無しさん
14/09/22 22:56:41.54 UZeuYMIm.net
ゲーデル数 - Wikipedia
ゲーデル数は、数理論理学において何らかの形式言語のそれぞれの記号や整論理式に一意に割り振られる自然数である。
一般化
計算可能性理論において、「ゲーデル数化」は上述よりさらに一般化した意味を持つ用語として使われる。
1.形式言語の構成要素に自然数を割り当てて、形式言語の構成要素の操作を、数を操作するアルゴリズムでシミュレートできるようにする。
2.より一般化して、枚挙可能な数学的オブジェクトに自然数を割り当てて、その数学的オブジェクトにアルゴリズム的操作ができるようにする。
これは数というよりも文字列を操作する計算模型(チューリングマシンなど)に必須の考え方である。



チューリングマシン - Wikipedia
チューリング機械とは次の7つ組である。
URLリンク(upload.wikimedia.org)
Q は有限集合であり、その元を状態という。
Γ は Q に交わらない有限集合であり、字母とよばれる。その元を記号という。
b は Γ の元であり、空白記号とよばれる。
Σ は Γ - {b} の部分集合であり、入力字母とよばれる。その元を入力記号という。
δ は Q × Γ から Q × Γ × {left, right} への写像であり、遷移函数とよばれる。δ(q, a) = (q', a', m) は、
「現在の状態が q であり、着目位置にある記号が a であれば、状態を q' に移し、着目位置に記号 a' を書き込んでから、着目位置を m 方向に1つずらす」と読む。
qinit は Q の元であり、初期状態とよばれる。
qacc は Q の元であり、受理状態とよばれる。

341:デフォルトの名無しさん
14/09/22 23:19:51.98 M8xWvQpL.net
お前アホだろ。
>プログラムコードは有限だから
ってコード長が有限ってことを言いたかったのかよ。

342:デフォルトの名無しさん
14/09/22 23:51:04.16 UZeuYMIm.net
言語の開発以前に、無限にするか、有限にするか決めたとして。
有限の範囲ではおさまらない具体的な例・モデルってあるのか?
既存のコンピュータ、ノイマン型は、有限集合で操れるから具体的にイメージ出来ない。

343:デフォルトの名無しさん
14/09/23 00:04:48.04 FXTBDWVe.net
とりあえず有限長の語の集合が無限集合になりうることくらいは理解してくれ。
証明が無限を扱うことと、証明長が有限なことは全然別の話。
プログラムにしても同様。

344:デフォルトの名無しさん
14/09/23 00:11:51.00 dVlUahkv.net
>>343
それは分かってて。
さきに無限を使うと選択した場合、具体的な利用法が不明。
既存のプログラム、有限集合で扱える範囲を超えなかったら意味が無い。

345:1
14/09/23 00:23:18.08 oT3Rknt8.net
>>344
計算不能な集合を扱いたいの?

346:デフォルトの名無しさん
14/09/23 00:32:18.88 dVlUahkv.net
言語を開発する上で、既存の有限集合に基づくモデルで十分だという立場。
無限を扱うメリットを知りたい。

347:デフォルトの名無しさん
14/09/23 00:50:04.92 dVlUahkv.net
無限小、無限大を取り込んでない、自然数に基づく数学に、あとから無限小、無限大を取り入れても矛盾しない。





超準解析 - Wikipedia
超準解析ではイプシロン-デルタ論法によって一度は数学から追放されたと思われた、無限小や無限大という極限に関する古典的で
直観的な感覚、すなわち、いわゆる実数論にもとづかないライプニッツ流の古典的な微積分を数学的に厳密に定式化し、取り戻すことができる。
このような古典的な微積分におけるオリジナルな無限小解析学とは区別されることもある。
アブラハム・ロビンソンによって考案された。超準解析の基本的な手法である超積はアラン・コンヌらによって作用素環の研究に応用されてもいる。
超実数は実数を拡張した数概念である。実数体に無限小・無限大を加えたものは体をなし、超実数体と呼ばれる。
超実数体は *R, R* などと表記される。その元を超実数という。



Rubyによる 超準解析 クラス.(HyperRael,MathExt)
超実数体とは,(大雑把に云えば) 実数体にライプニッツ的な無限小を添加して出来る体のことだ.
微分等, 通常の実数では limit を使う場面で, 超実数体内部の四則演算として直接求めることが出来る.
超準的な計算では, 無限小や∞の強さもわかるので無限小/無限小, 無限小*∞, ∞/∞ 等の計算が矛盾無く解釈可能となる.
ただし単なる体なので, 真の0(無限小でなく) については, 0*∞=0 で, 0/0 や 1/0 は定義されない.
この点は IEEE754 的な浮動小数点計算で 1.0/0.0 で Infinity を返すような気持の悪さは解消できる.
URLリンク(www.math.kobe-u.ac.jp)

348:デフォルトの名無しさん
14/09/23 00:58:09.60 IDDuvAyc.net
んなもん、チューリング完全な言語は能力同等なんだから
無限をその言語機能で直接書きやすく実行効率よくするかどうかの判断しだいだよ
で、1はもう無限を直接扱うのはあきらめたんでしょ

今度は有限の制約があっても、1が元々やりたかった範囲がカバーできてるのかって問題になるわけだが、
「やりたかった範囲」がぼんやりしてるからこれ以上はわからんわな

349:デフォルトの名無しさん
14/09/23 01:02:03.65 IDDuvAyc.net
おっと書きわすれた。まあ俺もみんながいってるように、
まず既存言語+ライブラリでやりたいことがどの程度できるのか確かめる
のがいいと思うけどね

350:デフォルトの名無しさん
14/09/23 11:31:06.71 5tA+8B0p.net
無限集合を扱わない代わりにストリームを集合として扱えるようにしようぜ

351:デフォルトの名無しさん
14/09/23 11:38:18.07 yLd7Mbmy.net
無限集合を扱うのが困難なように言っているが、どういう操作を実装するか次第だろう。
例えば分数ライブラリがあるが、必要になればいくらでも循環小数や無理数の桁を取り出せ、しかし普段は分子と分母を保存しておくだけ。
それをさらに除算以外の演算もサポートした、値を式で保持するライブラリもある。
実際に何かの集合を扱うたびに本物のコンテナを生成するよりもマシな気がするけど。

>>305
> 関数型言語には状態がないってのはなんとなくしっくりこないなぁ。
変化しないものは状態といわない。
例えば人間には生と死という状態があるが、親が人間かどうかというのは変更がないから状態とはしない。
プログラムでいえば再代入のあるものが状態だ。
c/c++のconst変数は建前では参照透明だ(キャスト、mutableがであるので実際は違う)。
本当に関数型言語に状態がないかどうかは言語によるし、システムコールによる副作用があっても参照透明と呼ぶのはレトリックと言われても仕方ない気もする。
特定の言語自体の価値よりも、関数型プログラミング的テクニック全体に価値がある。c++でもPythonでも使える。

> あと、参照透過性を守ったって停止性問題が根本的に解決するわけじゃないよね?
難題とか複雑性が減るとかいう表現を使ったのは、停止性問題の証明には関係ないからだよ。

> これは自覚症状ないんだが。たとえばどの辺が分かったつもりの発言になってる?
>288 を読んで知ったかぶりらしく思わない人がどれだけいただろうか。

352:デフォルトの名無しさん
14/09/23 12:03:18.67 9ll4fKxj.net
>>326は嘘で、無知で発想が支離滅裂で実行力もない人が多いみたいです。

353:デフォルトの名無しさん
14/09/23 16:14:06.99 49Grt2TR.net
実装に寄らないクラス定義、メソッド、オペレータ、その処理の定義決めればいいんじゃね
オペレータオーバーロードできない処理系ではオペレータの代わりにメソッド実装でいいし、しっかり概念が定義されてたらどの言語にも移植できるやん

354:1
14/09/24 20:26:39.07 sdype2Aq.net
うーん。とりあえず、集合のリテラルがある言語、またはリテラルを自作できる言語ってある?

355:デフォルトの名無しさん
14/09/24 20:34:18.13 Z2e1BcPM.net
C++11

356:デフォルトの名無しさん
14/09/24 20:46:24.29 c/ueWxaZ.net
Pascalの型に集合はあったけど、リテラルあったっけ?

357:1
14/09/24 21:32:20.18 sdype2Aq.net
C++11すげぇw
正気の沙汰とは思えないw
しかしこれ、setみたいなテンプレート型のリテラルもちゃんと作れるのかなぁ?

358:デフォルトの名無しさん
14/09/24 21:47:35.83 icQzJbDu.net
つうかC++11使ってリテラル定義しなくても、初期化子書けばいいだけ。

359:1
14/09/24 21:59:47.35 sdype2Aq.net
std::initializer_listなんてものもあるのか。
世の中知らないうちに便利になってるな。

360:デフォルトの名無しさん
14/09/24 22:19:34.82 u+CQqrHx.net
VDM URLリンク(en.wikipedia.org)
Z URLリンク(en.wikipedia.org)

361:デフォルトの名無しさん
14/09/25 22:46:08.06 paFK2VHq.net
>>1 >>360
あーまだそんなこと言ってるのか

362:1
14/09/26 20:57:23.89 TQ6i6UUU.net
C++11結構面白そうだが完全準拠したコンパイラが無いっぽい?

363:デフォルトの名無しさん
14/09/26 21:17:42.44 v6QeAlLd.net
お前のOSにゃ無いかもしれんな

364:1
14/09/26 21:24:17.23 TQ6i6UUU.net
とりあえず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;
}


とか書けていい感じ。

365:デフォルトの名無しさん
14/09/26 21:37:43.18 rLR78veI.net
>>1はC++のように集合が扱える言語が実現したいのか?
一部のスクリプト言語だったらかなり以前からできていなかったか。
CでもC++でも以前から、ライブラリで拡張したら集合は扱えたはずだろ。

366:1
14/09/26 21:56:27.24 TQ6i6UUU.net
>>365
個人的にはもうちょっと言語の設計が根本から変わるようなものが
集合にはあるんじゃないかと思ってるんだが。
それがなんだかは分からないw
いまのところ集合を普通のライブラリとして用意する以上のアイディアは出てない。

367:デフォルトの名無しさん
14/09/26 22:40:52.33 mU/FSdzC.net
>>856 の続き)

始めは「考えられるリスクの低減」から
・ライブラリや共通部品の多くは(アルゴリズムやデータ変換を実現する単純なものもあるが)
 データベース/ファイル/ネットワーク/プロセス間通信といったプログラムの
 外部インターフェイス処理が多くを占める
 これらを実装するには、プログラマにシステムコールや標準ライブラリ(>>829)、
 そして社外のライブラリや社内の共通部品等等、幅広い知識が求められる
 これを経験の浅いメンバに負わせるのは無謀
・ライブラリ/共通部品の実装技術は機能仕様(=ビジネスルール)には依存しないから、
 類似のシステム開発プロジェクトがあれば、類似の実装になる
 もしライブラリ設計担当がいくつかのプロジェクトを経験したベテランであれば、
 過去の(失敗を含めた)経験から、既存の設計やコードを改造母体にして短期間で設計できる
 これと同じことを経験の浅いメンバに期待するのは無茶
・万が一、ライブラリ/共通部品の開発日程が遅延して結合テストに間に合わなかったり、
 結合テストでバグが多発する事態になれば、その影響はプロジェクトの全体に及ぶ
 もしモスク(>>856)の中位/上位層であれば影響範囲は限定的だし、
 その炎上の火消しのためにライブラリ/共通部品を担当させて余力のあるベテランを投入できる
 (当然、ライブラリ/共通部品設計には日程厳守(or 前倒し)と高品質(=バグ0)をベテランに要求する)

368:1
14/09/26 22:44:11.22 TQ6i6UUU.net
>>367
仕事でやってんじゃないんだから好きにさせろ。

369:367
14/09/26 22:44:51.94 mU/FSdzC.net
>>367 は誤爆だから無視してくれ、スマソ

370:1
14/09/26 22:55:37.85 TQ6i6UUU.net
誤爆とは思えないほどスレの流れに合ったレスだったが。
まあいいや。

371:デフォルトの名無しさん
14/09/27 12:16:01.73 Tn3/IHEN.net
オメガってZFに基づいた言語がアメリカにあったはずだが見つけられない。
集合はsetとclassの型付け。
上にある仕様記述言語Zとは別。

372:デフォルトの名無しさん
14/09/28 20:41:53.96 T/KmqFBE.net
>>1
>>360についてはどうなのよ?

373:1
14/09/28 21:20:59.19 ngbZk+Gk.net
>>371
すまん。あんまりちゃんと読んでない。
wikiだけじゃよくわからんというのが素直な感想。
それに英語は大の苦手。

374:1
14/09/28 21:21:51.62 ngbZk+Gk.net
安価ミス
>>372

375:デフォルトの名無しさん
14/09/28 22:47:39.25 qFZf/al/.net
>>373
URLリンク(homepages.cs.ncl.ac.uk)
URLリンク(www.cs.ncl.ac.uk)
URLリンク(spivey.oriel.ox.ac.uk)
URLリンク(staff.itee.uq.edu.au)

英語が苦手なのに
>しかたないのでこのスレは>>4とかの言語を勉強するスレにするか。
と書いたのか。

376:1
14/09/28 23:24:45.68 ngbZk+Gk.net
>>375
英語苦手なのでこれを読むのは結構時間かかると思う。
まあ、ぼちぼち頑張る。

377:デフォルトの名無しさん
14/09/28 23:48:18.69 qFZf/al/.net
>>376
URLリンク(homepages.uel.ac.uk)
URLリンク(www.cs.nott.ac.uk)
URLリンク(formal.iti.kit.edu)

378:1
14/09/29 00:04:52.39 O3Lh9EkL.net
>>377
こっちのほうが入門っぽいの?
まあ、あんまプレッシャーかけんなや。

379:デフォルトの名無しさん
14/09/29 01:12:43.07 1qhCFqkI.net
>>360についてどう思うかたずねられる →「wiki(pedia)だけじゃよく分からん」
詳しく書かれている文書を提示される →「読むのに時間がかかる」
もっと短い文書を提示される →「プレッシャーかけるな」

380:デフォルトの名無しさん
14/09/29 13:28:38.13 AXPWss48.net
>>1
センスは悪くないが、致命的に勉強が足りんな

381:1
14/09/29 18:35:35.54 O3Lh9EkL.net
>>379
このスレで提示されたもの、俺が全部勉強しなきゃいかんのかと思うとちょっと怖いんだが。
>>380
勉強不足なのは認める。

382:デフォルトの名無しさん
14/09/29 20:16:07.80 onaWAXdx.net
どっちに進んだらいいのか分からないんだから、提供された情報を手がかりにして、
wikiだけじゃ分からんとか言わずに自分で情報をさがして勉強するしかないだろ。

情報を提供してもらうためにスレを立てたんだろ。

383:1
14/09/29 20:43:37.99 O3Lh9EkL.net
>>382
スレたてた時は軽い気持ちだった。
なんかこんなガチな感じのスレになるとは思ってなかったと言わざるを得ない。

384:1
14/09/29 20:52:49.67 O3Lh9EkL.net
>>377
ちょっとだけ読んでみただけだから誤解があるかもしれないけど、
これは仕様をガチガチに固めるためのもの?
こんなこと言うと批判がありそうだけど俺としてはbashやRubyみたいに緩い感じでコーディングして
仕様変更があってもちょちょっとハッキングすれば何となく動いちゃうみたいのが好みなんだけど。

385:デフォルトの名無しさん
14/09/29 22:24:17.39 MPdknRrK.net
>>383
>>365の言うとおりだけど、不勉強だから、
「発想から徹底的に集合論的思想で言語仕様を考える」って大風呂敷を広げてしまったわけだ。

386:1
14/09/29 22:46:32.46 O3Lh9EkL.net
>>385
まあ、ぶっちゃけ俺には>>365を超えるような大したアイディアがあったわけじゃないな。
みんなで雑談してるうちに面白い話が聞けたらいいなぐらいの気持ちだった。

387:デフォルトの名無しさん
14/09/29 22:53:43.66 6QlMlDt4.net
Python の set とかってイメージしてる "集合" とはどういう関係にあるのかな

388:デフォルトの名無しさん
14/09/29 23:54:29.23 4aZKHf7r.net
Zは仕様記述言語だよ。
Notationと言われているように、日本語だと記法と言ってもいいかもしれない。

389:デフォルトの名無しさん
14/09/30 00:05:52.09 lw4FII9v.net
>>386
大風呂敷を広げている自覚があるならたためばいいのに。
>>365には「そのとおりだ。不勉強だから『発想から徹底的に集合論的思想』などと大風呂敷を広げてしまっていた」と言い、
>>360には「情報ありがとう。でも考えているのは>>365のようなものだからVDM等とは方向が違う」とでも言えばよかったのに、
「言語の設計が根本から変わるようなもの」とか言い出すし。

390:デフォルトの名無しさん
14/09/30 00:27:57.32 QoKiTOmo.net
過去の発言をあげつらうとか無粋なことを‥
そのときどきで感想がぽつぽつ上がってそこから何かが生まれればよし、そうでなくてもいいので、こうしてお付き合いしているわけだし‥

391:デフォルトの名無しさん
14/09/30 00:47:37.34 63XDoi4/.net
1の興味がどっちに向いてるのかはっきりさせとかないと、誰かが>>360のように情報を出してくれても、
1は興味を持てず理解もできず、情報を出してくれた人を無視することになるわな。

392:デフォルトの名無しさん
14/09/30 04:58:34.96 AOM1YMTX.net
一次元で言ったら
(1-5) | ( 2-6) | (3-9) | (9-10) = (1-6, 3-10) こういうの返すとか
2次元だと、GDIなんかでもよくあるリージョン計算とか
三次元にも応用してとか
言語にこだわらず、集合表記決めて興味持った人が各言語で実装するのがいい

393:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/09/30 07:28:17.49 JjKI4EMd.net
ひらがな電卓Calc-Hだと、
「ろくのやくすうはなんですか」とか
「じゅうにいかのそすうは」とか
「よんのばいすうはにでわりきれるか」とか
「いちいじょうのろくのばいすうは、ごよりおおきいさんのばいすうか」
といった質問に答えられるんだけど。参考までに

394:デフォルトの名無しさん
14/09/30 12:59:47.25 X/itkzZm.net
>>381
勿論勉強なんか最低限でよい。
ただ集合言語を論じるなら、「Z」と「集合論プログラミング」(ググれ)
のさわりだけはおさえとけ(それだけでいいよ)

395:デフォルトの名無しさん
14/09/30 15:20:16.06 3YX+fixm.net
さわりは音楽でいうサビかイントロか。
イントロと間違う人も多いだろう。

396:デフォルトの名無しさん
14/09/30 16:07:43.18 tX5UXYDw.net
そりゃサビだろ
最低限なんだから大事なところ押さえないと

397:1
14/09/30 20:27:22.22 p23v2Yf3.net
>>389
まあ、大風呂敷を広げた方が話が盛り上がるかと思って。

>>391
正直すべてのレスをフォローするのはしんどいかも。
方向性はまだ固まってないです。

>>393
結構、ことばがわかりません。ていわれる。
いまのでも結構すごいがこれを実用までもっていったらかなりすごいと思う。

>>394
Zはオブジェクト指向でいうUMLみたいなもん?
集合論プログラミングはぐぐったけどCiNiiの論文がヒットした。
プレビュー読んでみたけどアルゴリズムを自動生成するの?
確かにすごいし理屈も通ってると思う。
これの処理系がすでにあるなら触ってみたいけど、
自分で実装しようとは思わないw。大変すぐるw。

398:1
14/09/30 21:50:21.63 p23v2Yf3.net
集合論プログラミングは確かに言語の設計が根本から変わってると思う。
こういう情報が得られるだけでもスレをたてた甲斐があるというもの。

399:デフォルトの名無しさん
14/09/30 22:19:13.15 ic/LPcqx.net
>>398
わざわざスレを立てなくても 集合論 プログラミング でググればすぐ見つかるんだけど。
「発想から徹底的に集合論的思想で言語仕様を考える」と言っておきながら
その程度の検索すらしてなかったんだな。

400:1
14/09/30 22:29:12.29 p23v2Yf3.net
>>399
まあな。

401:デフォルトの名無しさん
14/09/30 23:59:40.07 izhA5Hzv.net
>>397
アルゴリズムの自動生成をするわけではなく、論理式を使って書かれた
仕様を元にして人間がプログラムを作っていくもので、VDMやZと同じ
方向なんだけど、感想がずいぶん違うな。>>384 >>398

402:1
14/10/01 06:02:07.09 0+f79Okt.net
>>401
VDM  書いたものが実装にならない
集合論プログラミング  書いたものが実装になる

と思い込んでたからな。
どっちも書いたものが実装にならないならあんまり俺の趣味じゃないなぁ。
集合論プログラムは書いたものが実装になってもよさそうなほど
論理を詰めていたように見えたが気のせいだったか。

403:デフォルトの名無しさん
14/10/01 09:03:58.23 Srlu7drV.net
>>402
VDMは実行可能だ

404:デフォルトの名無しさん
14/10/01 11:04:19.89 PsfjCcq+.net
>>398
やっぱりアンタはセンスが良い。というかこれから何かできる人だ。
集合論プログラミングはZなんかに比べるとマイナーだが、Zより実質がある。
実装もできる。アンタが土台にするべき言語はこれじゃないかな?
検索してないとかなんとかというノイズは無視していいよ。

405:デフォルトの名無しさん
14/10/01 14:56:19.11 BreyGGJ4.net
>>402
論理式を使って、プログラムに自動的に変換できそうなほど詳細な仕様を書くのは、
>緩い感じでコーディングして仕様変更があってもちょちょっとハッキングすれば
>何となく動いちゃうみたいの
とはかなり違うわな。

406:1
14/10/01 19:43:26.77 0+f79Okt.net
>>403
どうゆう意味で実行可能なの?
他のプログラムの外付けアサート的な動作しかできないのかと思いこんでいたが。
VDM単体で動くの?

>>404
俺をおだてても木には登れんぞ。
集合論プログラムのコンパイラを作るなんて俺の実力じゃとても出来そうもない。
ユーザーとしてなら使ってみたいが。

>>405
仕様を詳細にするのはやり方がまずいと柔軟性のないプログラムになると思う。
抽象度の高いプログラムで仕様を満たせるならそっちの方がいいと思う。

407:デフォルトの名無しさん
14/10/01 19:49:09.29 OzkCABBw.net
>>406
インタプリタで実行できる

408:1
14/10/01 20:28:28.86 0+f79Okt.net
>>407
まじで。英語だからちゃんと読んでないけど>>360のwikiにsqrtの例で

SQRT(x:nat)r:real
post r*r = x

とかいうのがあったからこりゃ単体じゃ実行できないなと思ったんだけど。
早計だったか。

409:デフォルトの名無しさん
14/10/01 20:39:41.94 OzkCABBw.net
>>408
VDMには実行できるexplicit specと実行できないimplicit specがある。
その例は実行できないimplicit specのほう。
このリンク先のはみな実行できるexplicit spec
URLリンク(www.vdmtools.jp)

410:1
14/10/01 21:57:06.59 0+f79Okt.net
>>409
なんか、サンプルプログラムよんでもイメージが湧きづらい。。。
文字列操作の前後のスペースをトリミングとか何やってるのかよく分からん。

[ p | p in set inds org & org(p) <> ' ']がorgの空白でない文字のインデックスの集合で
パターンマッチでその集合の先頭と末尾を取り出してる。
sがorgの空白じゃない最初の文字のインデックスでeがorgの空白じゃない最後の文字のインデックス
でorg(s,...,e)で頭とおしりの空白を取り除いた文字列を返してるってこと?

411:1
14/10/01 22:21:29.56 0+f79Okt.net
[]は集合じゃなくて列か。

412:デフォルトの名無しさん
14/10/01 23:50:12.62 PsfjCcq+.net
>>409
クソVDMなんか持ってくるんじゃねえよ。
お前はセンス悪い。

413:1
14/10/02 12:38:59.14 CtSzUDAx.net
あれ?乗っ取られてる?立てただけでちょっと居なくなったすきに…

414:1
14/10/02 18:33:20.87 McIgqFFk.net
>>413は偽物。
といっても俺も本物だと証明できるものはなにも持ってないな。
まあ、何が本当かは皆さんの判断に任せるとしましょう。

415:デフォルトの名無しさん
14/10/02 19:01:12.47 J690LAeG.net
ここって>>1となれ合うスレ化してるから、馴れ合ってる1こそが1

416:デフォルトの名無しさん
14/10/02 19:52:03.79 sULo4gIN.net
>>414
トリップっていうのをつけたら?
URLリンク(detail.chiebukuro.yahoo.co.jp)

417:1
14/10/02 20:07:14.68 McIgqFFk.net
>>416
今からトリップつけても過去のスレに対してはなんの証明にもならんけどな。
今からでもみんなが付けろっていうなら付けるが。

418:デフォルトの名無しさん
14/10/02 20:38:47.31 sULo4gIN.net
>今からトリップつけても過去のスレに対してはなんの証明にもならん
それは>>415のように考えるしかない。

419:1
14/10/02 20:45:42.53 McIgqFFk.net
>>418
まじでw

420:1
14/10/03 20:31:44.20 dWJ2kSUt.net
Rubyだとトリミングはstr.stripで一発だな。
ライブラリつかわんでもstr.gsub(/^ +/,"").gsub(/ +$/,"")でワンライナーか。
この比較がフェアかどうかは微妙だが、Rubyと比べてVDMは読むのしんどいな。
慣れてないだけかもしれんが。

421:デフォルトの名無しさん
14/10/03 22:20:11.35 wImYRAo7.net
>>420
的外れな比較だな。

422:1
14/10/03 22:25:06.66 dWJ2kSUt.net
>>421
やっぱそうか。そんな気はした。
でもこういったこまごまとした道具がきっちりそろってるのもRubyの魅力なんだよな。

423:デフォルトの名無しさん
14/10/04 04:41:52.82 TsYLxX57.net
で、文字列をトリミングするのが君のいう集合論ベースの言語なのかい?

424:1
14/10/04 09:55:23.27 jzKUq2O9.net
>>423
トリミングについてはちょっとふれただけだろ。
そんなに粘着した覚えはないぞ。

425:デフォルトの名無しさん
14/10/04 12:53:49.48 TsYLxX57.net
言ってることがブレブレなんだよ。
集合論から徹底的にと言ってみたり有限集合だけと言ってみたり
言語仕様だと言ってみたり便利なライブラリだと言ってみたり
美しい言語だと言ってみたり処理速度がどうのと言ってみたり
で、今度は文字列操作ユーティリティライブラリの充実度か。

結局何がしたいんだ?

426:デフォルトの名無しさん
14/10/04 13:00:56.11 by55sH8H.net
有限集合のみだと素朴集合論以下だしな。

427:デフォルトの名無しさん
14/10/04 13:34:13.41 s6wyGDsN.net
>>425
そんなに結論を急ぐのはなんでなの?

428:デフォルトの名無しさん
14/10/04 14:11:28.47 TsYLxX57.net
結論どうこう以前に
こうまで毎回後だしジャンケンばかりでは
永遠にグダグダだろ

429:デフォルトの名無しさん
14/10/04 16:04:23.04 +NqOnrEc.net
個人のチラ裏にそんな文句つけてやるなよ

430:デフォルトの名無しさん
14/10/04 16:08:30.01 aLeuItWT.net
ID:TsYLxX57の書き込みに文句をつけるのもなしの方向で

431:1
14/10/04 16:10:38.32 jzKUq2O9.net
>>425
何がしたいかといわれると、建前では教科書の章末問題のようなものを
サクサクインプリメントできる言語をつくりたいだが、本音を言えば>>386だな。

まあ、集合論に基づいた言語自体、まだ形がほとんど何もできてない状態だから
議論がぶれるのはある程度しかたないな。

>>428
後出しジャンケンといわれても困るんだが。

432:デフォルトの名無しさん
14/10/04 16:17:38.75 aLeuItWT.net
何の教科書だよ。
集合論に基づいた言語と言うから集合論の教科書かと思ってたら
集合論の教科書は想定してなかったとか言い出すし。

433:1
14/10/04 16:23:04.72 jzKUq2O9.net
>>432
まあ、主に離散数学だな。

434:デフォルトの名無しさん
14/10/04 18:36:28.77 TedbKwqo.net
zfcに基づいたプログラミング言語は理論上作成可能?

435:デフォルトの名無しさん
14/10/04 19:35:13.51 WpG7hkwu.net
論理言語なんてPrologでええやん

436:デフォルトの名無しさん
14/10/04 19:46:48.95 TsYLxX57.net
基づくというだけなら既存のスクリプト言語のsetクラスでも、基づいているとは言えるんじゃね?
ZFCで表現可能な全ての集合を扱える、という条件なら、無理だろ。

437:デフォルトの名無しさん
14/10/05 18:24:35.09 jh4sXRSC.net
>>434
そりゃ可能だよ。既にだれか作ってたような

438:デフォルトの名無しさん
14/10/06 01:43:06.63 NlMQaHfx.net
選択公理は無理だろ。
無限公理もキツイと思う。

439:デフォルトの名無しさん
14/10/06 12:01:11.94 DaOiROEZ.net
選択公理って、よーするに、どんな集合からでも「その要素を一つ選んで取り出す」ことができる、
とする公理でしょ。コンピュータでそれを原理として使えない理由ってある?

(本物の実数の濃度を持った集合を表現できない、とか?)

440:デフォルトの名無しさん
14/10/06 12:36:12.97 Fl7PIp2q.net
「無限集合の無限集合」をどう扱うよ?

441:デフォルトの名無しさん
14/10/06 12:55:54.86 DaOiROEZ.net
(ポインタで表される)一つの要素であることに変わりは無いと思うけど

442:デフォルトの名無しさん
14/10/06 13:25:58.86 Fl7PIp2q.net
…解らないなら解らないと正直に言えばいいのに…

443:デフォルトの名無しさん
14/10/06 15:33:29.23 DaOiROEZ.net
説明できないなら(以下略

444:デフォルトの名無しさん
14/10/06 15:44:15.26 Chlrt5UY.net
選択公理は選択する方法があるとは主張するけど、選択する方法を具体的に出す訳じゃないから無問題

445:デフォルトの名無しさん
14/10/06 22:35:03.81 NlMQaHfx.net
>439
可能無限なら扱える。実無限は無理。

>441
自然数で番号付けできているから、実数は扱えない。

>444
実数は選択できないよ。

446:デフォルトの名無しさん
14/10/06 22:39:52.81 DaOiROEZ.net
哲学屋が語る論理の本で勉強したなw

447:1
14/10/06 23:54:52.31 FKIcXs6f.net
なんか計算不能な問題に取り組ませたい奴がいるっぽいな。
>>48と同じ奴か?

448:デフォルトの名無しさん
14/10/07 00:54:44.71 EYnjWx9Z.net
スレタイに釣られるとそうなるよ

449:デフォルトの名無しさん
14/10/07 05:00:08.90 p/BL+CDX.net
DaOiROEZの半可通っぷりが最高w

450:デフォルトの名無しさん
14/10/07 10:56:48.49 +SCn7tHo.net
ZFの範疇でさえ消化できてないのに、実無限なんて飛躍しすぎ。

451:デフォルトの名無しさん
14/10/07 11:06:53.72 SMQvkaFY.net
どうせなら、量子コンピューターで使う言語にまでにして欲しいな。

452:1
14/10/07 21:14:56.86 QnZoLRl/.net
量子コンピュータってまだ有効なアルゴリズムが2つ3つしか発見されてないんじゃなかったけ。

453:デフォルトの名無しさん
14/10/07 21:30:05.48 waP9/Nh6.net
量子状態を集合的に扱うと便利。

454:デフォルトの名無しさん
14/10/07 21:41:15.48 9NXt3xp/.net
>450
少ない公理だけでやるんだったらProlog (HornCNF) で十分だと思う。
というかPrologがろくに検討されていないのはなぜ?

455:1
14/10/07 22:20:49.79 QnZoLRl/.net
Prologもやってみる価値あり?

456:デフォルトの名無しさん
14/10/08 04:21:45.13 prFbm0Ro.net
公理論ベースのプログラミング言語というのにPrologを検討してないとか意味わからなすぎ

457:デフォルトの名無しさん
14/10/08 11:09:43.78 OludtdBn.net
単なる述語論理じゃないか。

458:デフォルトの名無しさん
14/10/08 12:20:34.72 dWGNDTcI.net
>>1ってそもそも集合論、公理的集合論を系統的に学んだこと無いだろ?

459:デフォルトの名無しさん
14/10/08 12:47:37.54 h0nYZNts.net
既存の言語に有限集合演算を追加するところから始めれ。
クソスレが一個増えただけで終わる前に。

460:デフォルトの名無しさん
14/10/08 18:43:36.24 UKHmkXIf.net
ここは元々>>1の勉強スレ

461:1
14/10/08 18:47:59.90 hP0aEtf7.net
>>458
ばれたか。ZFCとか名前くらいは聞いたことあるけど
どうやって論理を展開していくのとか知らない。

>>459
出来ればもうちょっと面白いアイディアが欲しい。
クソスレも板の賑わいってことで。

462:デフォルトの名無しさん
14/10/08 20:19:42.08 rTFjlrrq.net
1が今まで読んできた教科書教えて

463:1
14/10/08 20:46:16.58 hP0aEtf7.net
あんまりいうと個人情報とか洩れるかもしれんので一つだけ。
もう捨てちまって手元にないがこれかな。
URLリンク(www.amazon.co.jp)

464:デフォルトの名無しさん
14/10/08 22:26:27.29 rTFjlrrq.net
じゃあ個人情報が漏れない程度の大雑把さで何を学んできたか教えて

465:1
14/10/08 22:32:55.73 hP0aEtf7.net
そんな漠然としたこと聞かれても。
まあ、情報系の学部出身だよ。

466:デフォルトの名無しさん
14/10/08 23:00:13.01 TzLBQJ9w.net
人生……かな

467:デフォルトの名無しさん
14/10/08 23:04:08.42 rTFjlrrq.net
>>59を見てどの程度の知識があるのか気になったのよ
数学科ではないのね

468:1
14/10/08 23:24:26.28 hP0aEtf7.net
数学科ではないな。
まあ、俺は数学ガチ勢ではないってことで。

469:デフォルトの名無しさん
14/10/08 23:51:56.29 TxL/GihU.net
>>465
それにしてはレベルが低いな。

470:デフォルトの名無しさん
14/10/09 14:59:21.86 +VtBJxY5.net
>スクリプト言語でありながら、速度も求めた Julia という言語。
> Julia は科学技術計算向けだが、汎用的な用途にも使える。
URLリンク(julialang.org)

集合論とはちょっと違うが、こういう言語を作るのって、プログラミングとはまた別の頭の良さが必要なんだろうなあ・・・

471:デフォルトの名無しさん
14/10/09 18:53:47.65 0qGZB94E.net
>>463
こんなの学部一、二年だろ?
URLリンク(www.amazon.co.jp)
こういうの読みなよ。

472:デフォルトの名無しさん
14/10/09 19:18:35.22 tOThY/oR.net
constraint logic programming‥

メジャーなもののなかで一番近い言語はなんですか

473:デフォルトの名無しさん
14/10/09 19:25:16.95 0qGZB94E.net
これのOzだよ。
URLリンク(www.amazon.co.jp)

474:1
14/10/09 20:10:14.35 o/OZDU1F.net
>>469
こんなもんじゃね?

>>470
インタプリタでCに迫る速度とかホンマかいな?
まあ、速くて書きやすいのはいいことだ。

>>471
わざと難しそうなの持ってきてない?

475:デフォルトの名無しさん
14/10/11 12:51:05.92 8yVA6sZ1.net
この板でハッとさせられるような事言う奴滅多にいないんだよな。
たまに居ると思ったら5年前の自分の書き込みだったw

476:デフォルトの名無しさん
14/10/11 13:27:28.71 77jPKn4U.net
>>475
つまり、おまえは5年間進歩してないんだな。

477:デフォルトの名無しさん
14/10/11 15:22:20.55 zm2pT6ST.net
とっくに出てると思うけど、SQLがまさに集合論をベースとしてる
今ではC#がLINQという名前で取り込んでるな

478:デフォルトの名無しさん
14/10/11 16:17:13.48 dB8AJmwd.net
それは集合論ではない。
集合や集合演算を扱えるだけ。

479:デフォルトの名無しさん
14/10/11 17:10:54.15 LAagPdIX.net
>>477
それSQLじゃなくてRDBシステムが集合論つかってるってことじゃないのか?

480:デフォルトの名無しさん
14/10/11 18:08:16.60 F3plGA7W.net
集合操作だから集合論とか言うの止めてくれないか

481:デフォルトの名無しさん
14/10/11 20:16:24.89 77jPKn4U.net
SQLは集合論つーより代数論だ。

482:デフォルトの名無しさん
14/10/11 20:16:36.33 oD37Hh5X.net
別に素朴集合論に単純な型を付けたようなもので普通に用は足りるだろ。
公理的集合論だからといって現実的には何かできることが増えるわけじゃないぞ。
単に数学の基礎を議論する時に必要というだけで。

483:デフォルトの名無しさん
14/10/11 20:18:28.72 77jPKn4U.net
>>482
その程度のものなら既存で腐る程あるだろ、って話を何度ループすれば気が済むんだ?

484:デフォルトの名無しさん
14/10/11 22:48:51.28 oD37Hh5X.net
で、集合論に何を夢見てるんだ?

485:デフォルトの名無しさん
14/10/12 00:31:12.35 xA+0V9C8.net
素朴集合論ってカントールの集合論のことだぞ。
中学生が習うやつじゃないぞ。

486:デフォルトの名無しさん
14/10/12 02:13:46.33 UDZcvZvs.net
カントンが手術したらモテモテになると勘違いしている様>>1

487:デフォルトの名無しさん
14/10/12 20:49:20.54 MyToBo/B.net
だから「単純な型を付けたようなもの」って言ってるだろ。
その意味がわかってない?

488:デフォルトの名無しさん
14/10/12 20:55:04.62 g8Gog7KJ.net
お前が分かってない。

489:デフォルトの名無しさん
14/10/12 21:08:23.19 Sn9uUxXA.net
なんとなくだけど、結論を急いで、できないとか意味がないとか言って、一切の建設的な意見を出さず、妨害だけする人って居るよね?

490:デフォルトの名無しさん
14/10/12 21:17:15.44 g1iKtf1h.net
そりゃこの広い世界のどこかにはそういう人も居るかもしれないね

491:デフォルトの名無しさん
14/10/12 21:35:02.06 xA+0V9C8.net
素朴集合論に型を付けたらうまくいくんじゃね?
とやってみたら恐ろしく複雑で不自由になったのがフレーゲのタイプ理論。
その後100年近く塩漬け状態。
それなら集合とクラスの二つだけに分けて、後はあまり強く型付けしなければ、
カントールの楽園から追放されないんじゃね?
というのがツェルメロの公理的集合論。

集合論、集合論と言っている人は、
無限公理や正則性公理を積極的に言語で使うつもりがあるのかな?
↓必要なのはここまでなんじゃないのかな。
URLリンク(ja.wikipedia.org)

492:デフォルトの名無しさん
14/10/12 22:31:37.21 NJmCyxXF.net
>>489
どのレス?

493:デフォルトの名無しさん
14/10/12 22:35:38.76 A+IMFSgX.net
S Set
T Theory
P Programming

Aはどうしよう。

494:デフォルトの名無しさん
14/10/12 22:38:10.76 Km5KyqRm.net
advanced
application
applied

495:デフォルトの名無しさん
14/10/12 22:44:43.09 Km5KyqRm.net
the set theory applied programming (STAP) language

略してSTAP言語

496:デフォルトの名無しさん
14/10/13 00:27:06.12 ivWOljm1.net
で、できたの?

497:デフォルトの名無しさん
14/10/13 00:34:39.55 hWTf/9FL.net
200回ぐらい。

498:デフォルトの名無しさん
14/10/13 05:17:51.25 zgXTsI5w.net
>>489
既存研究のサーベイが皆無なバカが悪い

499:デフォルトの名無しさん
14/10/13 09:30:42.66 7i+sJhXA.net
>>496
ありま~す

500:デフォルトの名無しさん
14/10/13 17:01:25.51 6ak88RQb.net
1.動機
2.仕様
3.実装
と進む。前段階へのフィードバックもある。
まだ1.の整理がつけられてない状況。

501:デフォルトの名無しさん
14/10/13 18:07:14.67 UPM0IlOC.net
まずどんな出力を得たいかを書く
次にそれを得るのに入力に何が必要かを書く
これで仕様決めまで終わるよね
入出力が決まってれば実装手段なんて何でもいい

502:デフォルトの名無しさん
14/10/13 19:11:43.08 PQyRtfoA.net
こういう状態
>>425 >>428

503:デフォルトの名無しさん
14/10/13 20:12:54.48 EYFsbw6u.net
オブジェクトは全て集合で
ペアノの公理を入力したらそれに則って足し算ができるようになる言語は
どうかな?

504:デフォルトの名無しさん
14/10/13 20:22:39.44 5XmBCMSV.net
足し算しかないのはプレスバーガー算術といって、完全理論だよ
(どの命題も肯定か否定かどちらか一方が証明可能って意味)
足し算とかけ算の混じったペアノ算術は不完全理論だけど

505:デフォルトの名無しさん
14/10/13 22:25:59.32 6ak88RQb.net
>>503
ノイマンの自然数の構成も必要だぞ。

506:デフォルトの名無しさん
14/10/14 09:11:24.51 0Ml7fYIK.net
集合への四則演算は濃度に変化無しだよな?
即ち、四則演算はしなくていいって事。

507:デフォルトの名無しさん
14/10/14 13:04:54.64 vbP2sDzC.net
濃度を増やすことが目的じゃなくて
計算結果を求めるのが目的だろうが

508:デフォルトの名無しさん
14/10/14 14:33:07.44 zPTDiwn8.net
これとかいいんじゃね
スレリンク(tech板)

509:デフォルトの名無しさん
14/10/14 17:47:21.71 +5iJxgCE.net
外野として面白く見守ってるだけでいうのもアレだけど
具体的に章末問題をひとつ持ってきて「これをこう書きたい」っていうのがみたい!
1さんだけじゃなくてここに居る皆さんで「こう書いたら気持ちよさそう~」とかでいいからサ

510:デフォルトの名無しさん
14/10/14 19:09:39.61 bR6+1Vd4.net
0=φ
1={φ}
2={φ{φ}}
3={φ{φ}{φ{φ}}}
4={φ{φ}{φ{φ}}{φ{φ}{φ{φ}}}}

は良いとして、このノイマンの表現法で通常の4則演算ってどういう意味があるの?
2+2=4  ってこの右側の集合の記法でどうやってでてくるんだ??

511:デフォルトの名無しさん
14/10/14 20:03:06.07 ehQP27NF.net
ラムダ ペアノ でググれ

512:デフォルトの名無しさん
14/10/14 20:40:10.02 bR6+1Vd4.net
>>511
ラムダとペアノの奴っていうのは

後者関数と射影関数を使って原始帰納法から原始帰納的関数を定義する方法で
加算を定義するというものと内容的に同値だろうから、

この自然数を包含関係で表現してみた集合に対する演算の定義とは違わないか?

513:デフォルトの名無しさん
14/10/15 07:50:36.68 xIPL4/1H.net
>>510
それはまず
0:=φ
succ(x):=x∪{x}
があって、そこから
1:=succ(0)=φ∪{φ}={φ}
2:=succ(1)={φ}∪{{φ}}={φ∪{φ}}

と順に定義していくから
結局はペアノの焼き直しに過ぎない

514:デフォルトの名無しさん
14/10/16 00:40:06.63 txhx6QUq.net
>>510
四則演算の意味は四則演算w

ペアノの公理に出てくるプリミティブを定義しないといけないから、
succは>>513、lessは∈に帰着させる。
たぶんlessを先に考えたのだろう。

515:デフォルトの名無しさん
14/10/17 13:53:23.37 dWEICMsc.net
>>511
ノイマンの集合モデルとチャーチのラムダ式モデル(チャーチ数)は、ペアノの自然数の別のモデル。

516:1
14/10/17 22:20:25.82 XLlp2k/U.net
最近書き込むネタがないな。
>>509
なんかお題くれ。

517:デフォルトの名無しさん
14/10/17 22:55:41.78 ZbpwpO5Z.net
>>516
一つの海によって隔てられた2つの国の領土が与えられたときに、海上に2国の中間線を引くプログラムを作れ
ここで、中間線とは2国の海岸線から等距離になるような線のことである

518:1
14/10/17 23:03:16.81 XLlp2k/U.net
まためんどくさそうな問題を。。。
海岸線のデータは多角形で与えられるの?
入力データ作るだけもでかなり面倒だなぁ。

519:1
14/10/17 23:20:00.94 XLlp2k/U.net
できれば100ステップくらいで実装できるの希望。

520:1
14/10/17 23:30:05.44 XLlp2k/U.net
垂直二等分線がカギになるのかな。
どっちにしろむずかしすぎ。

521:デフォルトの名無しさん
14/10/17 23:53:33.32 Dp+Vl0QI.net
関数型言語(笑)でいいと思うよ

522:デフォルトの名無しさん
14/10/18 00:33:49.53 8XT1TYTP.net
>>516
どの教科書に載っているどういう問題をどのように書ける言語にしたいのか、1が言わなきゃどうしようもない。
>>62 >>75 >>83 >>300 >>305

523:1
14/10/18 09:56:05.69 JlR7w5XX.net
>>522
教科書は離散数学とかアルゴリズムのやつで。
どのように書ける言語にしたいかはまだアイディアないってことで。
みんなで雑談するうちになんか出てくればいいなと思ってる。

524:デフォルトの名無しさん
14/10/18 12:22:35.42 /oNwCDSd.net
>>517
実際のデータをおいている場所をご存知のかたはおられませんか?

525:デフォルトの名無しさん
14/10/18 14:38:07.57 8EPYxHvD.net
>>523
(まだ手元にある>>463)教科書や扱いたい問題を「いくつか具体的に」示せ、
言語仕様も叩き台になるものを示せ、
1がそうしたことすらやらないんじゃどうしようもない、
ってことだろうに。

URLリンク(www.weblio.jp)

526:デフォルトの名無しさん
14/10/18 14:48:23.34 MO+ZAloR.net
SymPyでいいよ。
URLリンク(docs.sympy.org)

527:1
14/10/18 19:42:31.60 JlR7w5XX.net
>>524
データ出されてもこんな問題多分とけんぞ。
仮に解けたとしても相当時間かかる。

>>525
もう俺はネタもってない。

>>526
無限あつかうのか。よくこれでまともに動くな。驚くわ。

528:デフォルトの名無しさん
14/10/18 21:20:22.32 zBDuzTiF.net
>>527
自分の持ってる本に載ってる問題の中から一つ挙げてくれるだけでもいいと思うよ
あと、他人の協力を必要としてるのに他人の出した問題にケチをつけるのはよくないよ

529:1
14/10/18 21:42:25.30 JlR7w5XX.net
>>528
ケチつけるというか、難易度が半端ないんだが。
もうちょっとお手軽に楽しめるお題を期待していた。

それと本からじゃないけど暇つぶしに一個出題。

一本の紐がありこれを次の操作を9回繰り返して切断する。

操作「今ある紐の断片からランダムに一つ選択し三等分する。」

この操作を行った後、紐の断片をランダムに2つ選択する。
2つの断片の長さが等しい確率を求めよ。

※未解決な問題
操作をn回行った後断片をランダムに2つ選択したとき長さが等しい確率をp(n)とおく。
lim[n→∞]p(n)はいくつになるか。

530:デフォルトの名無しさん
14/10/18 22:05:05.10 nO1Wa2kk.net
これに計算機必要なの?

531:1
14/10/18 22:12:35.28 JlR7w5XX.net
>>530
手計算でやりたいなら止めないが。

532:デフォルトの名無しさん
14/10/18 23:08:22.47 e6RQ0dr6.net
継続中
>>425 >>428

今度はプログラミング言語と関係ない問題をだしてみたり

533:1
14/10/18 23:22:35.69 JlR7w5XX.net
>>532
まあ、ネタもないしな。
このスレは基本雑談ってことで。

534:デフォルトの名無しさん
14/10/19 09:37:05.49 29Wx6lEI.net
あらら。
集合論関係無く、集合操作したかったってことでしょ?
で、聞いてみたら既にいろんな言語(ライブラリ)が存在したと。

535:1
14/10/19 17:36:40.59 juftpz1M.net
>>534
まあ少し面白い話にならないかと期待してた。
具体的なアイディアはないんだが。

536:デフォルトの名無しさん
14/10/19 17:46:26.61 SfAoaW7H.net
>>535
まだ手元にある離散数学やアルゴリズムの教科書や、それに載ってる演習問題を挙げる
程度のことすらしないのはなぜ? その程度で

>>463
個人情報とか洩れる

わけがないのに。

537:1
14/10/19 19:25:17.13 juftpz1M.net
>>535
×まあ少し
○もう少し

>>536
じゃあ、まあ、教科書から一個出題。

ニ?ゲームはスティックの山の集まりを用いたゲームである。
一つの手番でプレーヤーはどれか一つの山から1個以上のスティックを取ることができる。
プレーヤーは交互に順番に手番を行う。そして最後のスティックを取るプレーヤーを負けとする。
いま、ニ?ゲームの局面としてs_1,s_2,...,s_k本のスティックからなるk個の山が与えられているとする。
与えられた局面に対し、先手必勝かどうかを判定せよ。

538:1
14/10/19 19:29:53.16 juftpz1M.net
あれ、文字化けしてんなぁ。
ニムゲームね。

539:1
14/10/19 21:14:49.94 juftpz1M.net
ちなみに>>529の問題はRubyで689byteで実装できた。
もっと短くかける言語があるよ!という人がいたら教えて。

540:デフォルトの名無しさん
14/10/19 21:24:53.85 CFixaMQx.net
>>537
まだ手元にある離散数学やアルゴリズムの教科書を何冊か挙げる程度のことすらしないのはなぜ?

541:1
14/10/19 21:38:28.27 juftpz1M.net
>>540
これとか。
URLリンク(www.amazon.co.jp)
もう捨てちまってあんまり持ってないんだよ。

542:デフォルトの名無しさん
14/10/19 22:07:12.36 C9CvfGxs.net
教科書捨てる奴ってw 学術的な研究はとっとと諦めた方がいい。向いてない。

543:デフォルトの名無しさん
14/10/19 22:15:08.20 lrejmkiS.net
>>541
「あんまり」じゃなくて「一冊しか」だろ。

544:1
14/10/19 22:20:34.02 juftpz1M.net
>>542
まあな。

>>543
そう責めるな。

545:デフォルトの名無しさん
14/10/19 22:28:38.99 N1Fbmuag.net
>>541
捨てたんじゃなくて元からその一冊しか持ってなかったんだろ。
で、その本を読んで「集合ってスゲー」と思い、勢いでこのスレを立ててしまったと。

546:1
14/10/19 22:38:57.73 juftpz1M.net
>>545
学生のころ使ってた教科書はほとんど捨てたよ。
まあ、勢いでスレたてたのは認める。

547:デフォルトの名無しさん
14/10/20 09:04:25.01 jBlrymD4.net
>>533
> このスレは基本雑談ってことで。
君は軽い気持ちで立てたスレかもしれないが、多くの住民はム板にクソスレを立てるべきではないと感じている。
だから君への風当たりが強いのである。
雑談なら雑談スレやブログやVIPでやればよい。まあ、このスレを使い切った後にな。

548:デフォルトの名無しさん
14/10/20 10:17:53.34 UiYQrarC.net
だから、巡回セールスマン問題とかの為に、量子コンピューター用の言語にすればいいのに。

549:デフォルトの名無しさん
14/10/20 12:52:46.72 C1FZ+AtI.net
とりあえず圏論を学習してからにしてくれ

550:デフォルトの名無しさん
14/10/20 18:45:10.40 9HS8Ctp3.net
>>546
で、結局何がしたいの?後出しジャンケンがしたかっただけ?

551:1
14/10/20 19:25:51.34 TfUqLiTt.net
>>547
まじで。

>>548
量子コンピュータでNP完全問題って多項式時間でとけるようになったのか。
時代は進歩してるな。

>>549
じゃあ、>>549が教えてくれ。

>>550
後出しジャンケンといわれても困るんだが。

552:デフォルトの名無しさん
14/10/20 20:21:35.78 4bxYYw/L.net
教科書捨てるくらいだから頭の中空なんだろ。アイディアもない。
普通ならアホなアイティアで収拾つかなくなってなきゃいけない。
そういうカオスが偶然ぷよぷよみたいに連鎖して新しい発想になる。
才能無い人が努力やコミュ力で才能ある人を打ち負かすっていう
根性論はもう見飽きた。

553:1
14/10/20 20:43:37.79 TfUqLiTt.net
>才能無い人が努力やコミュ力で才能ある人を打ち負かすっていう
アニメかなんかか?

554:デフォルトの名無しさん
14/10/20 20:58:59.44 4bxYYw/L.net
デスマーチとかやってるのは才能ないやつ(納期ギリギリまで上流工程やってる上司+素人同然のコーダー)を寄せ集めてやってるからだと思う。
だから デスマーチ=根性論 と思っている。断っておくが、アニメの話でもある。

555:1
14/10/20 22:04:32.06 TfUqLiTt.net
なぜに突然デスマーチ?
カオスだ偶然だで新しい発想は出ないと思うぞ。
根性からはでるかもしれんが。
まあ、新しいものってのはセオリーに裏打ちされてるもんだよ大抵。

556:デフォルトの名無しさん
14/10/20 22:15:50.47 4bxYYw/L.net
ある世界Aには学術体系、理論体系が構築されている。
もう一つの世界Bがゴチャゴチャのカオスだとする。
AとBの間には写像のように紐付けがされている。
発想は世界Bから生まれる。
世界Bが空なのが1だ。

557:1
14/10/20 23:08:08.26 TfUqLiTt.net
>>556
まじでそんな世界観で生きてんの?
アニメの見すぎじゃね?

558:デフォルトの名無しさん
14/10/20 23:17:33.77 4bxYYw/L.net
世界Bが空というのは「頭が空」という意味だから言い過ぎた。すまん。
>>1の発想が尽きたのは、
世界Aの一部と世界Bが一対一対応で同じだからか、
世界Bがあまりに小さいからだと考えられる。

559:デフォルトの名無しさん
14/10/21 04:55:39.53 55M9GoPd.net
>>551
クレクレ言うから条件に合いそうなものを提供すると、
別の条件を出してソレジャナイと言う。
かといって、自分から何かを提供するわけでもない。
ひたすらクレクレ言い続けて、ソレジャナイと返し続ける。

そういうのを後出しジャンケンと言う。

560:デフォルトの名無しさん
14/10/21 05:07:05.92 rC2hZRaT.net
後出しかぁ
どうせなら中出しの方がいいな

561:デフォルトの名無しさん
14/10/21 08:21:27.32 7wZlZLdP.net
ジャンケンドピュッ

562:デフォルトの名無しさん
14/10/21 11:02:34.86 yoqXS5RA.net
このチラ裏まだやってたのか
まだ見限ってない人がいるんだな

563:デフォルトの名無しさん
14/10/21 14:21:29.74 3SFXCOz9.net
>>559
本当にそれのくりかえしだもんな。

564:1
14/10/21 19:14:06.10 +255aWxA.net
>>559
>>563
今の状態で後出しジャンケンというなら、今後も後出しジャンケンは続くとしか言えないな。
まあ、愛想をつかすというなら>>559>>563の勝手だよ。

565:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/10/21 20:10:33.19 tyo0JEbH.net
>>1
ネタ切れか? まずは、命題論理を実装した言語を作ってもらいたい。

a = true;
b = false;
c = a && b;
println c; //false

さあ、できるかな?

566:デフォルトの名無しさん
14/10/21 20:13:11.64 rAN/sZsH.net
後出しジャンケン継続宣言w

567:1
14/10/21 20:34:57.34 +255aWxA.net
>>565
C++でいいんじゃないか。

>>566
まあ、俺の技量には限界があるからな。

568:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/10/21 20:46:47.47 tyo0JEbH.net
>>1は、大学か独学でコンパイラやスクリプト言語の作り方の勉強をしたのかね?

569:1
14/10/21 21:00:41.61 +255aWxA.net
>>568
さわりだけ。
ぶっちゃけ、ひらがな電卓はかなりすごいと思う。

570:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/10/21 21:08:49.12 tyo0JEbH.net
新しく言語を作るなら、バックエンドはGCC系、LLVM系、他言語変換系(Java,JS,C,C++)のいずれかが妥当だろうな。

571:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/10/21 21:21:00.17 tyo0JEbH.net
GCCで作るなら、GDCのソースを読むべし。

GDC (D Programming Language for GCC)

572:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/10/21 21:27:37.89 tyo0JEbH.net
言語変換で作るなら、Pascal⇔C変換プログラムのソースを読むべし。

573:1
14/10/21 21:28:12.21 +255aWxA.net
LLVMとか多分無理。
他言語変換系がいいかな。
個人的にはRubyが好みなんだが。

574:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/10/21 21:57:41.40 tyo0JEbH.net
Ruby上で推論・数式処理・計算をする実行時モジュール作ればいいんじゃね?

575:1
14/10/21 22:36:26.49 +255aWxA.net
なぜに突然、推論、数式処理がでてくるのかわからんが。
わざと面倒くさそうなの持ってきてない?

576:デフォルトの名無しさん
14/10/22 05:45:57.21 wja3nREO.net
集合論扱うのに必須だからだろ

577:デフォルトの名無しさん
14/10/22 05:48:31.37 wja3nREO.net
ルビ厨ってこんなんばっかり
威勢のいいこと言うだけで自分は何もしない
他人や他言語の成果に乗っかるだけ

578:デフォルトの名無しさん
14/10/22 15:09:01.24 WTBQKchq.net
Rubyまでとばっちりw

579:デフォルトの名無しさん
14/10/22 18:30:22.20 kKncjr9Q.net
>>559
「わざと難しそうなの持ってきてない? 」「わざと面倒くさそうなの持ってきてない?」と言ってみたり >>474 >>575

580:デフォルトの名無しさん
14/10/22 19:56:19.33 fCfdG1e1.net
>>517
二つの海岸線を曲線L1, L2とおいた時に、あるp(x,y)∈L1と曲線L2との中間点を
pとpを通る傾き-dx/dyの直線lとL2との交点との間にひかれる線分の中点とすると、
二つの海岸線の中間線はこの中点を集めたものになる?

581:デフォルトの名無しさん
14/10/22 22:36:02.17 iNJY0L1E.net
設問の矛盾が問題ややこしくしているだけ。
その矛盾とは湾だ。湾を除外すれば簡単になる←このへんの要領の良さが仕事では重要。
まず陸地に外接する凹みのない多角形を生成すればいい。
次に各国の外接多角形どうしから等距離の点の軌道を求めればよい。

582:デフォルトの名無しさん
14/10/22 22:41:47.09 iNJY0L1E.net
国Aの外接多角形上の点を定めれば、そこから国Bへの最短距離の線分が定まる。その中間点は明らかに
国Bから同様の手順で求めた中間点と同じだ。だからその軌道で中間線は定まる。

583:デフォルトの名無しさん
14/10/22 22:49:57.00 iNJY0L1E.net
なお凸な外接多角形を用いない場合、中間線は定まらない。

584:デフォルトの名無しさん
14/10/22 23:34:03.55 iNJY0L1E.net
設問(仕事における設計)を改変したことで怒られることはありえるので、アホ設計者に相談するのが先決である。

585:デフォルトの名無しさん
14/10/22 23:58:12.26 iNJY0L1E.net
定まらなくもないか、凹の部分の曲率が、相手国から引いた最短距離を半径とする円より小さいならば定まる。

586:デフォルトの名無しさん
14/10/23 01:20:06.15 mtwqOq23.net
ああそっか、最短距離でいいのか…いらんこと考えて複雑にしてたthx
URLリンク(pastebin.com)

587:デフォルトの名無しさん
14/10/23 01:51:05.76 B12M++5h.net
何がムカつくって、>1が何もするつもりが無さそうなのに成果だけクレクレ言っているところだよな。

>1はPrologについて調査したのか?

588:デフォルトの名無しさん
14/10/23 02:14:57.76 TE8bWo7Y.net
最短距離じゃない。線分とそれを微小移動させた線分とが作る平行四辺形の密度が全海域に渡って一定となるように微小移動(速度関数)を決めればいいのか。
微分積分の問題。

589:デフォルトの名無しさん
14/10/23 02:16:30.21 TE8bWo7Y.net
平行四辺形じゃなくて四角形 ,ねじれて2つの三角形になることもある。

590:デフォルトの名無しさん
14/10/23 02:20:07.97 TE8bWo7Y.net
ねじれて2つの三角形になることもある→ない。

591:デフォルトの名無しさん
14/10/23 04:45:24.37 xJ2edcK8.net
で、それのどこが集合論?

592:デフォルトの名無しさん
14/10/23 04:46:42.26 dXJn7cDs.net
ID:TE8bWo7Y は病気なんです。何も言わずにNGして下さい

593:デフォルトの名無しさん
14/10/23 09:00:17.01 xLBbOXbP.net
>>588
別に海岸線上の点を連続的に動かす必要ないでしょ
一般に距離空間において点Pから集合A,Bまでの距離をそれぞれd(P,A),d(P,B)とおくと
これらは連続関数になるからd(P,A)=d(P,B)を満たす点Pの集合を求めりゃいいだけ

594:デフォルトの名無しさん
14/10/23 12:20:33.04 TE8bWo7Y.net
海岸線を微分するためには連続関数にしなければならない。
そのためにはまずB-spline曲線近似する必要がある。
プロットした点を除外し再計算することでB-splineから湾を除去することもできる。
このように海岸線をパラメトリック曲線で表すことにより
パラメータの範囲を求めることができる。
どのように求めるかというと2つのパラメトリック曲線上の点が
2つの海岸線の共通の接線となる値を求め、それの最大と最小を求めればいいのだ。
これにより分割すべき海域が求まる。
次に海域を等密度で並ぶ線を求めることを考える。

595:デフォルトの名無しさん
14/10/23 12:25:21.29 TE8bWo7Y.net
訂正;2つのパラメトリック曲線上の点が→2つのパラメトリック曲線上の点を通る線が

596:デフォルトの名無しさん
14/10/23 12:40:29.47 TE8bWo7Y.net
そんなことしなくてもいいか。
2つのB-spline曲線上の点を結ぶ線分で、他の箇所と交わらないようにパラメータの最大と最小を求めればいい。

597:1
14/10/23 18:46:19.11 gc7yGcGD.net
>>587
Prologだとどんな問題がHaskell,Rubyよりうまく解けるの?
なるべく人為的でない自然な問題希望。

>>596
すげぇ難しそうですね。
俺はもうギブアップです。

598:デフォルトの名無しさん
14/10/23 19:35:25.06 xJ2edcK8.net
B-spline以外にもC1連続な曲線なんていくらでもあるだろ

599:デフォルトの名無しさん
14/10/23 19:39:22.10 TE8bWo7Y.net
さて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)が解けなければいけない。

600:デフォルトの名無しさん
14/10/23 19:46:13.66 xJ2edcK8.net
>>599
人格障害ですか?お大事に。

601:デフォルトの名無しさん
14/10/23 20:26:31.21 TE8bWo7Y.net
まともに解こうとすると糞難しい。
この問題を安易に解く方法は両陸地に接する円をすこしづつ動かして中心点をつないでいくのがよい。

602:デフォルトの名無しさん
14/10/23 21:45:05.80 lKZXmaCH.net
>>597
離散数学やアルゴリズムの教科書の演習問題みたいなのでいいんだよな。

>>300
>教科書の章末問題をサクサクっとインプリメントすることを目的としてる。
>実用性はあんまり求めない。

603:1
14/10/23 22:11:09.64 gc7yGcGD.net
>>602
>離散数学やアルゴリズムの教科書の演習問題みたいなのでいいんだよな。
おk
できれば言語差がはっきりわかるやつ頼む。

604:587ではない
14/10/23 22:48:38.73 jdc4xe8Q.net
>>597
問題領域が「有限集合と集合間の関係」でモデル化できるのであれば、
関数型やオブジェクト指向よりも論理型言語の Prolog のほうが圧倒的に簡潔に書ける

・プログラミング雑談スレ♯+++
 スレリンク(tech板:357-371番)

この例では、従業員/部門/所属という有限集合を扱っている
たとえば集合 従業員 は以下のように定義される

 従業員 = { <1, 山田>, <2, 鈴木>, <3, 田中>. <4, 松下>. <5, 本田> }

ここで、「<X, Y>」は集合 X と Y の直積を表す

605:デフォルトの名無しさん
14/10/24 11:20:44.18 gLVwzl7v.net
Coqにおける集合論的直観主義 数学の実装
URLリンク(shirodanuki.cs.shinshu-u.ac.jp)

ハイ、このスレ終了~

606:デフォルトの名無しさん
14/10/24 19:07:28.65 smFrq6Ls.net
そういう意味での終了ならとっくに終了してる。ずっと雑談スレとして続いている。
まあこのペースなら放置よりも1000の方が落ちるのが早そうだから、さっさと消化して落としてしまうのがいいだろう。

607:デフォルトの名無しさん
14/10/25 13:59:00.13 hqtmXmou.net
>>605-606
ほんとにCoqなんかで終了と思っとるん?

608:デフォルトの名無しさん
14/10/25 14:49:44.46 CW0KbvIq.net
思ってるよ
何か問題でも?

609:デフォルトの名無しさん
14/10/25 15:00:33.74 rVCkRMh+.net
それは証明系であって、汎用プログラミング言語じゃない。
コーディングしているのは証明。

610:デフォルトの名無しさん
14/10/25 17:23:24.88 0lds8eT1.net
>>609
それのどこが問題なんだ?

611:1
14/10/25 21:33:01.44 ujOd7NYK.net
prologでconnect4作ろうとしたんだがやり方がよくわからん。
盤面の情報はどうやって保持すればいいんだ?

612:デフォルトの名無しさん
14/10/26 04:14:23.56 dhX+3K0L.net
>>611
リストじゃダメなのか?
効率が良くなければならないってことはないんだよな?

>>299
>関数型言語は効率が悪そうたって、「集合論に基づいた言語」とかいうのはもっと効率が悪くなるだろうに。

>>300
>集合論に基づいた言語は教科書の章末問題をサクサクっとインプリメントすることを目的としてる。
>実用性はあんまり求めない。

613:デフォルトの名無しさん
14/10/26 11:52:04.74 WbgAndU6.net
>>612
その人に理由きいたって無駄だよ。
関数型言語は効率悪いから集合論言語として却下するけど、
集合論言語は効率度外視でいいとか言い出す上に
ルビーは文字列操作ユーティリティーが充実してるから使えるとか
真顔で書いちゃう人なんだから。

614:デフォルトの名無しさん
14/10/26 12:19:59.03 lx1fz+FP.net
おいおいそんなこと書くと『わざと曲解してないか?』って言われちゃうぞ

615:1
14/10/26 19:06:58.39 bR5aD7tI.net
>>613
関数型言語却下は効率わるいからじゃなくて生産性あがんないからだよ。
まあ、探せば生産性あがる問題もあるのかもしれんが。

prologなんか無限ループっぽくなるんだが。
裏でなにやってんのかよくわからん。
prolog確かに面白そうではあるんだが、いまいち理解できん。

616:デフォルトの名無しさん
14/10/26 21:24:52.33 cZX7ddvm.net
>>615
有限集合限定でよければHaskellのリストで代用できるだろ。重複要素を取り除くようにすればいいだけで。
「生産性が上がらないからHaskell等は却下」ということなら集合を扱う言語を新たに作っても生産性は上がらない。

1は「集合を扱う言語を作れば高い生産性をもつはずだ」と具体案も示さずに言っているだけ。

617:1
14/10/26 21:39:05.82 bR5aD7tI.net
>>616
リストで集合の代用できるのは確かにそうだが、それを言ったらいろんなデータ構造が無意味になっちゃうだろ。
代用できるだけじゃやっぱダメなんだよ。

具体案を出してないのは認める。

618:デフォルトの名無しさん
14/10/26 22:12:04.35 lx1fz+FP.net
「生産性」とかいいながらやっぱり効率の面で却下してるね
もいっぺん>>615-617を冷静に読みかえしてみて。
>>616は一言も効率(やデータ構造)の話はしてないよ

せめて自分の頭んなかくらい整理して書いてくれ
整理せずに断片的に書きちらしてるから後出しって言われんだよ

619:1
14/10/26 22:24:04.14 bR5aD7tI.net
>>618
俺も効率の話はしてないつもりだったが。
例えばキューやスタックなんかはリストで簡単に代用できるが、
専用のクラスを用意しておくことは意味があると思ってる。

620:デフォルトの名無しさん
14/10/26 22:37:21.48 lx1fz+FP.net
なんでそこでキューやスタックがでてくるんだw
有限集合の話じゃないのかよwwww

621:1
14/10/26 22:40:47.72 bR5aD7tI.net
集合とリストは本質的に異なるという立場。
まあ、代用はできるんだが。

622:デフォルトの名無しさん
14/10/26 22:51:49.39 lx1fz+FP.net
では>>616が書いて>>1も同意したように
"重複要素を取り除く"ような薄いラッパーをかませばhaskellのリストは有限集合の代用になるのに
それ以外に効率とは関係なく「生産性」の上で課題になる「集合とリストの本質的な違い」ってなんだ?

623:1
14/10/26 23:02:30.10 bR5aD7tI.net
ぶっちゃけラッパーかませば問題ないなw
そういう薄いラッパーみたいなこまごまとした小道具がきっちりそろってるのがRubyの魅力だったりする。
でもまあ、今更だけど効率的に計算オーダーが変わっちゃうのはやっぱちょっと気になるかな。

624:デフォルトの名無しさん
14/10/26 23:09:02.90 uNWVyTps.net
Rubyしかしらないだけでしょ

625:デフォルトの名無しさん
14/10/26 23:16:23.07 lx1fz+FP.net
効率以外の面では既存言語(例えばhaskell)に集合操作ぽいラッパーがあればそれで充分と認めたんだよな?
問題は有限集合を扱う効率だけだということになってかなり整理されたな。

じゃお前さんが「生産性」の上では充分だと思うようなラッパーを既存言語の上で定義してくれよ。
haskellでもrubyでもいいよ
それがあれば効率よく処理する必要があるターゲットがみんなにも具体的によくわかる。

626:1
14/10/27 00:02:38.69 hKk3OxSM.net
>「生産性」の上では充分だと思うようなラッパー

ここが一番難しい。
ぶっちゃけ、まだこれだというアイディアはない。

普通に考えると集合論で定義されている一般的な演算をインプリメントすることになるんだろうけど、
それで生産性どの程度あがるかなぁ。

まあ、>>59>>62でも言ってるけど、なんか面白いアイディアがないとダメかなと思ってる。

627:デフォルトの名無しさん
14/10/27 00:16:15.58 xsoB8LA3.net
ここまで短時間で主張を二転三転されると笑うしかないな
あえて好意的に解釈しても正気かどうか心配になるレベル

628:デフォルトの名無しさん
14/10/27 00:50:39.76 UstcwDIj.net
関数型で生産性上がらないみたいなこといってるけど、例えば商集合演算を書く時はどうすんの。
集合論に基づいた言語を作るなら、少なくとも関数がファーストクラスであることは生産性に大きく関わると思うんだけど。
あと数学の関数は状態を持たないから、全ての関数が参照透明であるかどうかはともかくとして、
数学の意味での関数を使う場合には参照透明な関数であることを制約するような記述ができる必要があるかもね。

629:デフォルトの名無しさん
14/10/27 03:06:19.81 S1pbHk8f.net
>>623
「集合論に基づいた言語」を新たにつくっても、その言語に「こまごまとした小道具」はそろってないわけだが、
そうするとその新言語は1にとって魅力がないってことになるんじゃないか?
Rubyだったら簡単にできることが新言語では簡単にはできないのだから。

630:デフォルトの名無しさん
14/10/27 04:05:38.32 dHQizD3i.net
>>420
>>409のリンク先にあるような、集合や列の内包表記を使ったプログラムを読むのは1にはしんどいってことだな。

631:デフォルトの名無しさん
14/10/27 05:43:19.35 Rvvlh30F.net
結局、ルビー以外を提案しても全部却下して
「ここがルビーのいいところ」とか書いちゃうんだよ。
関数型言語の生産性の高さも知らずにね。

632:デフォルトの名無しさん
14/10/27 06:55:54.77 9dCb0Lih.net
そもそも「作りたい」ってスレタイが間違ってんじゃね
こいつ絶対作る気ないだろ

633:デフォルトの名無しさん
14/10/27 11:42:55.16 VoSGhOqg.net
そんなことはどうでもいい

634:1
14/10/27 20:16:20.56 hKk3OxSM.net
>>627
まあ、確固たる主張があるわけではないからな。

>>628
関数はファーストクラスの方がいいだろうな。
参照透明性は微妙。
あるに越したことはないけど、そこ頑張りどころかなぁ?という気はする。

>>629
ぶっちゃけ、Rubyは最強言語なので。
そんな簡単には超えられないでしょう。

>>630
正直、かなりしんどい。
あれ以上は簡単にできないのかもしれんが。

>>631
関数型言語で生産性が上がる問題があるなら教えてくれ。

>>632
まだネタ出しの段階だからな。実装ははるか先の話だ。

635:1
14/10/27 20:19:14.66 hKk3OxSM.net
それにしてもprolog動かんなぁ。
センスないわ俺。

636:デフォルトの名無しさん
14/10/27 21:05:20.40 K1rstjve.net
>>634
>関数型言語で生産性が上がる問題があるなら教えてくれ。

で、相手が何か例を挙げたらケチつけるんだろw
自分は「集合論に基づいた言語」で生産性が上がる例を示さずにw

637:1
14/10/27 21:22:05.89 hKk3OxSM.net
俺がケチつけられないほど明確に生産性の上がってる問題を頼む。

638:1
14/10/27 21:25:15.63 hKk3OxSM.net
まあ、集合論に基づいた言語は絵空事で終わる可能性があるからな。
関数型言語はそんなことないんだろ?

639:デフォルトの名無しさん
14/10/27 21:40:34.27 xsoB8LA3.net
ほんとに何言ってんのかねこの人はwww

640:デフォルトの名無しさん
14/10/27 21:48:32.99 K1rstjve.net
>>637
そうした例を挙げても1に餌を与えるだけだし。
関数型言語でも論理型言語でもその他でも同じこと。

641:デフォルトの名無しさん
14/10/27 22:01:34.98 UstcwDIj.net
高階関数によるチェインなんかは生産性のあがる例じゃないの。並列化も簡単でしょ。
まあ関数型のスレではないけど、集合論というか数学ってまさに関数型言語なのに、
よくわかってなさそうだからつっこまれるんだろうけど。

642:デフォルトの名無しさん
14/10/27 22:37:28.46 K1rstjve.net
>>300
>集合論に基づいた言語は教科書の章末問題をサクサクっとインプリメントすることを目的としてる。
>実用性はあんまり求めない。

>>305
>集合論に基づいた言語では狭い領域の問題に限り(教科書の章末問題とか)
>高い生産性を発揮することを目標にしてる。

「サクサクっとインプリメント」できるどうか、「高い生産性を発揮」しているかどうかは、1の主観で判断される。

643:1
14/10/27 22:42:25.97 hKk3OxSM.net
>>641
確かに高階関数はカッコいい気がするが、具体的にどんな問題で使われてるか知らない。
並列化は簡単というが、まだ実現はしてなかったような。
まあ、俺は関数型言語も数学も造詣はないな。

644:デフォルトの名無しさん
14/10/27 22:54:12.79 CRLCLkYm.net
jqueryのメソッドチェーンは便利だね

645:デフォルトの名無しさん
14/10/27 22:57:50.25 UstcwDIj.net
>>643
個人的な経験でいえば、DBからデータを取ってきて加工したりするときに非常に書きやすいかな。
とにかく、コレクションのデータを加工して流すときに非常に簡潔に書ける。
他にもあるけど、今すぐに思いついたのはこれかな。
並列化はClojureなんかは簡単に書ける。Javaも8からできたんじゃなかったっけ。まあJavaのあれは関数型と言うには気持ち悪いけど。
というか、適用する関数が副作用を持たないと仮定するなら、作用させるデータを分割して再結合すればいいっていう単純な話でそ。

646:デフォルトの名無しさん
14/10/27 23:02:23.54 UstcwDIj.net
あ、メソッドチェーンにおける並列化が簡単にできるという意味ね。
プログラム自動並列化は詳しくないけどまだ発展途上じゃないかな。

647:1
14/10/27 23:32:47.45 hKk3OxSM.net
>>645
ふーむ。確かにコレクションのデータを加工して流すのは出現頻度が高そう。
勉強になりました。
Clojuerちょっとぐぐってみたけど、ソフトウェア・トランザクション・メモリーとかよくわからんかった。
とりあえず簡単に並列化できそうな雰囲気は伝わってきたw

648:デフォルトの名無しさん
14/10/28 00:54:20.05 2moDL6+C.net
>>とにかく、コレクションのデータを加工して流すときに非常に簡潔に書ける。
>ふーむ。確かにコレクションのデータを加工して流すのは出現頻度が高そう。
>勉強になりました。

このスレでHaskellの名前が出てから2ヶ月たつけど、2ヶ月の間に自分で調べたりはしなかったんだな。

649:デフォルトの名無しさん
14/10/28 01:22:16.19 F9KmtOQp.net
この言語が最強っていう信念のある人だからね

650:デフォルトの名無しさん
14/10/28 01:46:36.67 2moDL6+C.net
Ruby最強と思っているらしいけど、それなら新しい言語を作ろうなんて思わければ良さそうなものだがな。
新しい言語を作っても、Rubyにあるような、お気に入りの便利な機能なんかないから、「Rubyなら簡単にできるのに」
って不満がたまるだけだろうに。
集合を使った表記法のプログラムを読むのもかなりしんどいそうだし。>>634


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch