関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part31
https://mevius.5ch.net/test/read.cgi/tech/1506447188/
関数型プログラミング言語Haskell Part32
■ このスレッドは過去ログ倉庫に格納されています
2019/01/29(火) 09:05:47.90ID:gJP/u7IJ
610デフォルトの名無しさん
2019/10/23(水) 02:29:17.74ID:yKBkbeD2611デフォルトの名無しさん
2019/10/23(水) 03:34:04.69ID:yprcaBdP では何らかの制限がないと取り扱いが難しいよね
例えば英語と日本語の翻訳で使われる意味を咀嚼変換するロジックを圏論だと言われたら
なんか凄く難しそうだなとか
例えば英語と日本語の翻訳で使われる意味を咀嚼変換するロジックを圏論だと言われたら
なんか凄く難しそうだなとか
612デフォルトの名無しさん
2019/10/23(水) 07:48:02.01ID:w9X9/NZW 別に集合論だって写像の集合を考えればいいわけでそんなのは圏論を持ち出さなくても十分
重要なのは圏論は写像の合成(関数合成)を抽象化して扱う理論だということで
だからこそa -> IO bを射とする圏を作れればそこでの射の合成方法は普通の関数合成と同じように扱える
で実際にIOはクライスリトリプル(Monadのインスタンス)を定義できるからa -> IO bを射とするクライスリ圏が定義できる
重要なのは圏論は写像の合成(関数合成)を抽象化して扱う理論だということで
だからこそa -> IO bを射とする圏を作れればそこでの射の合成方法は普通の関数合成と同じように扱える
で実際にIOはクライスリトリプル(Monadのインスタンス)を定義できるからa -> IO bを射とするクライスリ圏が定義できる
613デフォルトの名無しさん
2019/10/23(水) 15:46:04.24ID:QE7mhz5K 質問です。
当方数学科卒で学生時代圏論は死ぬほど使ってました。
しかしアーベル圏という純数学的なお話知ってるだけで、計算論に応用する話は全く勉強した事ない状態です。
そういう人間が圏論の計算論への応用を勉強したいときオススメの教科書、参考書は何かご存知ですか?
抽象圏論や数学基礎論も少しかじった事があるのでその手の話が出てきてもあまり困る事はないと思ってます。
当方数学科卒で学生時代圏論は死ぬほど使ってました。
しかしアーベル圏という純数学的なお話知ってるだけで、計算論に応用する話は全く勉強した事ない状態です。
そういう人間が圏論の計算論への応用を勉強したいときオススメの教科書、参考書は何かご存知ですか?
抽象圏論や数学基礎論も少しかじった事があるのでその手の話が出てきてもあまり困る事はないと思ってます。
614デフォルトの名無しさん
2019/10/23(水) 18:37:44.76ID:EHUlBTzl そこまで圏論に詳しいなら逆に世の中の有象無象の情報処理の実態を
見て新しい提案ができるんじゃないかと思うけどどう?
見て新しい提案ができるんじゃないかと思うけどどう?
615デフォルトの名無しさん
2019/10/23(水) 18:48:53.05ID:FecPQc4e 型推論とモナドがわかったら解散でいいじゃん
だらだら続けるとサンクコストが増える
だらだら続けるとサンクコストが増える
616デフォルトの名無しさん
2019/10/23(水) 20:01:33.78ID:r6mLYpNF 浮動小数演算みたいなある種のモナド則が成り立たんものを考えると、
逆にモナド則のありがたさがわかる。
そんな程度で十分だよ。
逆にモナド則のありがたさがわかる。
そんな程度で十分だよ。
617デフォルトの名無しさん
2019/10/23(水) 22:29:52.97ID:0mQ7NQWB どちらかと言えば、モノイドの方が役に立つ
618デフォルトの名無しさん
2019/10/23(水) 22:51:28.42ID:MhItXVwr 浮動小数点のモナド?
モナド則の結合律っぽい奴は普通の関数で言うなら
f (g x) == (f . g y) x を要請してるのであって
f,gの計算には依存しないから浮動小数点が破壊することはないよ
モナド則の結合律っぽい奴は普通の関数で言うなら
f (g x) == (f . g y) x を要請してるのであって
f,gの計算には依存しないから浮動小数点が破壊することはないよ
619デフォルトの名無しさん
2019/10/23(水) 22:55:47.94ID:MhItXVwr ミス f (g x) == (f . g) x だった
620デフォルトの名無しさん
2019/10/24(木) 01:14:02.96ID:iVnwkALy f x = x / 0.3
g x = x * 0.3
g x = x * 0.3
621デフォルトの名無しさん
2019/10/24(木) 01:19:57.43ID:iVnwkALy ghci でやってみたら循環小数にならなかった。macOSの電卓でも。
へぇ〜。
へぇ〜。
622デフォルトの名無しさん
2019/10/24(木) 01:57:21.20ID:/X6zPP1d >>613
> そういう人間が圏論の計算論への応用を勉強したいときオススメの教科書、参考書は何かご存知ですか?
> 抽象圏論や数学基礎論も少しかじった事があるのでその手の話が出てきてもあまり困る事はないと思ってます。
理論計算機科学(以下、TCSと略)への圏論の応用を勉強したいのならば、最もベーシックなテキストとしては
1. Andrea Asperti & Giuseppe Longo: Categories, Types, and Structures, 306+xii pp., MIT Press (1991)
型理論として単純型付きλ計算と2階の型付きλ計算それぞれに対する圏論的意味論を議論している他、
型無しλ計算の意味論を展開する上で不可欠な再帰的領域方程式とその解に対する圏論的な見方も解説している。
更にHaskellなどで喧しいモナドやKreisel圏についても解説している。(関数プログラミング言語へのモナドの応用は
本書の著者の1人であるLongoの論文から全てが始まった)
この本の最大の欠点は誤植がとても多いことと昔のMacで書かれていてテキスト中の数式も図も美しくないことだ。
なお、現在は書籍としては品切れになっていたと思うが、著者のHPから電子的に無料で入手可能になっていたはずなのでネットで探して下さい。
2. Roy L. Crole: Categories for Types, 335+xvii pp., Cambridge University Press (1993)
様々な型理論(型理論は(関数)プログラミング言語とその型システムを形式的体系としたものと考えて良い)に対する圏論的意味論を議論している。
3. 横内寛文:プログラム意味論,261+vi pp.,共立出版 (1994)
久しく品切れになっていたが少し前に増刷されたので現在はジュンク堂などの大型書店などの店頭で買えるはず。
表示的意味論、型無し・型付きλ計算、領域理論、関数型言語の意味論について1つずつ章を設けて解説した後、この本で必要とする圏論の解説がされ、
プログラミング言語の表示的意味論で必須の再帰的領域方程式とその解法に対する圏論からのアプローチと
λ計算の意味論としてλモデル・λ代数・圏論的モデルとしてのCCC(デカルト閉圏あるいは積閉包圏)について解説している。
この他にもTCSへの圏論の応用としてはオートマトン理論への応用や代数的仕様記述言語の意味論への圏論の応用
(こちらの意味論ではデカルト閉圏は使われない)などがある。
> そういう人間が圏論の計算論への応用を勉強したいときオススメの教科書、参考書は何かご存知ですか?
> 抽象圏論や数学基礎論も少しかじった事があるのでその手の話が出てきてもあまり困る事はないと思ってます。
理論計算機科学(以下、TCSと略)への圏論の応用を勉強したいのならば、最もベーシックなテキストとしては
1. Andrea Asperti & Giuseppe Longo: Categories, Types, and Structures, 306+xii pp., MIT Press (1991)
型理論として単純型付きλ計算と2階の型付きλ計算それぞれに対する圏論的意味論を議論している他、
型無しλ計算の意味論を展開する上で不可欠な再帰的領域方程式とその解に対する圏論的な見方も解説している。
更にHaskellなどで喧しいモナドやKreisel圏についても解説している。(関数プログラミング言語へのモナドの応用は
本書の著者の1人であるLongoの論文から全てが始まった)
この本の最大の欠点は誤植がとても多いことと昔のMacで書かれていてテキスト中の数式も図も美しくないことだ。
なお、現在は書籍としては品切れになっていたと思うが、著者のHPから電子的に無料で入手可能になっていたはずなのでネットで探して下さい。
2. Roy L. Crole: Categories for Types, 335+xvii pp., Cambridge University Press (1993)
様々な型理論(型理論は(関数)プログラミング言語とその型システムを形式的体系としたものと考えて良い)に対する圏論的意味論を議論している。
3. 横内寛文:プログラム意味論,261+vi pp.,共立出版 (1994)
久しく品切れになっていたが少し前に増刷されたので現在はジュンク堂などの大型書店などの店頭で買えるはず。
表示的意味論、型無し・型付きλ計算、領域理論、関数型言語の意味論について1つずつ章を設けて解説した後、この本で必要とする圏論の解説がされ、
プログラミング言語の表示的意味論で必須の再帰的領域方程式とその解法に対する圏論からのアプローチと
λ計算の意味論としてλモデル・λ代数・圏論的モデルとしてのCCC(デカルト閉圏あるいは積閉包圏)について解説している。
この他にもTCSへの圏論の応用としてはオートマトン理論への応用や代数的仕様記述言語の意味論への圏論の応用
(こちらの意味論ではデカルト閉圏は使われない)などがある。
623デフォルトの名無しさん
2019/10/24(木) 02:41:27.79ID:/X6zPP1d >>622訂正と補足
まず1に関する説明中の次の箇所を訂正します。つい筆が滑ってKleisliをKreiselと書いてしまった。
誤> 更にHaskellなどで喧しいモナドやKreisel圏についても解説している。(関数プログラミング言語へのモナドの応用は
正> 更にHaskellなどで喧しいモナドやKleisli圏についても解説している。(関数プログラミング言語へのモナドの応用は
それから、
> なお、現在は書籍としては品切れになっていたと思うが、著者のHPから電子的に無料で入手可能になっていたはずなのでネットで探して下さい。
と書いたが、無料の電子版は著者の一人であるLongoの次のURLよりPDFファイルの形で配布されている。
https://www.di.ens.fr/users/longo/files/CategTypesStructures/book.pdf
まず1に関する説明中の次の箇所を訂正します。つい筆が滑ってKleisliをKreiselと書いてしまった。
誤> 更にHaskellなどで喧しいモナドやKreisel圏についても解説している。(関数プログラミング言語へのモナドの応用は
正> 更にHaskellなどで喧しいモナドやKleisli圏についても解説している。(関数プログラミング言語へのモナドの応用は
それから、
> なお、現在は書籍としては品切れになっていたと思うが、著者のHPから電子的に無料で入手可能になっていたはずなのでネットで探して下さい。
と書いたが、無料の電子版は著者の一人であるLongoの次のURLよりPDFファイルの形で配布されている。
https://www.di.ens.fr/users/longo/files/CategTypesStructures/book.pdf
624デフォルトの名無しさん
2019/10/24(木) 09:09:56.34ID:M5uvwdA8625デフォルトの名無しさん
2019/10/24(木) 19:35:38.99ID:iMDLzbYl626デフォルトの名無しさん
2019/10/24(木) 19:42:56.62ID:M5uvwdA8 いやモナド則で語ることなんて結合律以外ないだろ。。
結合律を無条件で仮定できる状況がどれほど負担を減らすかって話なんだが
ここまでバカな絡まれ方するとは思わなかった。
結合律を無条件で仮定できる状況がどれほど負担を減らすかって話なんだが
ここまでバカな絡まれ方するとは思わなかった。
627デフォルトの名無しさん
2019/10/24(木) 19:50:34.49ID:iMDLzbYl ああ、printFile file == readFile file >>= putStrLn だった
しかもそれも誤解しか生まない表現で
要はreadFile file >>= putStrLnをprintFileで置き換えても問題ないってことを言いたかったんだけど
いやほんと5ch向いてないね
しかもそれも誤解しか生まない表現で
要はreadFile file >>= putStrLnをprintFileで置き換えても問題ないってことを言いたかったんだけど
いやほんと5ch向いてないね
628デフォルトの名無しさん
2019/10/24(木) 20:08:28.59ID:3BngmFUW >>627
なんか、あんたは気持ち悪いね
なんか、あんたは気持ち悪いね
629デフォルトの名無しさん
2019/10/24(木) 20:16:05.76ID:iMDLzbYl630デフォルトの名無しさん
2019/10/24(木) 20:22:28.52ID:y9mzZKfZ 単位元を語ってもええんやで
631デフォルトの名無しさん
2019/10/25(金) 04:29:07.52ID:2bZjXkn1 >>629
前提として「足し算の結合律って便利だね」
じゃ足りないの
何が不足なのかな
副作用をモナドの結合連鎖外に及ぼさない事による恩恵が主目的じゃないの?
とくにマルチスレッドコア環境だと色々有難いよね
モナド連鎖の組み合わせとか組み替えとかがスカッとできてイイ!とか
連鎖の中で起きたエラーのリカバリーとかはよくわからん
前提として「足し算の結合律って便利だね」
じゃ足りないの
何が不足なのかな
副作用をモナドの結合連鎖外に及ぼさない事による恩恵が主目的じゃないの?
とくにマルチスレッドコア環境だと色々有難いよね
モナド連鎖の組み合わせとか組み替えとかがスカッとできてイイ!とか
連鎖の中で起きたエラーのリカバリーとかはよくわからん
632デフォルトの名無しさん
2019/10/25(金) 08:07:43.53ID:39WP6mHi >>631
モナドが実際の所どれぐらい便利なのかは分からないけど
(m >>= f) >>= g == m >>= (\x -> f x >>= g)
が言ってることは単純なんだよ
>>=が普通の関数呼び出しのように使えるというだけ
$(普通の関数呼び出しを演算子化したもの)の場合を考えれば分かりやすいかな
g $ (f $ x) == (\y -> g $ (f $ y)) $ x
関数と値の引数が$と>>=では逆だから両辺が逆向きになってるけど
要するに二つの関数を一つの関数まとめても構わないという
誰もが当たり前にやってることの理論的基盤を>>=にも要請してるというだけなんだよ
だから getLine >>= printFile と getLine >>= readFile >>= putStrLn
が同じだと言うためにはこの結合律を満たさなきゃならない
ちなみに二個以上の関数をまとめ上げる場合や多引数の場合もこれで証明できる
モナドが実際の所どれぐらい便利なのかは分からないけど
(m >>= f) >>= g == m >>= (\x -> f x >>= g)
が言ってることは単純なんだよ
>>=が普通の関数呼び出しのように使えるというだけ
$(普通の関数呼び出しを演算子化したもの)の場合を考えれば分かりやすいかな
g $ (f $ x) == (\y -> g $ (f $ y)) $ x
関数と値の引数が$と>>=では逆だから両辺が逆向きになってるけど
要するに二つの関数を一つの関数まとめても構わないという
誰もが当たり前にやってることの理論的基盤を>>=にも要請してるというだけなんだよ
だから getLine >>= printFile と getLine >>= readFile >>= putStrLn
が同じだと言うためにはこの結合律を満たさなきゃならない
ちなみに二個以上の関数をまとめ上げる場合や多引数の場合もこれで証明できる
633デフォルトの名無しさん
2019/10/25(金) 08:33:13.53ID:2bZjXkn1 >>632
モナドの条件が成立すると色々便利な事は認識している
端緒の認識はそれで問題ないと思ったけど
便利だよねって見解が
>こんな糞みたいな主張をする人間が世の中にいることぐらいは分かっておくべきだった
って言われて、え?え?何かマズイ理解なり認識があるのか??
何がマズいのかワカラン??って感想
単純に罵倒してマウント取りたかっただけなら問題ない
モナドの条件が成立すると色々便利な事は認識している
端緒の認識はそれで問題ないと思ったけど
便利だよねって見解が
>こんな糞みたいな主張をする人間が世の中にいることぐらいは分かっておくべきだった
って言われて、え?え?何かマズイ理解なり認識があるのか??
何がマズいのかワカラン??って感想
単純に罵倒してマウント取りたかっただけなら問題ない
634デフォルトの名無しさん
2019/10/25(金) 09:19:09.32ID:dpM8h0bh >>624見たとき何言ってんだコイツと思ったが案の定ボコされてて安心した
論理的な思考ができない人間って怖いわ
論理的な思考ができない人間って怖いわ
635デフォルトの名無しさん
2019/10/25(金) 11:27:36.73ID:2bZjXkn1636デフォルトの名無しさん
2019/10/25(金) 18:07:06.47ID:mPFGj3TJ637デフォルトの名無しさん
2019/10/25(金) 18:15:13.95ID:lPbrkHzC >>633
三段論法的なのが糞だって言ってるだけでその部分は別に間違ってないよ
まあマウンティングするつもりはないんだが
曖昧なこと言っといてそれについて意見したら「バカに絡まれた」なんて
そりゃ感情的にもなるよ確かに大人げないけどさ
三段論法的なのが糞だって言ってるだけでその部分は別に間違ってないよ
まあマウンティングするつもりはないんだが
曖昧なこと言っといてそれについて意見したら「バカに絡まれた」なんて
そりゃ感情的にもなるよ確かに大人げないけどさ
638デフォルトの名無しさん
2019/10/25(金) 18:32:47.40ID:lPbrkHzC639デフォルトの名無しさん
2019/10/25(金) 19:57:54.15ID:jaw68O5t まあかなり意地の悪い例を出したつもりではあったけどね。
「論理的思考」とか言い出す輩が引っかかりそうな例を。
「論理的思考」とか言い出す輩が引っかかりそうな例を。
640デフォルトの名無しさん
2019/10/25(金) 20:50:12.32ID:8KDPUxpr どうでもいいけど「論理的アルゴリズム」だったら簡単にコピーできそう
アルゴリズムとパラダイムの違いの一つは、コピーする自由
アルゴリズムとパラダイムの違いの一つは、コピーする自由
641デフォルトの名無しさん
2019/10/26(土) 00:21:14.14ID:ud4Mu1os モナドの話してる中で一人結合則全般についての話始めて浮動小数点数に関する当たり前の説明せっせとしてんのは草
小学校で習う掛け算も足し算もモナドみたいに便利だけど浮動小数点数はモナドと違って不便だねえ
小学校で習う掛け算も足し算もモナドみたいに便利だけど浮動小数点数はモナドと違って不便だねえ
642デフォルトの名無しさん
2019/10/26(土) 10:10:55.84ID:e6NVGnmw 最近近隣スレで浮動小数点数で恥ずかしい書き込みを繰り返してる香具師を観かけたが
きっとCS知らない浮動小数点数覚えたての厨房が暴れてるんだろう
きっとCS知らない浮動小数点数覚えたての厨房が暴れてるんだろう
643デフォルトの名無しさん
2019/10/26(土) 10:22:10.08ID:az5oKcRh 素人なので確認したい
浮動小数点演算は計算式の組み替えによって生じる
計算ごとの丸め誤差とその蓄積が一意ではない
そこが問題。でいいですか?
浮動小数点演算は計算式の組み替えによって生じる
計算ごとの丸め誤差とその蓄積が一意ではない
そこが問題。でいいですか?
644デフォルトの名無しさん
2019/10/26(土) 12:52:46.96ID:751XFDvk 例えば、3桁の有限桁数で、
123,000 + 987 は、どうなると思う?w
123,000 + 987 は、どうなると思う?w
645デフォルトの名無しさん
2019/10/26(土) 13:03:31.77ID:az5oKcRh646デフォルトの名無しさん
2019/10/27(日) 09:39:17.43ID:E41dDRFH647デフォルトの名無しさん
2019/10/27(日) 12:11:44.86ID:5vE1lFai ヒント
(123000 + 987) + 456
123000 + (987 + 456)
(123000 + 987) + 456
123000 + (987 + 456)
648デフォルトの名無しさん
2019/10/27(日) 12:20:50.14ID:+UrB7+Fx >647
有効桁数3の条件下では
443
443
で結合則?を満たしている
有効桁数3の条件下では
443
443
で結合則?を満たしている
649デフォルトの名無しさん
2019/10/27(日) 14:13:05.51ID:E41dDRFH650デフォルトの名無しさん
2019/10/27(日) 20:56:25.06ID:5vE1lFai >>649
最初からも何も最初言ったの俺じゃないし誰でも気づくだろ
最初からも何も最初言ったの俺じゃないし誰でも気づくだろ
651デフォルトの名無しさん
2019/10/28(月) 15:11:56.47ID:CizzAz3Z 恥の上塗り
652デフォルトの名無しさん
2019/10/31(木) 16:11:16.19ID:Q9035W3u 最近のHaskellは末尾再帰形は当たり前として、余再帰形まで最適化するってマジ?
653デフォルトの名無しさん
2019/10/31(木) 19:47:56.88ID:+pnqrJiF モナドの話すると怒る人が一定数いるのに
最適化の話は難解でもすんなり受け入れられるのなんでだろう
最適化の話は難解でもすんなり受け入れられるのなんでだろう
654デフォルトの名無しさん
2019/10/31(木) 19:53:32.58ID:PeiHf3lU655デフォルトの名無しさん
2019/10/31(木) 20:01:53.96ID:0babd/Ur 年寄りが自分の理解できないことをしゃべるなって
いっているだけでしょ。最適化はなんだかんだいっ
て実践もしくはなんとか理解できる範疇とかでは。
いっているだけでしょ。最適化はなんだかんだいっ
て実践もしくはなんとか理解できる範疇とかでは。
656デフォルトの名無しさん
2019/10/31(木) 20:08:46.83ID:+pnqrJiF 例えば「馬鹿っぽい」の定義はモナドの定義よりもずっと複雑なんだよ
そのわりに「馬鹿っぽい」は難解すぎるという認識はほとんどない
そのわりに「馬鹿っぽい」は難解すぎるという認識はほとんどない
657デフォルトの名無しさん
2019/10/31(木) 21:33:19.89ID:0babd/Ur Haskellや圏論のモナドってライプニッツ由来?ギリシャ哲学由来?
658デフォルトの名無しさん
2019/10/31(木) 22:15:10.01ID:ZttcTVl1 モナドの場合、「俺の理解は正しくて、お前の理解は間違ってる」てな話になりがちだから。
659デフォルトの名無しさん
2019/11/02(土) 11:54:49.10ID:8EQu8ULJ660デフォルトの名無しさん
2019/11/02(土) 21:23:26.95ID:3BGLXMdU 【ぼくようメモ】
Haskellはマルチディスパッチをネイティブサポートしているので、
デザインパターンの一つ、Visitorパターンを気づかない内に使っている。
Haskellはマルチディスパッチをネイティブサポートしているので、
デザインパターンの一つ、Visitorパターンを気づかない内に使っている。
661デフォルトの名無しさん
2019/11/02(土) 22:57:22.40ID:r3wI6psG Haskellを勉強するとどんなメリットが有りますか?
@ Haskellを使って仕事する開発プロジェクトなんてものは世の中に有るのですか?
A @が無いなら開発プロジェクトが無くても仕事の効率化などで、役立てる方法は有るのですか?
B Aも無いなら、勉強して得た知識を日々のJava等の開発プロジェクトで役立てる方法は有るのですか?
@ Haskellを使って仕事する開発プロジェクトなんてものは世の中に有るのですか?
A @が無いなら開発プロジェクトが無くても仕事の効率化などで、役立てる方法は有るのですか?
B Aも無いなら、勉強して得た知識を日々のJava等の開発プロジェクトで役立てる方法は有るのですか?
662デフォルトの名無しさん
2019/11/02(土) 23:45:55.62ID:lY37zOLC 3かな。
コード書く際に
入出力部分と、ディターミニスティックな部分を選り分けるような書き方するようになった。
コード書く際に
入出力部分と、ディターミニスティックな部分を選り分けるような書き方するようになった。
663デフォルトの名無しさん
2019/11/03(日) 00:23:07.97ID:lUqXCL2k >>661
世界に目を向ければ、Reddit でよく求人されてる
世界に目を向ければ、Reddit でよく求人されてる
664デフォルトの名無しさん
2019/11/03(日) 07:05:59.77ID:SWWLrIVQ665デフォルトの名無しさん
2019/11/03(日) 07:44:37.10ID:lUqXCL2k >>664
ディターミニスティック
決定論的な
IOが絡む非決定論的なコードと、引数と戻り値の関係が決まっている決定論的なコードとを、
しっかり分けて書けるようになったと言いたいのだろう。
要するに、副作用のあるコードと純粋なコードを分けるということだ。
ディターミニスティック
決定論的な
IOが絡む非決定論的なコードと、引数と戻り値の関係が決まっている決定論的なコードとを、
しっかり分けて書けるようになったと言いたいのだろう。
要するに、副作用のあるコードと純粋なコードを分けるということだ。
666デフォルトの名無しさん
2019/11/03(日) 10:14:27.60ID:9HD8E/jN 女心と秋の空はデバッグするのが難しいってことだ
667661
2019/11/03(日) 12:44:26.49ID:phxg68Jk 皆さんありがとうございます。
どうやら、あまり勉強する意味がなさそうに感じました。
なぜみなさんはこの言語をおやりになっているのでしょうか?
趣味でしょうか?
どうやら、あまり勉強する意味がなさそうに感じました。
なぜみなさんはこの言語をおやりになっているのでしょうか?
趣味でしょうか?
668デフォルトの名無しさん
2019/11/03(日) 12:48:35.08ID:r9lfrX/A まあ勉強する意味はないといえばないかな。
その当時盛り上がったってのが理由だったりするから趣味といえば趣味。
でもまあその言語がどういうところを気にして作られたかってのを
触って実感するってのはプログラム全般で役に立つと俺は思うけどね。
その当時盛り上がったってのが理由だったりするから趣味といえば趣味。
でもまあその言語がどういうところを気にして作られたかってのを
触って実感するってのはプログラム全般で役に立つと俺は思うけどね。
669デフォルトの名無しさん
2019/11/03(日) 13:13:12.24ID:phxg68Jk Javaから初めて、Javaしか書いたことが無い人というのは再帰メソッドとして実装した方が良いものも、慣れていないし面倒くさいからという理由で再帰にしたがらない傾向が有ります。
Hakellを勉強した人間なら、そういうことが起こらないという利点が有るといいうことでしょうか?
Hakellを勉強した人間なら、そういうことが起こらないという利点が有るといいうことでしょうか?
670デフォルトの名無しさん
2019/11/03(日) 14:27:23.33ID:9HD8E/jN 将棋の居飛車党と振り飛車党みたいなもん
671デフォルトの名無しさん
2019/11/03(日) 14:42:14.64ID:A+q4He3F ループより再帰がいつも正しいわけではないでしょ
Javaなんだし
おれが仕事でやってるプロジェクトでは再帰は基本NGだよ
Javaなんだし
おれが仕事でやってるプロジェクトでは再帰は基本NGだよ
672デフォルトの名無しさん
2019/11/03(日) 15:00:10.66ID:smmSGOst ループと末尾再帰は等価(キリっω
673デフォルトの名無しさん
2019/11/03(日) 15:01:32.59ID:b8FiTQTP haskell学んでも、stack safeな再帰を書けるようになるわけでもないから、
haskellを学ぶ利点だとは思わない
理由を探さなきゃ学ぶ気になれないものには手を出さなければいいんだよ
CSの世界に限っても死ぬまでに学びきれないだけのネタがあるんだし
haskellを学ぶ利点だとは思わない
理由を探さなきゃ学ぶ気になれないものには手を出さなければいいんだよ
CSの世界に限っても死ぬまでに学びきれないだけのネタがあるんだし
674デフォルトの名無しさん
2019/11/03(日) 16:32:47.09ID:nhaRMy12 『達人プログラマー』でも「毎年1つ新しい言語を学べ」と言っている
まあ凡人にそこまでは厳しくとも
たまに新しいプログラミング・パラダイムに触れることは
プログラマーにとって有益であると思うよ
それは知識として即効性のあるものというよりは(そういうのもあるかもしれないが)
1年2年経って効いてくるタイプのものかなと
まあ凡人にそこまでは厳しくとも
たまに新しいプログラミング・パラダイムに触れることは
プログラマーにとって有益であると思うよ
それは知識として即効性のあるものというよりは(そういうのもあるかもしれないが)
1年2年経って効いてくるタイプのものかなと
675デフォルトの名無しさん
2019/11/03(日) 18:49:00.94ID:AdH9k/oI >>661
Aかな
宣言的プログラミングの作法が身につく
普段Javaを使っているのなら、
最近のJavaは関数型プログラミングのシンタックスがかなり増えてきているので
Haskellで高階関数の使い方を理解しておくと、Javaプログラミングに直接的に役立つ
Aかな
宣言的プログラミングの作法が身につく
普段Javaを使っているのなら、
最近のJavaは関数型プログラミングのシンタックスがかなり増えてきているので
Haskellで高階関数の使い方を理解しておくと、Javaプログラミングに直接的に役立つ
676デフォルトの名無しさん
2019/11/03(日) 19:10:14.85ID:UDaenYuS 宣言的プログラミングとは何ですか
677デフォルトの名無しさん
2019/11/03(日) 20:02:00.41ID:JubniDAi 横レスだけど、そんなに役に立たないものなのか...
入門本買おうか悩んでたのに
入門本買おうか悩んでたのに
678デフォルトの名無しさん
2019/11/03(日) 20:22:26.22ID:SWWLrIVQ >>665
副作用ですか
Cのポインター辺りは副作用上等でトリッキーな事をしつつ記述してあるわけで
副作用と脆弱性に苦しんだ結果、RUST
Haskellの恐ろしい所はプログラムが何らかの高度な数学的アルゴリズムな場合があって
別途資料がないと全く理解できない
あっても以下略
副作用ですか
Cのポインター辺りは副作用上等でトリッキーな事をしつつ記述してあるわけで
副作用と脆弱性に苦しんだ結果、RUST
Haskellの恐ろしい所はプログラムが何らかの高度な数学的アルゴリズムな場合があって
別途資料がないと全く理解できない
あっても以下略
679デフォルトの名無しさん
2019/11/03(日) 20:59:17.59ID:phxg68Jk >>670
プロの世界では振り飛車は居飛車より勝ちにくいと言われますが、久保九段や菅井七段のようにそれを使って実践で勝つプロもいます。
アマの世界では振り飛車か居飛車かが直接勝敗に結びつくような高度な戦いができないので好きな方を選べばいいです。
ところが、ビジネスプログラミングの世界ではどうでしょうか?
残念ながら、手続き型プログラミング言語の開発プロジェクトしか存在しません。
関数型は使おうにも使う場所が無いのです。
プロの世界では振り飛車は居飛車より勝ちにくいと言われますが、久保九段や菅井七段のようにそれを使って実践で勝つプロもいます。
アマの世界では振り飛車か居飛車かが直接勝敗に結びつくような高度な戦いができないので好きな方を選べばいいです。
ところが、ビジネスプログラミングの世界ではどうでしょうか?
残念ながら、手続き型プログラミング言語の開発プロジェクトしか存在しません。
関数型は使おうにも使う場所が無いのです。
680デフォルトの名無しさん
2019/11/03(日) 21:02:48.17ID:A+q4He3F ないことはない
たとえIT土方業界であっても
たとえIT土方業界であっても
681デフォルトの名無しさん
2019/11/03(日) 21:12:52.97ID:j4VhEtAF682デフォルトの名無しさん
2019/11/03(日) 21:23:44.54ID:r9lfrX/A 宣言型を変にもてはやす記事とかあるけどさ、
あれバグがあるときに凄まじくデバッグしにくいってことはちゃんと知っておいた方がいいぞ。
あれバグがあるときに凄まじくデバッグしにくいってことはちゃんと知っておいた方がいいぞ。
683デフォルトの名無しさん
2019/11/03(日) 21:26:11.59ID:j4VhEtAF >>682
それはいくらなんでもド素人すぎるだろう
それはいくらなんでもド素人すぎるだろう
684デフォルトの名無しさん
2019/11/03(日) 21:44:19.05ID:r9lfrX/A >>683
多分、君は論理プログラミングとか制約プログラミングについて理解してないんだろう。
多分、君は論理プログラミングとか制約プログラミングについて理解してないんだろう。
685デフォルトの名無しさん
2019/11/03(日) 21:49:28.47ID:j4VhEtAF688デフォルトの名無しさん
2019/11/03(日) 21:59:29.92ID:A+q4He3F >>685
横からだけど
凡人にとっては数学的な静的な関係を見つけ出すのはしんどいことが多い
副作用あろうが、ソースコードをステップ実行でトレースできる手続き型の方が
問題解析が楽ってことは往々にしてある
横からだけど
凡人にとっては数学的な静的な関係を見つけ出すのはしんどいことが多い
副作用あろうが、ソースコードをステップ実行でトレースできる手続き型の方が
問題解析が楽ってことは往々にしてある
689デフォルトの名無しさん
2019/11/03(日) 22:04:59.57ID:nJ4Xpsy6690デフォルトの名無しさん
2019/11/03(日) 22:44:06.12ID:ksAXIGkW モナドって結局、計算効果Tをもたらすプログラム(T-プログラム)は
クライスリ圏をなすからクライスリトリプル(モナド)がT-プログラムの
合成規則として必要だから出てくる
クライスリ圏をなすからクライスリトリプル(モナド)がT-プログラムの
合成規則として必要だから出てくる
691デフォルトの名無しさん
2019/11/03(日) 22:45:11.48ID:A+q4He3F 駄目な理系君の典型
692デフォルトの名無しさん
2019/11/03(日) 22:56:40.83ID:l1Ex5n/D693デフォルトの名無しさん
2019/11/03(日) 23:34:12.73ID:/tZ0XI+t694デフォルトの名無しさん
2019/11/04(月) 05:48:03.18ID:PrFaR+H+ モナドの副作用云々は
Scala Monix の並列プログラミングも面白い
Scala Monix の並列プログラミングも面白い
695デフォルトの名無しさん
2019/11/04(月) 06:29:33.14ID:u0qouhFJ >>678
恐ろしさというよりも
Haskellの仕様その他聞くと全く関係ない数学の話をしだす奴ばかりでカンファレンス途中で抜けてきたことがある
数学には全く興味ないんだがね
言っても聞きやしないこいつらとは合わないわと思った
恐ろしさというよりも
Haskellの仕様その他聞くと全く関係ない数学の話をしだす奴ばかりでカンファレンス途中で抜けてきたことがある
数学には全く興味ないんだがね
言っても聞きやしないこいつらとは合わないわと思った
696デフォルトの名無しさん
2019/11/04(月) 07:07:21.47ID:PrFaR+H+ >>695
マジでHaskellは数学者が数学者の為にデザインしたみたいなものなので
ネット上のコードも数学的専門性に全振りしたものが普通にある
そんなのは数学の専門課程と無関係な人間には理解できない
だけど、英文の赤黒木を扱うHaskellのコードは恐ろしくスッキリ短くて
余分なノイズが少ない
全体の把握が楽だった、恐ろしく高密度かも
コメントで書く詳細説明≒Haskellのコード
マジでHaskellは数学者が数学者の為にデザインしたみたいなものなので
ネット上のコードも数学的専門性に全振りしたものが普通にある
そんなのは数学の専門課程と無関係な人間には理解できない
だけど、英文の赤黒木を扱うHaskellのコードは恐ろしくスッキリ短くて
余分なノイズが少ない
全体の把握が楽だった、恐ろしく高密度かも
コメントで書く詳細説明≒Haskellのコード
697デフォルトの名無しさん
2019/11/04(月) 12:15:05.55ID:GOdOYVw0 型の宣言だけならコードの中に埋め込むことはできた
だが数学の知識をすべて宣言するのは無理
だからコードを読みながら数学勉強しようと思ったら、わかることは静的型ばっかりだぞ
そもそも数学は広大過ぎてどこから手をつけるか迷うから静的型から始めるのは合理的
だが数学の知識をすべて宣言するのは無理
だからコードを読みながら数学勉強しようと思ったら、わかることは静的型ばっかりだぞ
そもそも数学は広大過ぎてどこから手をつけるか迷うから静的型から始めるのは合理的
698デフォルトの名無しさん
2019/11/04(月) 20:52:45.92ID:t2f72QmD 数学の後ろ盾があるとよくわからない安心・万能感を錯覚し
これがよくわからない人を呼び寄せてしまう
この魅力はオカルトめいている
謎多き異性に惹かれてしまうのと似ている
これがよくわからない人を呼び寄せてしまう
この魅力はオカルトめいている
謎多き異性に惹かれてしまうのと似ている
699デフォルトの名無しさん
2019/11/04(月) 21:01:45.20ID:0O6JYxLK キモすぎてわろた
701デフォルトの名無しさん
2019/11/04(月) 21:24:51.70ID:GOdOYVw0 オカルトめいているのは数学でも言語でもない
人間の感情がオカルトめいているのだ
人間の感情がオカルトめいているのだ
702デフォルトの名無しさん
2019/11/04(月) 21:59:28.69ID:PrFaR+H+ >>700
英語の参考資料(ブラウザで翻訳しつつ
Red-Black Trees in a Functional Setting
ttps://pdfs.semanticscholar.org/7756/16cf29e9c4e6d06e5999116f777e431cafa3.pdf
英語の参考資料(ブラウザで翻訳しつつ
Red-Black Trees in a Functional Setting
ttps://pdfs.semanticscholar.org/7756/16cf29e9c4e6d06e5999116f777e431cafa3.pdf
704デフォルトの名無しさん
2019/11/05(火) 17:15:35.86ID:GEIgbGGA PostgREST は Haskell のキラーコンテンツになれるか
705デフォルトの名無しさん
2019/11/05(火) 20:00:05.59ID:PndodFqR Haskellの代数的データ構造は、速度が低い方に引かれるけど、恐ろしく合理的な手法かも知れない
中身は基本Lispの構文糖衣相当だからLIST処理のコストがそのまま処理速度に反映される
ただ、数学者が数学者の為にデザインした分だけ優れた表現力をもっている
C++で
class TEST {int a, b, c}; が
Haskellでは
Test Int Int Int になって
関数の定義時に
add (Test x y z) =
z + y + z
関数定義で型指定と値を変数名に拘束して計算する
test = Test 1 2 3
add test
なんか凄い気がする
中身は基本Lispの構文糖衣相当だからLIST処理のコストがそのまま処理速度に反映される
ただ、数学者が数学者の為にデザインした分だけ優れた表現力をもっている
C++で
class TEST {int a, b, c}; が
Haskellでは
Test Int Int Int になって
関数の定義時に
add (Test x y z) =
z + y + z
関数定義で型指定と値を変数名に拘束して計算する
test = Test 1 2 3
add test
なんか凄い気がする
706デフォルトの名無しさん
2019/11/05(火) 20:14:52.01ID:2pF9vl9I Simon Peyton Jonesもなんかよくわからんけど関数型言語カッケーと思ったからやった
って言ってるくらいだからそういうのでいいんかもなとは思う。
って言ってるくらいだからそういうのでいいんかもなとは思う。
707デフォルトの名無しさん
2019/11/05(火) 20:40:52.74ID:9FWI0Jsd >>705
C++17なら、そこそこそれっぽく書けないか?
struct Test { int a, b, c; };
auto add(Test t) {
auto [x, y, z] = t;
return x + y + z;
}
auto test = Test{ 1, 2, 3 };
add(test);
C++17なら、そこそこそれっぽく書けないか?
struct Test { int a, b, c; };
auto add(Test t) {
auto [x, y, z] = t;
return x + y + z;
}
auto test = Test{ 1, 2, 3 };
add(test);
708デフォルトの名無しさん
2019/11/05(火) 20:47:05.49ID:9FWI0Jsd おっと、型定義はこっちのほうがそれっぽいか
#include <tuple>
using Test = std::tuple<int, int, int>;
#include <tuple>
using Test = std::tuple<int, int, int>;
709デフォルトの名無しさん
2019/11/05(火) 20:58:36.52ID:CZEUqG6i ええやん
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- 立民・岡田氏の質疑「不適切」 維新・藤田氏、台湾有事答弁巡り [蚤の市★]
- 4:44:44.444
- 神様(*'🙏'*)!どうか明日秋葉原でレトロゲームを買わない勇気をください(*'ω'*)
- 【愛国者悲報】ナマコ、中国、香港、台湾しか食ってない...台湾はいいけど他ってどーなんの?漁師はどこに売ればいいんだこれ... [856698234]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- そもそも日本て中国に日沈む国だとか無礼な事言ってたよね
- アニメでよく日本人キャラなのに目の色だけ変えたりしてるのあるじゃん?
