関数型プログラミング言語 Haskell について語るスレです。
Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part33
https://mevius.5ch.net/test/read.cgi/tech/1581326256/
関数型プログラミング言語Haskell Part34
1デフォルトの名無しさん
2021/12/17(金) 12:57:26.37ID:NPioGyUL307デフォルトの名無しさん
2024/07/26(金) 08:11:21.54ID:3P5OnSpM どなたか教えてください。
数学の構成や命題の証明に使うならば、HaskellとOCamlはどちらがよいでしょうか。
数学の構成や命題の証明に使うならば、HaskellとOCamlはどちらがよいでしょうか。
308デフォルトの名無しさん
2024/07/26(金) 12:15:47.14ID:f34zQmtT Rustは、メモリが見えすぎるのがイヤだー
大したもの書かないから、GCありでお願いしたい
大したもの書かないから、GCありでお願いしたい
309デフォルトの名無しさん
2024/07/26(金) 17:24:09.33ID:HoH4md/R310デフォルトの名無しさん
2024/07/26(金) 17:58:43.47ID:dth0vnjc 数学の構成?
311デフォルトの名無しさん
2024/07/27(土) 00:29:15.86ID:r3Qeb3es >>307
Coqという証明支援プログラミング言語をお使い下さい。
Haskellでも型プログラミングでゴリゴリ自力で命題の証明出来るそうですが、ある程度自動化されている専用言語の方が良いでしょう。
Coqはその中でも日本語情報が多いです。
Coqという証明支援プログラミング言語をお使い下さい。
Haskellでも型プログラミングでゴリゴリ自力で命題の証明出来るそうですが、ある程度自動化されている専用言語の方が良いでしょう。
Coqはその中でも日本語情報が多いです。
312デフォルトの名無しさん
2024/07/27(土) 00:43:27.29ID:r3Qeb3es >>306
実用言語、特に組み込み分野を置き換えるのに期待されてる。
特集記事が無くてもお題スレ見たいな、Rustで問題を解こう的な連載が続いてる辺り、
特にinterfaceの編集陣の熱量は感じる。
Haskellも先駆者の記事によればWeb向けとしては神言語だそうだ。
ただ、周辺環境が未整備なだけで。
(なので、自分で全部作るという茨の道を進む「覚悟」が必要だとか)
未だにそうではないことを祈るが…。
実用言語、特に組み込み分野を置き換えるのに期待されてる。
特集記事が無くてもお題スレ見たいな、Rustで問題を解こう的な連載が続いてる辺り、
特にinterfaceの編集陣の熱量は感じる。
Haskellも先駆者の記事によればWeb向けとしては神言語だそうだ。
ただ、周辺環境が未整備なだけで。
(なので、自分で全部作るという茨の道を進む「覚悟」が必要だとか)
未だにそうではないことを祈るが…。
313デフォルトの名無しさん
2024/07/27(土) 00:53:19.48ID:r3Qeb3es >>307
数の構成の方は、代数的型と基本的な方だと(一部)derivingで自動生成してもらえるから、Haskellはとても楽。
print関数で表示する部分だけでも自動生成してもらう価値はある。
(Read,Enum,Ordで生成されるのは確認済み)
data Nat = Zero | Succ Nat deriving (Show)
連続関数はPCそのものの限界で無理。
代数的型でメモリの続く限りの範囲なら少数も作れるかもしれない。
(その前にリストなり何なりで10進数位取り記法を導入しないと、Natは無限進数なので小数点第1位が1万とか、無限に桁上がりしない構造になる)
数の構成の方は、代数的型と基本的な方だと(一部)derivingで自動生成してもらえるから、Haskellはとても楽。
print関数で表示する部分だけでも自動生成してもらう価値はある。
(Read,Enum,Ordで生成されるのは確認済み)
data Nat = Zero | Succ Nat deriving (Show)
連続関数はPCそのものの限界で無理。
代数的型でメモリの続く限りの範囲なら少数も作れるかもしれない。
(その前にリストなり何なりで10進数位取り記法を導入しないと、Natは無限進数なので小数点第1位が1万とか、無限に桁上がりしない構造になる)
314デフォルトの名無しさん
2024/07/27(土) 13:46:44.73ID:f/jP9uGd315デフォルトの名無しさん
2024/07/27(土) 16:19:23.58ID:Z663WedI >>313
ありがとうございます。
ありがとうございます。
316デフォルトの名無しさん
2024/07/27(土) 17:29:46.87ID:sW1zoNGb317デフォルトの名無しさん
2024/07/27(土) 21:26:10.11ID:wvv58UYW 知ってた
318デフォルトの名無しさん
2024/07/27(土) 23:34:35.07ID:r3Qeb3es319デフォルトの名無しさん
2024/08/01(木) 12:24:32.72ID:XzWUPxYY プロセッサメーカはAIブームと見るやこぞってAI処理特化プロセッサの開発競争
関数型言語に特徴的な処理に特化したプロセッサは誰も作ってくれない
関数型言語に特徴的な処理に特化したプロセッサは誰も作ってくれない
320デフォルトの名無しさん
2024/08/01(木) 16:36:21.75ID:rWBa8MOA それ必要か?
321デフォルトの名無しさん
2024/08/04(日) 23:21:47.06ID:y1wQ9MUm >>319
スタックコンピューターは、Lispの時にぽしゃった。
スタックコンピューターは、Lispの時にぽしゃった。
322デフォルトの名無しさん
2024/08/05(月) 21:33:27.17ID:FcOscapW 日本企業がLisp専用マシン作ったが第五世代コンピュータプロジェクトが💩で何らまともな成果をあげられなかったからね。
323デフォルトの名無しさん
2024/08/11(日) 17:42:41.08ID:7wNJGHOt 麓から山頂を目指す
foldl: 徒歩で登り切ったら滑り台で向こう側へ降りてゴンドラで再び山頂へ戻りゴール
foldr: ゴンドラでいきなり山頂へ。そこから向こうの麓まで滑り台で降り、そこから山頂へ徒歩で戻る。但しある場合は滑り台を途中で降りてそこから山頂へ徒歩で戻ってゴールにしてもよい
こういうこと?
foldl: 徒歩で登り切ったら滑り台で向こう側へ降りてゴンドラで再び山頂へ戻りゴール
foldr: ゴンドラでいきなり山頂へ。そこから向こうの麓まで滑り台で降り、そこから山頂へ徒歩で戻る。但しある場合は滑り台を途中で降りてそこから山頂へ徒歩で戻ってゴールにしてもよい
こういうこと?
324デフォルトの名無しさん
2024/08/12(月) 21:44:35.95ID:EAbaqMlq Preludeのライブラリドキュメントのページが最新のChromeでよく応答なしになるんですが!
現代PCでもプチフリを起こすページとか凄いですね!(怒)
現代PCでもプチフリを起こすページとか凄いですね!(怒)
325デフォルトの名無しさん
2024/08/13(火) 01:44:03.00ID:3Ko8/FbA >>324
hoogle使いんさい。
hoogle使いんさい。
326デフォルトの名無しさん
2024/08/13(火) 01:45:16.10ID:3Ko8/FbA327デフォルトの名無しさん
2024/08/15(木) 10:15:40.11ID:oieuoNWz yesod を導入しようとして調べているのですが、今は stack 前提で cabal での利用は考えられていないのでしょうか?
導入記事では cabal の記述がありますが、
yesod init すると stack new 使えと表示が出ます。
導入記事では cabal の記述がありますが、
yesod init すると stack new 使えと表示が出ます。
328デフォルトの名無しさん
2024/08/15(木) 10:30:38.08ID:oieuoNWz yesod-bin 1.6.2.3 です
329デフォルトの名無しさん
2024/08/19(月) 21:35:37.73ID:CkMOJkdv rambda.jsのfold相当の関数を教えてください
330デフォルトの名無しさん
2024/08/24(土) 05:56:24.20ID:WHJg2+SV 今ってghcupの時代じゃないの?
久しぶりにHaskell書こうと戻ってきた浦島太郎がstackを最新にしようと思ったら
ghcupとか紹介されてミーハーだから飛びついたわ
久しぶりにHaskell書こうと戻ってきた浦島太郎がstackを最新にしようと思ったら
ghcupとか紹介されてミーハーだから飛びついたわ
331デフォルトの名無しさん
2024/08/24(土) 07:38:35.09ID:E4GXjFrz Gカップ、ハアーハアー
332デフォルトの名無しさん
2024/08/28(水) 21:41:00.96ID:HNkudrYA Youtubeでしばらくの間丁寧にHaskellを解説していた人が
ある日「やってらんね、俺はもうHaskellでプログラミングしない」と宣言してHaskellから離れたのを見て
所詮その程度の言語なんだなとガッカリした
ある日「やってらんね、俺はもうHaskellでプログラミングしない」と宣言してHaskellから離れたのを見て
所詮その程度の言語なんだなとガッカリした
333デフォルトの名無しさん
2024/08/28(水) 23:56:40.97ID:FNkSebMV >>332
Haskellはモナドの実証言語という側面が強いから、モナドは結局よくわからないものという結論に達した今では話題もないし、Haskellで視聴回数稼げないんじゃない。
Haskellはモナドの実証言語という側面が強いから、モナドは結局よくわからないものという結論に達した今では話題もないし、Haskellで視聴回数稼げないんじゃない。
334デフォルトの名無しさん
2024/08/29(木) 12:50:10.24ID:D5XAFbVY 自作ライブラリの(+)とPrelude.+が被って、Prelude.+使いたい時一々修飾するの面倒くさいしコードも汚くなります
被った時はデフォルトでPrelude.+を使うよって指定することはできないのですか?
被った時はデフォルトでPrelude.+を使うよって指定することはできないのですか?
335デフォルトの名無しさん
2024/08/29(木) 12:53:31.30ID:1jszJs3n >>332
+1
+1
336デフォルトの名無しさん
2024/08/29(木) 12:54:42.14ID:1jszJs3n >>334
自作の方を修飾
自作の方を修飾
337デフォルトの名無しさん
2024/08/29(木) 14:06:11.00ID:gtm/5H5m338デフォルトの名無しさん
2024/08/29(木) 14:06:50.30ID:gtm/5H5m 使用例:
1 .+ 1
>2
1 .+ 1
>2
339デフォルトの名無しさん
2024/08/29(木) 16:27:15.59ID:Nq0HdWD9 やだやだ!修飾したくない!
どっちの+か特定して自動的に選択してよう!
どっちの+か特定して自動的に選択してよう!
340デフォルトの名無しさん
2024/08/29(木) 16:57:49.70ID:YXIyrRhD 何の自作型だか知らんがSemigroup実装して(<>)にでもすれば
341デフォルトの名無しさん
2024/08/29(木) 17:40:12.63ID:aIGVGYPU 就職しろよ
342デフォルトの名無しさん
2024/08/29(木) 20:48:46.38ID:gtm/5H5m >>339
独自の(+)を自動で使い分けてもらうにはNum型クラスのインスタンスにする必要があるけど、それでも見分けるには型が違わないといけない。
独自の(+)は、独自の型を受け取りますか?
そうじゃないとPreludeの(+)と判別する術がないけど。
独自の(+)を自動で使い分けてもらうにはNum型クラスのインスタンスにする必要があるけど、それでも見分けるには型が違わないといけない。
独自の(+)は、独自の型を受け取りますか?
そうじゃないとPreludeの(+)と判別する術がないけど。
343デフォルトの名無しさん
2024/08/29(木) 20:51:12.20ID:gtm/5H5m あ、できれば型宣言を見せて貰えるとアドバイスしやすい。
344デフォルトの名無しさん
2024/08/31(土) 21:17:53.38ID:XbdVGeAf ワカランドとして .+. と .-. と .*. を定義することにしました。しかし本質的に解決するにはNumクラスのインスタンス宣言するらしいですね。
しかし独自型同士の+と-、Rationalとの*、Rationalとの/はできますが、
独自型同士の*、独自型同士の/は定義不可能です。
従ってNumクラスになることはできませんでした。
結局どうしていいか判らんどからのワカランドで落ち着きました。
しかし独自型同士の+と-、Rationalとの*、Rationalとの/はできますが、
独自型同士の*、独自型同士の/は定義不可能です。
従ってNumクラスになることはできませんでした。
結局どうしていいか判らんどからのワカランドで落ち着きました。
345デフォルトの名無しさん
2024/09/03(火) 18:48:39.95ID:yXFMfbtr もしかしてData.Mapって遅い?
一日中検索かけてるような処理なら、もうMapを卒業するべきときか・・・
一日中検索かけてるような処理なら、もうMapを卒業するべきときか・・・
346デフォルトの名無しさん
2024/09/04(水) 00:16:15.77ID:r/FGXedG Data.Mapというより、リストが遅い。
とりあえずコンパイルの際にghc -O2とかghc -O3とかの最適化掛けてみる。
それでもなお速さを求めるなら、ByteStringとか使うと良い。
もしくは、正格評価版HaskellことIdris 2やRustに乗り換える。
(Idris1と2で互換性が無いらしく、別言語扱いされてる)
Haskellで速さを求めるとバッドノウハウが増えて本末転倒になる。
(そこまで苦労するなら素直に速い言語覚えた方が楽。それでも9.10.1はC#並みにはなった?かな?)
とりあえずコンパイルの際にghc -O2とかghc -O3とかの最適化掛けてみる。
それでもなお速さを求めるなら、ByteStringとか使うと良い。
もしくは、正格評価版HaskellことIdris 2やRustに乗り換える。
(Idris1と2で互換性が無いらしく、別言語扱いされてる)
Haskellで速さを求めるとバッドノウハウが増えて本末転倒になる。
(そこまで苦労するなら素直に速い言語覚えた方が楽。それでも9.10.1はC#並みにはなった?かな?)
347デフォルトの名無しさん
2024/09/04(水) 15:29:34.52ID:ZA+d8/X/ リストが遅い、しかし多くのデータ構造の構築はリストから(fromList)。
つまりコンストラクション回数をいかに減らすか、一度コンストラクトした物を使いまわすか、ということですか
つまりコンストラクション回数をいかに減らすか、一度コンストラクトした物を使いまわすか、ということですか
348デフォルトの名無しさん
2024/09/04(水) 16:12:14.21ID:LSV34QaC lisp系言語はリストの操作が速いのに…
349デフォルトの名無しさん
2024/09/04(水) 22:00:37.92ID:r/FGXedG350デフォルトの名無しさん
2024/09/04(水) 22:22:04.95ID:r/FGXedG351デフォルトの名無しさん
2024/09/05(木) 00:27:39.10ID:mpd8c2G1 普段使いって何してんの
エロ画像収集とか?
エロ画像収集とか?
352デフォルトの名無しさん
2024/09/05(木) 04:50:37.33ID:l0HQxOqp PythonやPerlの代わりにテキスト処理に使ってる。
353デフォルトの名無しさん
2024/09/05(木) 18:56:54.85ID:k3Tfomjz >>351
それ面白いと思って書き込んでんの?
それ面白いと思って書き込んでんの?
354デフォルトの名無しさん
2024/09/06(金) 09:50:34.80ID:zzPaKLb6 ブラウザでリンク画像が http://host/hoge.php?hage=fuga.jpg
みたいになってて最終的に jpg が表示されてるんだけど
http://host/hoge.php?hage=fuga.jpg をブラウザで開いても
jpg じゃなくて jpg ファイルのイメージがテキストファイルみたく表示される
こういうのは hoge.php の造りが悪い(たぶんhttpヘッダーが可笑しい)んだろうけど
じゃあなんで元頁では画像が表示されてたのかとか疑問は残る
それはともかく欲しいのは jpg ファイルなので
ブラウザに頼らずダウンローダーを描いた
みたいになってて最終的に jpg が表示されてるんだけど
http://host/hoge.php?hage=fuga.jpg をブラウザで開いても
jpg じゃなくて jpg ファイルのイメージがテキストファイルみたく表示される
こういうのは hoge.php の造りが悪い(たぶんhttpヘッダーが可笑しい)んだろうけど
じゃあなんで元頁では画像が表示されてたのかとか疑問は残る
それはともかく欲しいのは jpg ファイルなので
ブラウザに頼らずダウンローダーを描いた
355デフォルトの名無しさん
2024/09/06(金) 09:52:13.17ID:zzPaKLb6 補足
修正前: jpg ファイルのイメージ
正: jpg ファイルのバイナリデータ
修正前: jpg ファイルのイメージ
正: jpg ファイルのバイナリデータ
356デフォルトの名無しさん
2024/09/07(土) 19:33:25.03ID:9PXNQc4Q 長大な処理となる関数を実行途中にRAM使用量が嵩んでいくとします
中には解放できる部分もある場合について、
このままガベコレせずに進んでいったらいずれOSが『君にはもうRAM貸せないよ』と言ってくるでしょうが、ランタイムシステムは
@その時になってようやく解放できる場所がないか探し出す
@-i 今必要な最低限の確保ができたら即そこに記録して終わり
@-ii 強制的にminorGCを発動して、即そこに記録して終わり
@-iii 強制的にMajorGCを発動して、即そこに記録して終わり
@-iv 強制的にBlockingMajorGCを発動して、即そこに記録して終わり
@-v もはや解放できる場所は見つからないと判断したら例外終了
A何もせず例外終了する
Bその他
どれですか?
中には解放できる部分もある場合について、
このままガベコレせずに進んでいったらいずれOSが『君にはもうRAM貸せないよ』と言ってくるでしょうが、ランタイムシステムは
@その時になってようやく解放できる場所がないか探し出す
@-i 今必要な最低限の確保ができたら即そこに記録して終わり
@-ii 強制的にminorGCを発動して、即そこに記録して終わり
@-iii 強制的にMajorGCを発動して、即そこに記録して終わり
@-iv 強制的にBlockingMajorGCを発動して、即そこに記録して終わり
@-v もはや解放できる場所は見つからないと判断したら例外終了
A何もせず例外終了する
Bその他
どれですか?
357デフォルトの名無しさん
2024/09/07(土) 19:35:13.52ID:9PXNQc4Q 文字化けしちゃいました。文字化けした?は1、2,3だと思ってください
358デフォルトの名無しさん
2024/09/08(日) 00:17:59.58ID:m7MeNrY2 loop s なんちゃらかんちゃら
= do
let final_score = long_thunk_score + s
s' = sをなんちゃらかんちゃら
modify' $ Data.Map.Strict.insert key final_score
unsafePerformIO ( evaluate $ rnf final_score ) `seq` loop s' なんちゃらかんちゃら
このStateモナドは、final_scoreは状態Mapへ挿入される時はWHNFでしょうが、直後の行で完全に評価されています
この事はマップに挿入されたfinal_scoreへ影響を与えますか?
つまりマップへ挿入済みのサンクとしての値を後からUnsafePerformIOとevaluateとrnfを組み合わせて狙ったタイミングでRNF化できますか?
= do
let final_score = long_thunk_score + s
s' = sをなんちゃらかんちゃら
modify' $ Data.Map.Strict.insert key final_score
unsafePerformIO ( evaluate $ rnf final_score ) `seq` loop s' なんちゃらかんちゃら
このStateモナドは、final_scoreは状態Mapへ挿入される時はWHNFでしょうが、直後の行で完全に評価されています
この事はマップに挿入されたfinal_scoreへ影響を与えますか?
つまりマップへ挿入済みのサンクとしての値を後からUnsafePerformIOとevaluateとrnfを組み合わせて狙ったタイミングでRNF化できますか?
359デフォルトの名無しさん
2024/09/09(月) 11:45:42.71ID:CQiqzRbc >>356
黙って動いてるフリをする
黙って動いてるフリをする
360デフォルトの名無しさん
2024/09/26(木) 23:16:42.97ID:eAiUCVhs この言語まだ息してるのか?
361デフォルトの名無しさん
2024/09/27(金) 00:41:23.43ID:ppX7mFe8 おまいらは圏論はちゃんとマスターしたか?
最近圏論のお勉強流行ってないみたいだが
最近圏論のお勉強流行ってないみたいだが
362デフォルトの名無しさん
2024/09/28(土) 08:56:06.97ID:boijaUwp そもそもHaskellに圏論必要ないよ
363デフォルトの名無しさん
2024/09/28(土) 11:20:55.86ID:szplrxFB 背景の理論を理解してないとbrainf*ckと同列のクソパズル言語にしか見えない
364デフォルトの名無しさん
2024/09/28(土) 11:30:45.96ID:D4fCa7Ze 米田の何ちゃらの辺りで心が折れて終了
365デフォルトの名無しさん
2024/09/28(土) 11:48:20.49ID:M6f6jLKS >>363
> brainf*ckと同列のクソパズル言語
話がそれるけどbrainf*ckがパズル言語なのは100%その通りだよ
しかし構文パーサー、インタープリターやトランスレーター、JITエンジンの実践入門として
丁度良いからこれだけ根強い人気なんだぜ
> brainf*ckと同列のクソパズル言語
話がそれるけどbrainf*ckがパズル言語なのは100%その通りだよ
しかし構文パーサー、インタープリターやトランスレーター、JITエンジンの実践入門として
丁度良いからこれだけ根強い人気なんだぜ
366デフォルトの名無しさん
2024/09/28(土) 20:40:40.54ID:SDDTPU1M >>361
流行ってないのか…。
個人的にはHaskellよりも圏論の方に関心が移ってるのに…。
んでも、圏論はHaskellでなくても、全てのプログラミング言語の裏側でも動いてるし、それこそ算数の裏側でも動いてる。
モナドが表に出てきてるからHaskellには圏論が必要って思うかもだけど、モナドって言わないで do形式だけ教えて知れっとしてても良いし、「こういう動きの演算子」としてモナドを紹介するだけでも良い。
受験数学とちゃんと向き合う数学みたいなものだけど、変にモナドを理解しようとすると深みにはまる。
(それはそれで楽しいけど、楽しめる人だけだよね…)
流行ってないのか…。
個人的にはHaskellよりも圏論の方に関心が移ってるのに…。
んでも、圏論はHaskellでなくても、全てのプログラミング言語の裏側でも動いてるし、それこそ算数の裏側でも動いてる。
モナドが表に出てきてるからHaskellには圏論が必要って思うかもだけど、モナドって言わないで do形式だけ教えて知れっとしてても良いし、「こういう動きの演算子」としてモナドを紹介するだけでも良い。
受験数学とちゃんと向き合う数学みたいなものだけど、変にモナドを理解しようとすると深みにはまる。
(それはそれで楽しいけど、楽しめる人だけだよね…)
367デフォルトの名無しさん
2024/09/29(日) 07:33:19.55ID:bBvJfaeS ラムダと束縛変数をマスターしなければdo記法もマスターできないのを
すっかり忘れるぐらいポイントフリーが普及してるでしょ
すっかり忘れるぐらいポイントフリーが普及してるでしょ
368デフォルトの名無しさん
2024/09/29(日) 08:45:10.72ID:3/NLN/+f コーダーが数学の学習に使える時間なんて限られている
時間や基礎知識が足らないので、難解な数学を攻略するのはほぼ不可能
大学生時CSや数学の講義で身に付けておくしかない
時間や基礎知識が足らないので、難解な数学を攻略するのはほぼ不可能
大学生時CSや数学の講義で身に付けておくしかない
369デフォルトの名無しさん
2024/09/29(日) 09:32:49.44ID:twIz68VA 難解な数学を攻略できるなら
日本ではコーダーにはならないよな
日本ではコーダーにはならないよな
370デフォルトの名無しさん
2024/09/29(日) 10:15:01.09ID:AteoOTMZ 業界入るのに難解数学不要
プログラミングにも不要
数学分からんのでgoogle入るのは無理だけど
プログラミングにも不要
数学分からんのでgoogle入るのは無理だけど
371デフォルトの名無しさん
2024/09/29(日) 11:01:25.51ID:bBvJfaeS 人工的なルールに依存するのがクソパズルだが
自然界でなおかつ野生のマウンティング的なルールにも依存しないことが数学の目的のひとつだね
自然界でなおかつ野生のマウンティング的なルールにも依存しないことが数学の目的のひとつだね
372デフォルトの名無しさん
2024/09/29(日) 20:36:16.00ID:JU2vTa1F 圏論が全てのプログラミング言語の裏で動いてるとか適当なこと書くなよ
373デフォルトの名無しさん
2024/09/30(月) 00:30:17.34ID:Kh4w53R0 >>368
高卒の自分でも理解できるんだから、難しいわけではないんだけど。
何度も出てる通り、必ずしもモナドを理解する必要はないし。
そもそも自分がプログラマーの頃だって、12-13時間働いた後も新しいプログラミング言語や数学勉強してたぞ。
(新しい仕事のために学びたくない言語に時間使う事も)
高卒が圏論みたいな大学数学学ぶには専門用語がそもそも分らんから、用語が分かるまで遡った。
(アーベル圏のアーベルが分からないレベルからのスタート)
自分に投資できないと淘汰されるぞ。
高卒の自分でも理解できるんだから、難しいわけではないんだけど。
何度も出てる通り、必ずしもモナドを理解する必要はないし。
そもそも自分がプログラマーの頃だって、12-13時間働いた後も新しいプログラミング言語や数学勉強してたぞ。
(新しい仕事のために学びたくない言語に時間使う事も)
高卒が圏論みたいな大学数学学ぶには専門用語がそもそも分らんから、用語が分かるまで遡った。
(アーベル圏のアーベルが分からないレベルからのスタート)
自分に投資できないと淘汰されるぞ。
374デフォルトの名無しさん
2024/09/30(月) 00:59:39.85ID:Kh4w53R0 >>372
適当じゃない。
モナドは(主に)逐次処理に現れる構造なので、Haskellのような遅延評価で逐次処理自体を作らないといけない(逐次処理をエミュレートするためのモナド)言語でない限り、意識することすらない。
(だからC言語で言う i = 0; の「;」とか言われる)
適当じゃない。
モナドは(主に)逐次処理に現れる構造なので、Haskellのような遅延評価で逐次処理自体を作らないといけない(逐次処理をエミュレートするためのモナド)言語でない限り、意識することすらない。
(だからC言語で言う i = 0; の「;」とか言われる)
375デフォルトの名無しさん
2024/09/30(月) 03:08:44.15ID:g+sPZSfB376デフォルトの名無しさん
2024/09/30(月) 12:40:29.07ID:+8KmLjt4 圏論の極々一部のモナドを主語をデカくして圏論ガーとか言ってる人は何も分かってないんだなと思うけどね
俺みたいに数学かじってた人からすると
圏論を勉強すると「あ、この概念はこの分野のこれのことか」ってわかるけど
そうじゃない人は何のことを言ってるのかわからんと思う
専門家でも自分の担当外の圏なんて知らないのに
圏論という括りで語ろうとする人はそういうのすら理解してない
俺みたいに数学かじってた人からすると
圏論を勉強すると「あ、この概念はこの分野のこれのことか」ってわかるけど
そうじゃない人は何のことを言ってるのかわからんと思う
専門家でも自分の担当外の圏なんて知らないのに
圏論という括りで語ろうとする人はそういうのすら理解してない
377デフォルトの名無しさん
2024/09/30(月) 13:52:28.73ID:CD9F70e/ やっと普通の人が出てきて安心した
378デフォルトの名無しさん
2024/09/30(月) 13:59:18.70ID:pkON+G7q >>376
数学者向けの圏論の教科書の応用、具体例は全て数学。
数学知らない人が読んでも分かるわけがない。
応用、具体例、演習をCSの分野から採った教科書が望まれるが、書くのが難しい上に面白くするのも困難。
大体CSすらちゃんと修めてないエンジニアはやはり読めない。
CS自体ベースに位相、代数、グラフ理論と数学使うし。
数学者向けの圏論の教科書の応用、具体例は全て数学。
数学知らない人が読んでも分かるわけがない。
応用、具体例、演習をCSの分野から採った教科書が望まれるが、書くのが難しい上に面白くするのも困難。
大体CSすらちゃんと修めてないエンジニアはやはり読めない。
CS自体ベースに位相、代数、グラフ理論と数学使うし。
379デフォルトの名無しさん
2024/09/30(月) 14:09:03.81ID:rwCIuc1C 趣味でやる人に良くいるんだよね。
応用各分野に囚われずに、圏論そのものを学習したい、一般圏論を研究したいって人。
これは数学で言うと、集合論と同じく数学基礎論の分野。
応用各分野に囚われずに、圏論そのものを学習したい、一般圏論を研究したいって人。
これは数学で言うと、集合論と同じく数学基礎論の分野。
380デフォルトの名無しさん
2024/09/30(月) 19:05:45.94ID:8C0MP56i 操作的意味論とか表示的意味論でプログラムを数学の話にして、その数学を圏論で整理するって話
だからアーベル圏とか具体的な圏はあんま出てこない。
やるとすれば
デカルト閉圏:ランベックがλ計算のモデルになると発見して関数型プログラミング的に重要
クライスリ圏:Moggiが計算効果をカプセル化したときの根拠の圏
ローベア理論:代数的効果をちゃんと理解するときは必要らしい。操作的意味論と表示的意味論と同じようにモナドの理論と妥当性が成り立つようだ。
ぐらいじゃね。
だからアーベル圏とか具体的な圏はあんま出てこない。
やるとすれば
デカルト閉圏:ランベックがλ計算のモデルになると発見して関数型プログラミング的に重要
クライスリ圏:Moggiが計算効果をカプセル化したときの根拠の圏
ローベア理論:代数的効果をちゃんと理解するときは必要らしい。操作的意味論と表示的意味論と同じようにモナドの理論と妥当性が成り立つようだ。
ぐらいじゃね。
381デフォルトの名無しさん
2024/09/30(月) 21:09:21.28ID:CVtPTYpb じゃあラムダ計算(のモデル)だけを考えよう
タプルや代数的データ型は使わない
それでもモナドの具体例を作れるのを知ってるのが専門バカ
知らないのが一般国民だ
タプルや代数的データ型は使わない
それでもモナドの具体例を作れるのを知ってるのが専門バカ
知らないのが一般国民だ
382デフォルトの名無しさん
2024/09/30(月) 21:29:13.05ID:8C0MP56i 一般国民。
λ計算のモデルでモナド作ってなにかいいことあるの?計算効果結局表現できないんじゃ?
拡張してcomputational lambda calculusやるって話?
λ計算のモデルでモナド作ってなにかいいことあるの?計算効果結局表現できないんじゃ?
拡張してcomputational lambda calculusやるって話?
383デフォルトの名無しさん
2024/09/30(月) 21:47:09.45ID:CVtPTYpb ないんじゃないか
ただ「具体例を出せば、いいことがある」とは誰も言ってない
というファクトをチェックするのは悪いことではない
ただ「具体例を出せば、いいことがある」とは誰も言ってない
というファクトをチェックするのは悪いことではない
384デフォルトの名無しさん
2024/09/30(月) 21:53:56.34ID:8C0MP56i いいこと(メリット)があるから具体例が作られると思うんだが。
それは単に具体例の適用が間違ってるって話じゃね?
なんとなく作れるから群構造作ってみましたとかとか目的不在で作ったらそら何がいいかわからんし。
モナドだったら、各計算効果を圏(クライスリ圏)の中に閉じ込めることに成功しました(カプセル化)。
計算効果は強モナドの構造を取っているようです(計算効果の研究のとっかかり)。
みたいないいことあるから流行るんでしょ。
それは単に具体例の適用が間違ってるって話じゃね?
なんとなく作れるから群構造作ってみましたとかとか目的不在で作ったらそら何がいいかわからんし。
モナドだったら、各計算効果を圏(クライスリ圏)の中に閉じ込めることに成功しました(カプセル化)。
計算効果は強モナドの構造を取っているようです(計算効果の研究のとっかかり)。
みたいないいことあるから流行るんでしょ。
385デフォルトの名無しさん
2024/10/01(火) 04:04:03.18ID:PZ96E01/ 別にそれ圏論を持ち出す必要ないよね
ハイおしまい
ハイおしまい
386デフォルトの名無しさん
2024/10/01(火) 09:39:15.78ID:KbL1rq/V >なんとなく作れるから群構造作ってみました
ルービックキューブのことか
ルービックキューブのことか
387デフォルトの名無しさん
2024/10/01(火) 09:46:07.52ID:y60InQ2q 数学屋さんもね
研究では圏を使うが
学生に教えるときは
圏を記述に使わず教えたりする
研究では圏を使うが
学生に教えるときは
圏を記述に使わず教えたりする
388デフォルトの名無しさん
2024/10/01(火) 19:23:20.12ID:7kn4RxVI 圏論の話題になったから振ったのに。まあいいよ。
圏論根拠で(ソフトウェア工学的にじゃなくて)数学的にカプセル化が実現されてるってすごい
ことだと思うけどね。
>ルービックキューブのことか
ルービックキューブ解くという目的あるんなら構築する意味あるんじゃない。
圏論根拠で(ソフトウェア工学的にじゃなくて)数学的にカプセル化が実現されてるってすごい
ことだと思うけどね。
>ルービックキューブのことか
ルービックキューブ解くという目的あるんなら構築する意味あるんじゃない。
389デフォルトの名無しさん
2024/10/01(火) 19:34:54.43ID:YZm15ve9 群持ち出したところで解けないよ
390デフォルトの名無しさん
2024/10/01(火) 20:18:43.32ID:PZ96E01/ 圏論がプログラミングの問題解決に寄与するわけないのにね
ただ当てはめてみたってだけのことを過大評価しすぎ
ただ当てはめてみたってだけのことを過大評価しすぎ
391デフォルトの名無しさん
2024/10/01(火) 20:52:10.03ID:u1x9FxNe 雪田修一の「圏論入門 Haskellで計算する 具体例から」ってどうなん?
392デフォルトの名無しさん
2024/10/01(火) 21:10:04.55ID:YpLGkLDy 板チ
目的と手段を混同したら予選敗退
目的と手段を混同したら予選敗退
393デフォルトの名無しさん
2024/10/01(火) 21:16:26.45ID:7kn4RxVI どうなんって何を知るのに?出たときに立ち読みしただけだけど。
394デフォルトの名無しさん
2024/10/01(火) 21:16:56.98ID:Ig6Tf0ue395デフォルトの名無しさん
2024/10/01(火) 21:38:18.13ID:Ig6Tf0ue 圏論をやりたいならまず代数学をやるべき
それだけでだいぶ見通しが違う
それだけでだいぶ見通しが違う
396デフォルトの名無しさん
2024/10/01(火) 21:42:08.00ID:4kH314XL >>390
モナドの効用で自分の把握してるのは
・数学やHaskellの様な遅延評価の場合、逐次処理を表現できる
(これは変数を使いまわさない場合は、関数合成で十分だが、変数を使いまわすときはモナドじゃないと使いまわせない)
・副作用のある関数を使っても参照透明性は保たれている
・モナドは入れ物前提の概念なので、空の状態を使って例外処理をまとめることができる
正直、普通のプログラミング言語にも役立ちそうな3つ目は実感はしてないけど、ネットで例外処理よりモナドの方が優秀っぽい記事を読んだ
2番目もマルチスレッドとか最適化には役に立ちそうではある
(マルチスレッドなら正格評価版HaskellのIdris2やRustだと思うが)
モナドの効用で自分の把握してるのは
・数学やHaskellの様な遅延評価の場合、逐次処理を表現できる
(これは変数を使いまわさない場合は、関数合成で十分だが、変数を使いまわすときはモナドじゃないと使いまわせない)
・副作用のある関数を使っても参照透明性は保たれている
・モナドは入れ物前提の概念なので、空の状態を使って例外処理をまとめることができる
正直、普通のプログラミング言語にも役立ちそうな3つ目は実感はしてないけど、ネットで例外処理よりモナドの方が優秀っぽい記事を読んだ
2番目もマルチスレッドとか最適化には役に立ちそうではある
(マルチスレッドなら正格評価版HaskellのIdris2やRustだと思うが)
397デフォルトの名無しさん
2024/10/01(火) 22:05:17.67ID:4kH314XL 圏論全体だと…当たり前のことを構造として研究してるだけなので、圏論というよりはHaskellの型クラスとの合わせ技で関手(Functor)の方がfmap的なのを他の言語にも導入すれば役に立つかも
圏論の関手を一言で言えば(関数も含めた)型変換
(Hakellだと入れ物前提にすることで、関数ごと型変換を実現。本来はもっと柔軟)
自然変換は一言で言えば単位変換とか、大文字小文字の変換
圏論の関手を一言で言えば(関数も含めた)型変換
(Hakellだと入れ物前提にすることで、関数ごと型変換を実現。本来はもっと柔軟)
自然変換は一言で言えば単位変換とか、大文字小文字の変換
398デフォルトの名無しさん
2024/10/01(火) 22:16:21.15ID:4kH314XL モノイドは条件が結合法則だけなので、ほぼ結合法則そのものがモノイド
(その割には繰り返しとか数え上げに現れる構造)
そしてモナドも構造はそっくりなので、入れ物前提のモノイドとも考えられる
(モナドの再帰はループ処理でスタックを消費しないし、数え上げは逐次処理と考えられる)
(その割には繰り返しとか数え上げに現れる構造)
そしてモナドも構造はそっくりなので、入れ物前提のモノイドとも考えられる
(モナドの再帰はループ処理でスタックを消費しないし、数え上げは逐次処理と考えられる)
399デフォルトの名無しさん
2024/10/01(火) 23:08:20.75ID:KbL1rq/V バグを無くすこと自体が目的になりがちなのが数学とプログラムなんだよね
真の目的のため、デバッグを二の次にするやつが正しいと言われても・・・
それって証明とかあるんですか
真の目的のため、デバッグを二の次にするやつが正しいと言われても・・・
それって証明とかあるんですか
400デフォルトの名無しさん
2024/10/01(火) 23:21:35.19ID:syLuNokt401デフォルトの名無しさん
2024/10/01(火) 23:25:15.70ID:syLuNokt402デフォルトの名無しさん
2024/10/02(水) 05:35:22.65ID:OAhBXB+m やっぱり数学的に表現してみただけってことか
まぁ実際のプログラミングに利益はないわな
まぁ実際のプログラミングに利益はないわな
403デフォルトの名無しさん
2024/10/02(水) 07:50:08.23ID:AFS53MaU >>400
よくよく考えたら特別な事じゃないんだけど、普通のプログラミング言語でも大文字・小文字の変換関数を自作するってなったら、文字をInt型に変換して処理する。
それって文字の圏で直接大文字小文字の変換するを作れない場合、一旦整数の圏を経由する関数を作る。
A(a) → B(a)
↓ ↓
A(A) → B(A)
可換図のA(a) → B(a)の逆射が作れれば、B(a) → B(A)が作れる。
ほら、分かってみれば「なーんだ。そんなことか」でしょ?
よくよく考えたら特別な事じゃないんだけど、普通のプログラミング言語でも大文字・小文字の変換関数を自作するってなったら、文字をInt型に変換して処理する。
それって文字の圏で直接大文字小文字の変換するを作れない場合、一旦整数の圏を経由する関数を作る。
A(a) → B(a)
↓ ↓
A(A) → B(A)
可換図のA(a) → B(a)の逆射が作れれば、B(a) → B(A)が作れる。
ほら、分かってみれば「なーんだ。そんなことか」でしょ?
404デフォルトの名無しさん
2024/10/02(水) 07:53:32.91ID:AFS53MaU この場合、整数同士の足し算に対応する、文字同士の足し算が作れる。
(ただし、整数と文字列で集合の大きさを合わせる必要がある。0-25とか1-26とかで循環する集合)
(ただし、整数と文字列で集合の大きさを合わせる必要がある。0-25とか1-26とかで循環する集合)
405デフォルトの名無しさん
2024/10/02(水) 07:55:35.67ID:AFS53MaU んで、プログラマーはいちいち集合を合わせないで、エラー処理だったり循環リスト作ったりで対応するわけだぬ。
406デフォルトの名無しさん
2024/10/02(水) 08:30:24.33ID:VSz9kg2E 数学の圏論テキストではカリー化の操作は良く使うが、カリー化の名前を付けて引用することはまず無いね。
レスを投稿する
ニュース
- 万博粗探しもうやめよう お祭り始まれば盛り上がる [パンナ・コッタ★]
- トランプ氏、赤沢大臣に改善「3本柱」要求 在日米軍の駐留経費など ★2 [蚤の市★]
- 経済対策に向けた調整 首相周辺からは「何をやっても評価されないならやらない方がいい」という声も… [パンナ・コッタ★]
- 【巨人】田中将大2回7安打6失点の大炎上 [鉄チーズ烏★]
- ひろゆき氏 目的なきダイエットに疑問 「目的を見誤っている」「男性って別にやせている人は別に好きじゃない」とバッサリ [冬月記者★]
- 木下博勝氏、石橋貴明セクハラ報道に私見「バブル時代のことを言われたら、ほとんどのタレントがアウトじゃないですか?」 ★3 [jinjin★]
- 本当はお前らもボイチャで会話したいんだろ?
- 大阪市長、万博13兆円デマにキレる [834922174]
- コメ5kg 、6400円!!!終わりだよこの国。なお備蓄米(3400.円)が入荷するのはJAグループの「Aコープ」か超大手チェーンのみの模様 [597533159]
- 橋下徹「万博は無駄や!中止せよ!と言ってた連中、どないや? 特に元明石市長泉房穂氏。 先見の明が全くない。」 [834922174]
- 【悲報】ガンダムGQuuux、さすがに話題にならなさすぎる [333919576]
- ほっともっと来たんだがワンオペでワロタ