計算機科学の基礎は集合論であるという。
ならば、集合論に基づいた言語を作れば美しい言語になるのでは?
そんな発想から徹底的に集合論的思想で言語仕様を考えるスレです。
探検
集合論に基づいた言語を作りたい
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2014/08/10(日) 21:27:16.56ID:x7G32Sd0119デフォルトの名無しさん
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のリストで扱う言語あった気が
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★11 [蚤の市★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 正直教師が授業する必要なくね?
- インド料理屋に抗議に行った
- 【正論】検察「山上よ、どんな事情があろうと暴力が許されない」 [442080748]
- 熱はないけど倦怠感があるんやが
- スマホゲ問い合わせ俺「ここでこんなことしたらバグった!」返答「アカウント情報と画面のスクショと操作手順をメールで送って」
