プログラムを組むのに数学の勉強は必要か?数学板住民の意見は
■ このスレッドは過去ログ倉庫に格納されています
1132人目の素数さん
2024/10/25(金) 20:27:16.72ID:3MkTKHV4 本当に数学に精通している人からの意見が聞きたい
2132人目の素数さん
2024/10/25(金) 20:38:22.45ID:GtjQE9i2 知らん
自分で考えろ
自分で考えろ
3132人目の素数さん
2024/10/25(金) 20:39:26.64ID:JrqraUA+ あなたの考える「数学」が、私の考える「数学」と一致している保証がないから、その質問は無意味
4132人目の素数さん
2024/10/25(金) 20:59:22.32ID:ub6u/Y3b 必要だと思ったら勉強したらいいだろ
何でも人に聞かんと勉強できんのか?
何でも人に聞かんと勉強できんのか?
5132人目の素数さん
2024/10/25(金) 21:03:48.72ID:0xJ/URst 無能が「勉強の仕方」を勉強してる間に、出来るやつは勉強を始めてる
6132人目の素数さん
2024/10/25(金) 21:06:48.02ID:0xJ/URst で、「勉強法の勉強」で頭よくなったつもりになった無能は、ずっとそれだけやってる
エコーチェンバーで周りにも同じような連中ばかりが集まって、その中で自己肯定感高まって、一生そのレベルから抜け出せない
エコーチェンバーで周りにも同じような連中ばかりが集まって、その中で自己肯定感高まって、一生そのレベルから抜け出せない
7132人目の素数さん
2024/10/25(金) 21:14:47.27ID:o+Bu8dN0 プログラムを理解するための数学だったらプログラム意味論とかやれば?
λ計算とか。
λ計算とか。
8132人目の素数さん
2024/10/25(金) 21:25:27.26ID:o+Bu8dN0 そもそもλ計算というものは知ってる?
9132人目の素数さん
2024/10/26(土) 08:06:44.05ID:0cRJo0MK >>1
受験数学じゃなくて、数学を研究するという意味での数学だったら役に「は」たつ。
(例えば、足し算の動きがシーソーみたい動きをしているとか、そういうのに気付けるかとか)
https://i.imgur.com/1pTgIZM.jpeg
でも、それはアルゴリズム部分の話で、データ構造の部分は調べる能力が必要。
(ポピュラーなファイル規格に準拠できるだけのものが作れなければ役に立つものは作れない)
両輪揃ってないと「使えない奴」認定で終わる。
受験数学じゃなくて、数学を研究するという意味での数学だったら役に「は」たつ。
(例えば、足し算の動きがシーソーみたい動きをしているとか、そういうのに気付けるかとか)
https://i.imgur.com/1pTgIZM.jpeg
でも、それはアルゴリズム部分の話で、データ構造の部分は調べる能力が必要。
(ポピュラーなファイル規格に準拠できるだけのものが作れなければ役に立つものは作れない)
両輪揃ってないと「使えない奴」認定で終わる。
2024/10/26(土) 08:36:31.91ID:u7/+tkcS
精通
男児が性的に成熟していく過程で生まれて初めて経験する射精
男児が性的に成熟していく過程で生まれて初めて経験する射精
11132人目の素数さん
2024/10/26(土) 10:21:14.53ID:fFhsFvS8 AI による概要
プログラミングには数学の知識が必須ではありませんが、目指す分野によっては必要になる場合があります。
一般的なプログラミングでは、足し算・引き算・掛け算・割り算の四則演算さえできれば問題ありません。ただし、ゲーム開発やAI開発などの分野では、数学の知識が必要になります。
ゲーム開発では、3D空間での物体の位置や動きを計算するために、ベクトルや行列、微分積分学などの数学的概念が使用されます。また、キャラクターや物体の動作をよりリアルで滑らかに表現するためには、三角関数などの物理の知識も必要です。
数学的思考力(論理的思考力)が高まると、プログラミングする上で役立つでしょう。
プログラミングには数学の知識が必須ではありませんが、目指す分野によっては必要になる場合があります。
一般的なプログラミングでは、足し算・引き算・掛け算・割り算の四則演算さえできれば問題ありません。ただし、ゲーム開発やAI開発などの分野では、数学の知識が必要になります。
ゲーム開発では、3D空間での物体の位置や動きを計算するために、ベクトルや行列、微分積分学などの数学的概念が使用されます。また、キャラクターや物体の動作をよりリアルで滑らかに表現するためには、三角関数などの物理の知識も必要です。
数学的思考力(論理的思考力)が高まると、プログラミングする上で役立つでしょう。
12132人目の素数さん
2024/10/26(土) 10:24:18.37ID:fFhsFvS8 >>11
疑問文を入力してGoogle検索すれば回答が得られる
疑問文を入力してGoogle検索すれば回答が得られる
13132人目の素数さん
2024/10/26(土) 10:32:51.87ID:wMu1UaCb14132人目の素数さん
2024/10/26(土) 20:14:07.62ID:0cRJo0MK でも数学の知識があるとコードを短くできる場面もあるっぽい。
自分が見たのはじゃんけんの手が群をなす?とかで条件分岐を無くしてた。
誰か理解できる人は解説頼む。
自分が見たのはじゃんけんの手が群をなす?とかで条件分岐を無くしてた。
誰か理解できる人は解説頼む。
2024/10/26(土) 20:57:06.10ID:wMu1UaCb
2024/10/26(土) 22:16:52.01ID:taSceqpL
数学の一部と言ってもいいコンピュータサイエンス(CS)でも基礎である、アルゴリズムのオーダーの概念の理解が必要
いわゆる遅いアルゴリズムでプログラミングしてしまう状況に陥らないため
いわゆる遅いアルゴリズムでプログラミングしてしまう状況に陥らないため
2024/10/26(土) 22:41:11.81ID:FIBH2Cbw
18132人目の素数さん
2024/10/27(日) 07:10:38.51ID:nu6S2t+f >>16
CSは数学としては大したことない
>オーダーの概念
計算量の評価に解析のオーダーが必要ってこと?
ランダウの記号
https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%80%E3%82%A6%E3%81%AE%E8%A8%98%E5%8F%B7
CSは数学としては大したことない
>オーダーの概念
計算量の評価に解析のオーダーが必要ってこと?
ランダウの記号
https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%80%E3%82%A6%E3%81%AE%E8%A8%98%E5%8F%B7
19132人目の素数さん
2024/10/27(日) 07:11:22.18ID:nu6S2t+f20132人目の素数さん
2024/10/27(日) 15:16:08.29ID:k48lWp25 プログラミングは数学の一部である
したがって数学が必要なのは自明
したがって数学が必要なのは自明
21132人目の素数さん
2024/10/27(日) 18:26:24.94ID:wu6Ollaf >>20
完全に一部でもない。
プログラミング 数学
|入出力| 共通点 |稠密、連続|
プログラミングにも数学にも、それぞれ再現できない概念が存在する。
完全に一部でもない。
プログラミング 数学
|入出力| 共通点 |稠密、連続|
プログラミングにも数学にも、それぞれ再現できない概念が存在する。
22132人目の素数さん
2024/10/27(日) 18:32:02.40ID:NJ3emw00 そこ(の一部)を埋めるのがプログラミングのモナド。
2024/10/27(日) 18:35:02.19ID:KkbwwIvn
素人乙
24132人目の素数さん
2024/10/27(日) 18:37:15.34ID:NJ3emw00 どこらへんが?
2024/10/27(日) 18:54:14.28ID:KkbwwIvn
プログアム作ったことあるの?
26132人目の素数さん
2024/10/27(日) 18:56:33.34ID:NJ3emw00 そりゃHaskellでも作ったことあるけど、今って数学の話してるんじゃないの?
2024/10/27(日) 19:08:40.66ID:KkbwwIvn
ゴミ
28132人目の素数さん
2024/10/27(日) 19:13:05.45ID:NJ3emw00 お前が素人なんじゃん。
2024/10/27(日) 19:22:02.60ID:KkbwwIvn
図星
2024/10/27(日) 19:23:53.06ID:KkbwwIvn
言語のシェア・人気トレンド
https://techmania.jp/blog/programming0001/#outline__2_4
https://techmania.jp/blog/programming0001/#outline__2_4
31132人目の素数さん
2024/10/27(日) 19:38:33.61ID:NJ3emw00 やはりか。
モナドというのはλ計算+αのことで、λ計算で表現できない効果を表現するために導入される概念だが
全然知らんだろう。
モナドというのはλ計算+αのことで、λ計算で表現できない効果を表現するために導入される概念だが
全然知らんだろう。
2024/10/27(日) 20:29:01.71ID:KkbwwIvn
ハスケルで何のプログラム作ったんだ?
33132人目の素数さん
2024/10/27(日) 20:33:11.44ID:NJ3emw00 古いがwxHaskellでさめがめとか。
34132人目の素数さん
2024/10/27(日) 20:51:27.80ID:wu6Ollaf >>22
埋めてないですよ?
私個人の見解では、モナドは入出力に対してはアウトソーシングの様な働きをすると認識しています。
IOモナドは外部に依頼(アウトソーシング)して、他のモナドは同じHaskell(数学)世界に依頼(同僚や部下に頼む感じ)する。
関数自体、アウトソーシング的な概念。
(それが数学の外にも向いたと考える)
Maybe
f >>= g
f = Just 0 -- 数学内へ初期化依頼
g = Just.(+1) -- +1してJustに入れる依頼
IO
f >>= g
f = readLn -- 外部へ初期化依頼。
g = print.(+1) -- +1して出力して、IOに()を入れる依頼
戻り値を破棄するf >> gの場合は完了報告だけしてくれれば良いよ。的な。
型が依頼書の書式とか、そんな感じ。
埋めてないですよ?
私個人の見解では、モナドは入出力に対してはアウトソーシングの様な働きをすると認識しています。
IOモナドは外部に依頼(アウトソーシング)して、他のモナドは同じHaskell(数学)世界に依頼(同僚や部下に頼む感じ)する。
関数自体、アウトソーシング的な概念。
(それが数学の外にも向いたと考える)
Maybe
f >>= g
f = Just 0 -- 数学内へ初期化依頼
g = Just.(+1) -- +1してJustに入れる依頼
IO
f >>= g
f = readLn -- 外部へ初期化依頼。
g = print.(+1) -- +1して出力して、IOに()を入れる依頼
戻り値を破棄するf >> gの場合は完了報告だけしてくれれば良いよ。的な。
型が依頼書の書式とか、そんな感じ。
35132人目の素数さん
2024/10/27(日) 20:55:34.38ID:wu6Ollaf モナドは数学が、数学の外の世界と遣り取りする手段「にも」なる概念
36132人目の素数さん
2024/10/27(日) 21:09:16.38ID:wu6Ollaf >>32
純粋関数型言語には作れないんじゃないとか言われてたので作ってみたのはカウンター。
CUIのカウンターはmapM_ (\x -> print x >> getLine) [1..]ってしただけ。
当時は"q"を押したら終了とか、"clear"って入れたらリセット(main関数で再帰)とか、もうちょっと凝ってた。
gtk2hsでカウンター。
ボタンの表示する文字(ボタンオブジェクトのバッファ)とHaskellで値を遣り取り。
Haskellは文字を読んで処理して返すだけなので、状態を持たない。
状態を持っているのはGUIのボタン。
純粋関数型言語には作れないんじゃないとか言われてたので作ってみたのはカウンター。
CUIのカウンターはmapM_ (\x -> print x >> getLine) [1..]ってしただけ。
当時は"q"を押したら終了とか、"clear"って入れたらリセット(main関数で再帰)とか、もうちょっと凝ってた。
gtk2hsでカウンター。
ボタンの表示する文字(ボタンオブジェクトのバッファ)とHaskellで値を遣り取り。
Haskellは文字を読んで処理して返すだけなので、状態を持たない。
状態を持っているのはGUIのボタン。
2024/10/27(日) 21:12:34.46ID:NJ3emw00
モナドを使ったcomputational lambda calculusと言うものがあってだね、現実のプログラムと数学のギャップを埋めている。
そもそもそのギャップを埋めるためにモナドが提案されてんだし。
それだと「アウトソーシング」って概念を数学に導入してるじゃん
そもそもそのギャップを埋めるためにモナドが提案されてんだし。
それだと「アウトソーシング」って概念を数学に導入してるじゃん
2024/10/27(日) 21:14:04.89ID:KkbwwIvn
通信できるのか?
39132人目の素数さん
2024/10/27(日) 21:58:53.98ID:NJ3emw00 >>34
「私個人の見解では」って書いてた。Haskellerは論文読まないからいつまでたってもモナドがなんなのかわからない。
「私個人の見解では」って書いてた。Haskellerは論文読まないからいつまでたってもモナドがなんなのかわからない。
2024/10/27(日) 22:11:28.36ID:KkbwwIvn
postgsqlと繋がるのか?
41132人目の素数さん
2024/10/27(日) 23:25:23.75ID:NJ3emw00 知らない。
2024/10/28(月) 00:51:07.18ID:f5zvfyqN
>>39
対称モノイダル圏のほうが好き。
対称モノイダル圏のほうが好き。
43132人目の素数さん
2024/10/28(月) 04:00:42.27ID:dfYtzgey ここまで依存型の話題なし
44132人目の素数さん
2024/10/28(月) 04:03:21.81ID:xxR5iBU0 結局、自分もネットでググった知識しかないから、一昔前の話しかできないわけだ
せめて英語の文献を読んでいれば
せめて英語の文献を読んでいれば
45132人目の素数さん
2024/11/06(水) 13:48:36.10ID:zhmK+C2E >>36
Haskellって名前はカッコイイけど人気ないな
Haskellって名前はカッコイイけど人気ないな
46132人目の素数さん
2024/11/06(水) 20:15:32.46ID:4GPbLR/6 C言語系列(C/C++, Java, C#)触ってきた人にはRustの方が受け入れやすい。
速さを犠牲にしてまで純粋さを追い求める人が少ない。
入門する言語がC, VB, Pythonである限り、関数型言語は普及しない。
手続き脳と関数脳の違いもある。
2次元配列(リスト)に連続した値を入れるとかが違いが大きい。
(機会があったら、ぜひ作ってみてほしい)
mylist 3 4 = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
速さを犠牲にしてまで純粋さを追い求める人が少ない。
入門する言語がC, VB, Pythonである限り、関数型言語は普及しない。
手続き脳と関数脳の違いもある。
2次元配列(リスト)に連続した値を入れるとかが違いが大きい。
(機会があったら、ぜひ作ってみてほしい)
mylist 3 4 = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
2024/11/06(水) 20:23:59.09ID:eciaadzN
そもそも関数型ってそこまで利点ないしな
48132人目の素数さん
2024/11/07(木) 00:20:08.89ID:GwHDNA0i バグが出にくいってのは正しいし、標準ライブラリの範囲なら生産効率でPythonを上回るし、最新のHaskellは速度もC#と同程度まで改善されてきた。
(純粋じゃなければ、Standard ML, OCaml はC並みの速さ謳ってるし、正格評価版HaskellのIdris2も高速らしい)
利点としては十分なんだけど、普及してないが故にとにかくライブラリやフレームワークが少ない。
(純粋じゃなければ、Standard ML, OCaml はC並みの速さ謳ってるし、正格評価版HaskellのIdris2も高速らしい)
利点としては十分なんだけど、普及してないが故にとにかくライブラリやフレームワークが少ない。
49132人目の素数さん
2024/11/07(木) 00:27:58.71ID:GwHDNA0i >46 のmylist関数をそれぞれPythonとHaskellで書いた。
タイムは6000x8000の最後の要素を表示するまでの時間。
Python(TotalSeconds : 8.4488738)
def mylist(n, m):
a = range(1, n * m + 1).__iter__()
return [[a.__next__() for _ in range(0, n)] for _ in range(0, m)]
Haskell(TotalSeconds : 3.4794725)
mylist n m = take n.iterate f $ [1..m]
where f = map (+m)
タイムは6000x8000の最後の要素を表示するまでの時間。
Python(TotalSeconds : 8.4488738)
def mylist(n, m):
a = range(1, n * m + 1).__iter__()
return [[a.__next__() for _ in range(0, n)] for _ in range(0, m)]
Haskell(TotalSeconds : 3.4794725)
mylist n m = take n.iterate f $ [1..m]
where f = map (+m)
2024/11/07(木) 16:42:11.56ID:Fs1gLDBt
生産性の低さと学習コストが普及のネックになってるのか
51132人目の素数さん
2024/11/07(木) 18:25:14.21ID:GwHDNA0i 結局、モナドなんて名前出すから「モナドって何?」ってなる。
分かったら色んな所にご利益があるって気付いて感動するけど、
副作用の分離と副作用使っても参照透明性が保たれているって以外は
普通のプログラミング言語を再現するためのものでしかない。
そういう動きの演算子で、do形式に変換できるっていうだけに留めるだけで、
大分ハードルは下がると思う。
どうしてもモナドを説明したいなら、お勧めのモナドの説明は
「箱の様なものから値を取り出して加工して、箱の様なものに戻す動きをモナドという」
これなら入出力はもちろん、リストやMaybeも統一的にモナドを説明できる。
分かったら色んな所にご利益があるって気付いて感動するけど、
副作用の分離と副作用使っても参照透明性が保たれているって以外は
普通のプログラミング言語を再現するためのものでしかない。
そういう動きの演算子で、do形式に変換できるっていうだけに留めるだけで、
大分ハードルは下がると思う。
どうしてもモナドを説明したいなら、お勧めのモナドの説明は
「箱の様なものから値を取り出して加工して、箱の様なものに戻す動きをモナドという」
これなら入出力はもちろん、リストやMaybeも統一的にモナドを説明できる。
2024/11/07(木) 20:35:45.89ID:GuBZ+e11
それ数学じゃないじゃん。
Paul Hudakも言ってるけど、モナドは表示的意味論を構造化するためのもの。
入出力付きプログラムとか計算効果付きプログラムを数学的に解釈することを狙ったものだよ。
Paul Hudakも言ってるけど、モナドは表示的意味論を構造化するためのもの。
入出力付きプログラムとか計算効果付きプログラムを数学的に解釈することを狙ったものだよ。
53132人目の素数さん
2024/11/07(木) 20:59:55.97ID:GwHDNA0i 自分が数学としてのモナドを理解しきれてないってのもあるけど、ネットのモナドの例えが
・モナドな世界から数学な世界に降りてきて、モナドな世界に戻す。---___---みたいな所を上下移動するイメージ
・床下配線。上とは逆で、モナドな世界が下にあるイメージ
・IOモナドは世界を受け取って世界を返す。関数適用前の世界から値を取り出し、関数を適用。関数の戻り値が関数適用後の世界。
という、煙に巻かれたような説明ばかりで、自分なりに納得する理由を考えた結果なのですよ^^;
なにか一般人に分かり易いモナドの説明があったら教えてほしいですね。切実に。
・モナドな世界から数学な世界に降りてきて、モナドな世界に戻す。---___---みたいな所を上下移動するイメージ
・床下配線。上とは逆で、モナドな世界が下にあるイメージ
・IOモナドは世界を受け取って世界を返す。関数適用前の世界から値を取り出し、関数を適用。関数の戻り値が関数適用後の世界。
という、煙に巻かれたような説明ばかりで、自分なりに納得する理由を考えた結果なのですよ^^;
なにか一般人に分かり易いモナドの説明があったら教えてほしいですね。切実に。
54132人目の素数さん
2024/11/07(木) 21:20:57.52ID:GuBZ+e11 純粋関数:
f :: A -> B, g :: B -> Cとすると
合成は単純に
g・f :: A -> C
結合律も満たす。
恒等射を1_X :: X -> X
とすると
f・1_A = f (右単位元)
1_B・f = f (左単位元)
を満たす。
なので純粋関数は圏をなす。
計算効果T付きプログラム:
p :: A -> T B、q :: B -> T C
とすると合成は
q `bind` p :: A -> T C
結合律も満たす。
return :: X -> T Xというものを導入すると
p `bind` return = p (右単位元)
return `bind` p = p (左単位元)
を満たすようにTとbindとreturnに条件を付けることができる。
(T,bind,return)に対するこの条件をプログラミングの世界ではモナド則という。
モナド則を満たすならば、計算効果付きプログラムは純粋関数と同じく圏をなす。
そうすると、副作用のない純粋関数の世界(圏)と副作用のあるプログラムの世界(圏)を分離できました(構造化できました)よというのがモナド。
f :: A -> B, g :: B -> Cとすると
合成は単純に
g・f :: A -> C
結合律も満たす。
恒等射を1_X :: X -> X
とすると
f・1_A = f (右単位元)
1_B・f = f (左単位元)
を満たす。
なので純粋関数は圏をなす。
計算効果T付きプログラム:
p :: A -> T B、q :: B -> T C
とすると合成は
q `bind` p :: A -> T C
結合律も満たす。
return :: X -> T Xというものを導入すると
p `bind` return = p (右単位元)
return `bind` p = p (左単位元)
を満たすようにTとbindとreturnに条件を付けることができる。
(T,bind,return)に対するこの条件をプログラミングの世界ではモナド則という。
モナド則を満たすならば、計算効果付きプログラムは純粋関数と同じく圏をなす。
そうすると、副作用のない純粋関数の世界(圏)と副作用のあるプログラムの世界(圏)を分離できました(構造化できました)よというのがモナド。
55132人目の素数さん
2024/11/07(木) 21:58:35.16ID:GwHDNA0i モナド則はモナドの説明の時に出てきますので知ってますし、その結果
・副作用のある関数を使っても参照透明性が保たれている
・型によって純粋関数と副作用のある関数を分離できる
はHaskell学んだ人は知ってますが、それでも「モナドって何なの?」って思うわけで…。
数学書って「定義」→「定理」→「証明」の繰り返しで、
抽象的過ぎて何やってるのか実際に数式をいじらないと有り難味が分かりづらいですから^^;
要するに納得感が欲しいのですよ。
それで、納得感を与える私なりの説明が >51 なんです。
もう少しHaskellのモナドの効果を調べると
・do表記からも分かる通り、順次処理もモナドの効果。(Haskellのプログラムは事実上1つの巨大な式)
・リストが左から順に処理されるのも、MonadPlus内でdo x <- xsが使われているので、ある種モナドの順次処理の効果。
(リスト内包表記はdo表記とガード関数の合わせ技。do表記の方は(実用上の意味は無いが)リスト以外のモナドにもできる)
というのもありますね。
・副作用のある関数を使っても参照透明性が保たれている
・型によって純粋関数と副作用のある関数を分離できる
はHaskell学んだ人は知ってますが、それでも「モナドって何なの?」って思うわけで…。
数学書って「定義」→「定理」→「証明」の繰り返しで、
抽象的過ぎて何やってるのか実際に数式をいじらないと有り難味が分かりづらいですから^^;
要するに納得感が欲しいのですよ。
それで、納得感を与える私なりの説明が >51 なんです。
もう少しHaskellのモナドの効果を調べると
・do表記からも分かる通り、順次処理もモナドの効果。(Haskellのプログラムは事実上1つの巨大な式)
・リストが左から順に処理されるのも、MonadPlus内でdo x <- xsが使われているので、ある種モナドの順次処理の効果。
(リスト内包表記はdo表記とガード関数の合わせ技。do表記の方は(実用上の意味は無いが)リスト以外のモナドにもできる)
というのもありますね。
2024/11/07(木) 22:12:19.74ID:FpXO3cRO
57132人目の素数さん
2024/11/07(木) 22:13:16.34ID:GwHDNA0i こちらは私個人は疑惑的ですが、圏論の道案内という本では
MaybeモナドやListモナドの空の状態を意味するNothingや[]が
例外を一か所にまとめるという点で例外処理より優秀とか書いてましたね。
これもモナドの効果でしょう。
-- 1度Nothingが返ったら、後に何をしてもずっとNothingになる
Just 1 >>= Just.(+1) >> Nothing >>= Just.(+2) = Nothing
MaybeモナドやListモナドの空の状態を意味するNothingや[]が
例外を一か所にまとめるという点で例外処理より優秀とか書いてましたね。
これもモナドの効果でしょう。
-- 1度Nothingが返ったら、後に何をしてもずっとNothingになる
Just 1 >>= Just.(+1) >> Nothing >>= Just.(+2) = Nothing
2024/11/07(木) 22:15:47.47ID:GuBZ+e11
「モナドって何なの?」=>計算効果付きプログラムが圏を成すための合成機構。その条件がモナド則
多分なんか勘違いしてる
>・副作用のある関数を使っても参照透明性が保たれている
>・型によって純粋関数と副作用のある関数を分離できる
参照透過性を保ちつつ副作用のあるプログラムは別にモナドなくても作れる。合成ができないだけで。
型も大事ではあるけれど、圏としてつまり数学的構造として純粋関数と計算効果付きプログラムを分離しているのはモナド則なんだよ。
>数学書って「定義」→「定理」→「証明」の繰り返しで
数学書読んでもわかんないよ。あれって数学云々の前の前提の部分が肝心だから納得感欲しいなら元論文読んだ方がいいよ。
数学的には圏を成すかなさないかだけだと思うし。
多分なんか勘違いしてる
>・副作用のある関数を使っても参照透明性が保たれている
>・型によって純粋関数と副作用のある関数を分離できる
参照透過性を保ちつつ副作用のあるプログラムは別にモナドなくても作れる。合成ができないだけで。
型も大事ではあるけれど、圏としてつまり数学的構造として純粋関数と計算効果付きプログラムを分離しているのはモナド則なんだよ。
>数学書って「定義」→「定理」→「証明」の繰り返しで
数学書読んでもわかんないよ。あれって数学云々の前の前提の部分が肝心だから納得感欲しいなら元論文読んだ方がいいよ。
数学的には圏を成すかなさないかだけだと思うし。
2024/11/07(木) 22:28:02.71ID:FpXO3cRO
>>56
表示的意味論
表示的意味論
60132人目の素数さん
2024/11/07(木) 22:37:11.30ID:GwHDNA0i ふうむ…。
私の勘違いのもとは、そちらが「計算効果付きプログラム」としきりに書いているところが鍵な気がしますね。
元論文というのは >56 のPDFでしょうか?
勉強させていただきます。
それにしても、やっぱり一般の人がモナドを理解って難しい…。
>51 って、そちらの言う
計算効果T付きプログラム:
p :: A -> T B、q :: B -> T C
とすると合成は
q `bind` p :: A -> T C
結合律も満たす。
の動きをそのままTを入れ物の様なものとして書いただけなんですけどね…。
この説明じゃダメなんかなぁ…。
でも、「圏を成すための合成機構。その条件がモナド則」か。
うん、そこは分かってて、でも結局モナドって何者?って感じる…。
ええい、とりあえず元論文読ませていただきます!
私の勘違いのもとは、そちらが「計算効果付きプログラム」としきりに書いているところが鍵な気がしますね。
元論文というのは >56 のPDFでしょうか?
勉強させていただきます。
それにしても、やっぱり一般の人がモナドを理解って難しい…。
>51 って、そちらの言う
計算効果T付きプログラム:
p :: A -> T B、q :: B -> T C
とすると合成は
q `bind` p :: A -> T C
結合律も満たす。
の動きをそのままTを入れ物の様なものとして書いただけなんですけどね…。
この説明じゃダメなんかなぁ…。
でも、「圏を成すための合成機構。その条件がモナド則」か。
うん、そこは分かってて、でも結局モナドって何者?って感じる…。
ええい、とりあえず元論文読ませていただきます!
2024/11/07(木) 22:45:43.57ID:GuBZ+e11
いや、>>56はなんかよくわからん人のレス。毒にも薬にもならんと思う。
元論文としては、
https://person.dibris.unige.it/moggi-eugenio/ftp/abs-view.pdf
https://person.dibris.unige.it/moggi-eugenio/ftp/lics89.pdf
https://www.cs.cmu.edu/~crary/819-f09/Moggi91.pdf
あたりだけど、読んでもよくわかんないと思う(主に動機の面で。1番目は動機が比較的書いてあるけどそれでも読みにくいと思う)。
回り道を覚悟するならHaskellつながりでPaul Hudakの
https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=4d8118127560f725dde34a8b1e144d6d10d01142
を一度読んでみるとあれ?ってなると思う。
元論文としては、
https://person.dibris.unige.it/moggi-eugenio/ftp/abs-view.pdf
https://person.dibris.unige.it/moggi-eugenio/ftp/lics89.pdf
https://www.cs.cmu.edu/~crary/819-f09/Moggi91.pdf
あたりだけど、読んでもよくわかんないと思う(主に動機の面で。1番目は動機が比較的書いてあるけどそれでも読みにくいと思う)。
回り道を覚悟するならHaskellつながりでPaul Hudakの
https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=4d8118127560f725dde34a8b1e144d6d10d01142
を一度読んでみるとあれ?ってなると思う。
62132人目の素数さん
2024/11/07(木) 22:47:55.83ID:GwHDNA0i おおう。
ありがとうございます。
読ませていただきます。
ありがとうございます。
読ませていただきます。
2024/11/07(木) 22:52:40.64ID:GuBZ+e11
ちなみに「計算効果」というのはあとから与えられた名称なので元論文には出てこない。相当するのはnotion of computationという概念かな。
圏論使った理論なんだからまず圏なさないといけないじゃん。普通は圏を成さないプログラムを圏にしようと思うとモナドが必要になる、では納得できないもん?
ちなみに動作機構の解釈とか、do表記の解釈とかは無いよ。あくまで表示的意味論を構造化するもんだから。そういうのは副産物的に便利なだけだと思う。
圏論使った理論なんだからまず圏なさないといけないじゃん。普通は圏を成さないプログラムを圏にしようと思うとモナドが必要になる、では納得できないもん?
ちなみに動作機構の解釈とか、do表記の解釈とかは無いよ。あくまで表示的意味論を構造化するもんだから。そういうのは副産物的に便利なだけだと思う。
64132人目の素数さん
2024/11/08(金) 18:49:49.67ID:cKORtqw5 >>63
「モナドが必要になる」は分かるんですよ。
純粋数学におけるモナドってどういう位置づけ?みたいな感覚でしょうか。
多分、純粋数学のどこでモナドって現れるの?が聞きたいのかも。
具体例がいくつかあれば、イメージ湧く気がします。
モノイドが数え上げや繰り返しによく表れる構造。みたいなのが欲しいのかも知れません。
「モナドが必要になる」は分かるんですよ。
純粋数学におけるモナドってどういう位置づけ?みたいな感覚でしょうか。
多分、純粋数学のどこでモナドって現れるの?が聞きたいのかも。
具体例がいくつかあれば、イメージ湧く気がします。
モノイドが数え上げや繰り返しによく表れる構造。みたいなのが欲しいのかも知れません。
65132人目の素数さん
2024/11/08(金) 19:39:05.12ID:BwbJKvDJ そんなもん知るかよ。要求するレベルが高すぎ。自分で言ってること冷静に考えた方がいいぞ。
理論計算機科学者の専門家でもそれ満足できる人なんてほとんどいないと思う。
絶対そこまで理解いらないと思う。方向性がおかしいと思う。
でもマジでやりたいなら、計算効果じゃなくて代数的効果(algebraic effects)を勉強すべき
Lawvereの代数的理論から見たモナドを理解しないとモナドに納得できないみたいなことを言ってる。
普通に考えて専門家でもそこまで理解してないって。
理論計算機科学者の専門家でもそれ満足できる人なんてほとんどいないと思う。
絶対そこまで理解いらないと思う。方向性がおかしいと思う。
でもマジでやりたいなら、計算効果じゃなくて代数的効果(algebraic effects)を勉強すべき
Lawvereの代数的理論から見たモナドを理解しないとモナドに納得できないみたいなことを言ってる。
普通に考えて専門家でもそこまで理解してないって。
66132人目の素数さん
2024/11/08(金) 21:44:16.50ID:cKORtqw5 でも多分、Haskell勉強してる人ってレベルを問わず、そういう要求してるんですよね。(もちろん、私も含めて)
それでモヤモヤして >53 みたいな例えで終わるか、そこまでもイメージできずにHaskellアンチに回るか。
せめて、モノイドの具体例みたいに、モナドの具体例があれば…。
(構造的にはモノイドと似てるので、モノイドの適用範囲外の対象でモノイド的な動きをしてそうなんですが…)
例えば逐次処理は数え上げっぽい動きと言えるけど、モノイドの対象じゃないからモナドの具体例(?)。
とか、そういうのが数学でもモナドの具体例で無いでしょうか?
それでモヤモヤして >53 みたいな例えで終わるか、そこまでもイメージできずにHaskellアンチに回るか。
せめて、モノイドの具体例みたいに、モナドの具体例があれば…。
(構造的にはモノイドと似てるので、モノイドの適用範囲外の対象でモノイド的な動きをしてそうなんですが…)
例えば逐次処理は数え上げっぽい動きと言えるけど、モノイドの対象じゃないからモナドの具体例(?)。
とか、そういうのが数学でもモナドの具体例で無いでしょうか?
67132人目の素数さん
2024/11/08(金) 22:14:49.39ID:BwbJKvDJ モナド、モナド言う割にあんま大して調べてないんじゃね?
Haskellのモナドは数学のモナドと直接対応しないぞ。
つまりモノイドとのメタファは直接は成り立たない。
直接対応するのはKleisli圏。Haskellのモナドの三つ組はKleisli tripleというのに対応する。
https://www.ipsj.or.jp/07editj/promenade/4703.pdf
具体例知りたければ、数学のKleisli圏調べればいいんじゃね。でも、もともとの出自からして具体的な
ものはないんじゃないか。
もしかして常にControl.Monad モジュール?だったかインポートして
>>=の代わりに全部joinでプログラム組んでいるという特殊なHaskeller?
>>=の代わりにjoin使えば、モナドは文字通り数学のモナドと対応するよ。
Haskellのモナドは数学のモナドと直接対応しないぞ。
つまりモノイドとのメタファは直接は成り立たない。
直接対応するのはKleisli圏。Haskellのモナドの三つ組はKleisli tripleというのに対応する。
https://www.ipsj.or.jp/07editj/promenade/4703.pdf
具体例知りたければ、数学のKleisli圏調べればいいんじゃね。でも、もともとの出自からして具体的な
ものはないんじゃないか。
もしかして常にControl.Monad モジュール?だったかインポートして
>>=の代わりに全部joinでプログラム組んでいるという特殊なHaskeller?
>>=の代わりにjoin使えば、モナドは文字通り数学のモナドと対応するよ。
2024/11/08(金) 23:29:54.12ID:MIL/reCc
オペラッドもカリー化も
多変数写像を一変数写像にする枠組みに使えないだろうか?という共通意識を持ってそう。
多変数写像を一変数写像にする枠組みに使えないだろうか?という共通意識を持ってそう。
69132人目の素数さん
2024/11/09(土) 08:30:04.26ID:FY91cDX6 >>67
>Haskellのモナドは数学のモナドと直接対応しないぞ。
これはいい事を聞きました。
joinですね。やってみます。
>つまりモノイドとのメタファは直接は成り立たない。
モノイドとのメタファは圏論の基礎に三角図式がどっちにもあったし、どちらも結合法則を満たす。
モノイドの条件は結合法則を満たす事のみって事で、勝手に独自に思ったものです。
(なので、自分の中では群も環も体もモノイドでもある)
>数学のKleisli圏調べればいいんじゃね。
調べてみます。
>Haskellのモナドは数学のモナドと直接対応しないぞ。
これはいい事を聞きました。
joinですね。やってみます。
>つまりモノイドとのメタファは直接は成り立たない。
モノイドとのメタファは圏論の基礎に三角図式がどっちにもあったし、どちらも結合法則を満たす。
モノイドの条件は結合法則を満たす事のみって事で、勝手に独自に思ったものです。
(なので、自分の中では群も環も体もモノイドでもある)
>数学のKleisli圏調べればいいんじゃね。
調べてみます。
2024/11/09(土) 09:46:20.14ID:gP4Cl+Vg
カレーはバーモンドカレーに限る
71132人目の素数さん
2024/11/09(土) 18:05:52.30ID:4Q5b7QAO やっぱ知らなかったか。そりゃ理解できないわ。
Haskellerに多いんじゃない?直接対応するのKleisli tripleってこと知らない人。
圏論の基礎の初めのあたりにモナドとモノイドとの対比が載ってるから広がったんだと思うけど、
モノイド知っても何か足しになるとは思えない。
そういえば、『圏論の歩き方』にKleisli圏の例が載っていた気がする。代数じゃなくてたしか確率だったけど。
Haskellerに多いんじゃない?直接対応するのKleisli tripleってこと知らない人。
圏論の基礎の初めのあたりにモナドとモノイドとの対比が載ってるから広がったんだと思うけど、
モノイド知っても何か足しになるとは思えない。
そういえば、『圏論の歩き方』にKleisli圏の例が載っていた気がする。代数じゃなくてたしか確率だったけど。
72132人目の素数さん
2024/11/09(土) 18:54:40.41ID:FY91cDX6 >>71
>Haskellerに多いんじゃない?直接対応するのKleisli tripleってこと知らない人。
多いと思います。
圏論の入門書買ってまで勉強する人は少ないですし、数学が理解できる人もさらに少ないので。
私は数学理解できなかったので、今数学の学び直しからです。
(アーベル圏のアーベルって何?状態で、アーベル = 可換と群論で知った感じです)
歩き方の方ですか、道案内の方は持ってるのですが、著者が同じなので読み直そうかな。
>Haskellerに多いんじゃない?直接対応するのKleisli tripleってこと知らない人。
多いと思います。
圏論の入門書買ってまで勉強する人は少ないですし、数学が理解できる人もさらに少ないので。
私は数学理解できなかったので、今数学の学び直しからです。
(アーベル圏のアーベルって何?状態で、アーベル = 可換と群論で知った感じです)
歩き方の方ですか、道案内の方は持ってるのですが、著者が同じなので読み直そうかな。
2024/11/10(日) 15:35:28.43ID:KGofMs6x
関数型プログラミング言語Haskell Part34
https://mevius.5ch.net/test/read.cgi/tech/1639713446/
https://mevius.5ch.net/test/read.cgi/tech/1639713446/
2024/11/10(日) 15:36:14.60ID:KGofMs6x
「数学」をプログラミングするには
https://mevius.5ch.net/test/read.cgi/tech/1710585705/
https://mevius.5ch.net/test/read.cgi/tech/1710585705/
2024/11/20(水) 18:01:21.84ID:gLlwGP4V
まず大前提としてHaskellをやるのに圏論は必要ないし得るものもないってところから理解しよう
2024/11/20(水) 20:29:01.13ID:L0XHfTdv
>>1
必要ない。ラムダ計算論は知っておいていいとは思うが、オブジェクト志向に役立つ
数学理論というのは特にないだろう
それよりも具体的に作りたいソフトウェアとコンパイルを意識しながら簡潔なコーディングを考える訓練をしたほうがいい
必要ない。ラムダ計算論は知っておいていいとは思うが、オブジェクト志向に役立つ
数学理論というのは特にないだろう
それよりも具体的に作りたいソフトウェアとコンパイルを意識しながら簡潔なコーディングを考える訓練をしたほうがいい
2024/11/21(木) 07:45:36.85ID:jE2BR9oB
すんません、オブジェクト指向ってなんですか?
78132人目の素数さん
2024/11/23(土) 11:30:35.70ID:ZZ2Yx3Ws 最新最強の言語Rustを学べば
オブジェクト指向や関数型プログラミングが何かの議論も意味を成さなくなる
オブジェクト指向や関数型プログラミングが何かの議論も意味を成さなくなる
2024/11/23(土) 12:08:01.22ID:GI4x0ZEB
何をするか、どんな処理をするかではなく
どんなものを処理していくのかを起点にコードを整理していく技術
どんなものを処理していくのかを起点にコードを整理していく技術
2024/11/23(土) 15:51:33.83ID:cGdJuX+x
一階論理は完全だけど二階論理は不完全である
2024/11/25(月) 16:05:29.16ID:Jt/hI90E
すみません、ちょっと内々に聞きたいことがあるのですが、
とある会社が詐欺をしている証拠を発見しまして、あまり公には書けない内容なのですが
このスレにseoとドメインについて多少知識のある方いますか?
もし質問に答えていただける方居ましたら、メール欄に使い捨てのメルアドでも貼っていただければ、そちらにメールさせていただきますので
使い捨てメアドはワンタイムメールってのが使いやすいです
よろしくお願いいたします
とある会社が詐欺をしている証拠を発見しまして、あまり公には書けない内容なのですが
このスレにseoとドメインについて多少知識のある方いますか?
もし質問に答えていただける方居ましたら、メール欄に使い捨てのメルアドでも貼っていただければ、そちらにメールさせていただきますので
使い捨てメアドはワンタイムメールってのが使いやすいです
よろしくお願いいたします
2024/11/25(月) 16:43:31.86ID:Jt/hI90E
2024/12/06(金) 03:58:04.01ID:psUqlDz4
スレチだよ
専門スレに行け
専門スレに行け
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- フランス各地でデモに乗じ破壊や略奪、歴史的建造物の市庁舎は放火で焼失…全国1500の小売店が襲撃受ける ★3 [ぐれ★]
- 新品の畳に「くさい!」 鼻をつまむ子どもに「世も末だ…」 町の小さな畳屋が憂う“畳離れ”の現実 [ぐれ★]
- 【子供】「2人目欲しい」が過去最低、6年で半減 物価高で収入に不安か [煮卵★]
- 「フランスが燃えている」と投稿 トランプ氏 [少考さん★]
- 両足切断された30代女性が意識回復、軽トラックと車に挟まれた事故 40代男を逮捕 東京・世田谷区三軒茶屋 ★3 [お断り★]
- 武尊氏、SNS誹謗中傷に「罰せられないの?本当にそろそろSNSの法整備した方がいい」 [少考さん★]
- 高市早苗「高市円安って呼ぶのやめろ」 [834922174]
- 【】🇫🇷フランス暴動、ベルギー・イタリアにも波及し始めるwwwwwwwwwww [762037879]
- 【だんじり】岸和田のだんじラー「私が屋根に乗る役で死んだら親はお詫び行脚すると思う」 [841411289]
- 愛國抗中ドラマ「VIVANT」、中国に対して「別班を攻撃したら西側諸国が黙っていないよ?ニチャァ」というとんでもないセリフを吐くwww [779857986]
- 「中国にはまともなトイレなし」米ザカリア新報道官 またネトウヨ😭 [399259198]
- 鮒←これ読める?(・o・🍬)🏰