関数型プログラミング言語Haskell Part34

1デフォルトの名無しさん
垢版 |
2021/12/17(金) 12:57:26.37ID:NPioGyUL
関数型プログラミング言語 Haskell について語るスレです。

Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/

前スレ
関数型プログラミング言語Haskell Part33
https://mevius.5ch.net/test/read.cgi/tech/1581326256/
2024/10/04(金) 21:52:13.21ID:WSIC8Xt5
>>490
じゃあHaskellは純粋にただの型付きラムダ計算なんだから、数学的に正当化されてない部分などない
おしまい
492デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:03:12.33ID:tixO3LDq
>>491
うーん。例えば、数学は集合論上で展開されているから、集合論があればその上で展開される
解析学とか、線形代数学とかいらない、みたいな論法じゃない?
この現象は、解析学でモデル化できるけれども、解析学は集合論上で展開できるから、
そんなモデル化はいらなくていちいち集合論の言葉で書けばいいじゃん的な。
みんなそこに興味あるわけじゃないと思いますよ。
493デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:08:30.14ID:vLDssEdm
>>484
横からというか >460 書いた者だけど、あなたの疑問は解釈1の「アクションを受け取ってアクションを返す関数」だとざっくりし過ぎて納得いかないって感じでしょうか?

でしたら、解釈2では納得出来ませんでしょうか?
解釈2は、モナドの効能の一つに追加して「数学の世界にアウトソーシングという概念を持ち込む」というものです。
モナドの例えとして、床下配線というのがありますが、MaybeやListの様な通常のモナドも、>>=の中に関数適用部分を押し込んで、表から見えないようにしています。
(これも、見ようによってはアウトソーシングです。同じ数学の世界なので、隣の席に頼んだ感じですが)

IOモナドは、>>=の中すら見えない状態で関数適用しているわけですが、 >460 でも書いたとおり、「数学の外(ハードウェア)」で関数適用されていると考えるわけです。

IOモナドの>>= は、外の世界と遣り取りする受付窓口というわけですね。
(実際、バッファの様な振る舞いをします)

main = do x <- return 0
_________x <- return (x + 1)
_________print x
2024/10/04(金) 22:14:36.08ID:WSIC8Xt5
>>492
ラムダ計算も集合論上で展開されてるだろ
だから、Haskellも集合論の言葉で書かれてるじゃん
そんな誰もが分かってるけど、いちいち書いても何の得もないことを話したかったの?
495デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:16:42.74ID:vLDssEdm
この場合、IOモナドを使って変数xを書き換えているのではなく、シャドーイングによって同じxという名前の変数を新しく作って、古い x に +1 した値を束縛しています。
496デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:21:54.69ID:tixO3LDq
>>493
ごめんなさい。全然違う。入出力を題材にしているのはあくまで例で別に疑問はないです(実装をちゃんと知っているわけではないですが)。
モナドを導入する動機はMoggi論文読んだ読書感想文なので途中まで書いてますが、圏をなすかどうかです。
497デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:27:08.92ID:vLDssEdm
無理やりハードウェアも数学と言い張るなら、ハードウェアもチューリングマシンという計算モデルなので数学が元と言えなくはない?

そういうこじつけは置いておいても、IOモナドをアウトソーシングと考えると、じゃあ外の世界はめちゃくちゃか?と考えて、そうではないと気付く。
ハードウェアも一定の秩序がある。
数学だけが全てではないのかもしれない。
何かしらの秩序というか、法則性を持った世界(数学、数学以外含む)どうしのやり取りにモナドが橋渡しとして働いているのでは?とか、考えたりする。
498デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:28:17.05ID:tixO3LDq
>>494
モナドの原論文(Moggiの論文)の読書感想文を入出力の計算効果を題材に解説してみているんだって。
ブログに書いても今更突っ込むなんて恥ずかしいことができる人はいるわけないので、ここに書いている。
2024/10/04(金) 22:32:08.56ID:WSIC8Xt5
>>498
その人はHaskellは数学的に正当化されてないけしからんって言ってたの?
2024/10/04(金) 22:34:04.82ID:WSIC8Xt5
最低限、論文に書いてある正しいこととお前の妄想がはっきり区別できるように感想文を書けよ
501デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:44:05.60ID:tixO3LDq
>>499
はっきりそうは言ってない。
プログラムをλ項に対応させて単純化させると、valueからvalueへの全域関数となるけれど、
そう考えると、非停止性とか非決定性、副作用といった現実のプログラムにある特徴が失われる(だからそれを何とかしようと読める)。

>>500
そんなことできるほど力量ないです。
502デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:46:51.98ID:vLDssEdm
>>496
少なくともコマンド系のプログラムは圏をなしますね。
Haskellで作ると実感しますが、Haskellに限らず、

(ユーザーから見て)プログラムそのものが関数になります。
Linuxでコマンドをパイプライン処理するのは関数(射の)合成に相当しますし。
id相当のプログラムは作れますし。

・・・と考えると圏をなすと思うのですが。
(GUIプログラムもボタン単位とかで関数と言えますが、合成は…押した順序?)

例えば

{(x,2x+1) | x ∈ R} と 2x+1のグラフは同型だと直感的に分かりますが、その関数(射)は数式で表せません。

圏論では、可換図を受け取って可換図を返すとか出てきますので、{(x,2x+1) | x ∈ R} と 2x+1のグラフを結ぶ関数(射)が人間って言うのも有かな?とか、考えます。
(圏論では同型と分かれば(証明できれば)よくて、射の中身には言及しない)
2024/10/04(金) 22:50:56.01ID:WSIC8Xt5
>>501
なんでラムダ項に対応させると全域関数になるわけ?ラムダ計算は停止しない計算も表現できるモデルでしょ
言ってることが意味不明なんだよ
504デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:52:29.23ID:tixO3LDq
ただの圏じゃなくてクライスリ圏じゃないといけない(Moggiのアイディア1から)。
そして、クライスリ圏を定義するためにはクライスリ・トリプル(モナド)がいる
505デフォルトの名無しさん
垢版 |
2024/10/04(金) 22:52:30.15ID:tixO3LDq
ただの圏じゃなくてクライスリ圏じゃないといけない(Moggiのアイディア1から)。
そして、クライスリ圏を定義するためにはクライスリ・トリプル(モナド)がいる
2024/10/04(金) 22:54:07.35ID:WSIC8Xt5
そもそもラムダ項は関数ではないし、集合ではあるということはできるけど、それは自然数1は集合であるみたいな話でそれに意義なんてないよ
507デフォルトの名無しさん
垢版 |
2024/10/04(金) 23:02:32.42ID:vLDssEdm
>>504
>398 じゃ答えにならない?
2024/10/04(金) 23:02:43.19ID:6lZW+X9H
流石にこれじゃ関数型界隈の人達にボコボコにされて終わるね
やめといた方がいい
509デフォルトの名無しさん
垢版 |
2024/10/04(金) 23:04:12.66ID:tixO3LDq
βη簡約するとλ項が別の簡約されたλ項になる。この対応関係を数学的関数とみなせると言ってると解釈してる。
2024/10/04(金) 23:12:30.87ID:WSIC8Xt5
>>509
みなせるって何?
ようするにラムダ項は関数じゃないってことでしょ当たり前だけど
511デフォルトの名無しさん
垢版 |
2024/10/04(金) 23:14:09.18ID:tixO3LDq
全域関数となる理由はわからん。全域関数=数学的関数ということを言いたいんだろうと思ってたけどそこから詰めてなかった。
2024/10/04(金) 23:22:52.03ID:WSIC8Xt5
>>511
お前が言い出したんだろ
2024/10/04(金) 23:30:08.11ID:6lZW+X9H
これがワードサラダか
514デフォルトの名無しさん
垢版 |
2024/10/04(金) 23:41:03.02ID:tixO3LDq
すまんね。準備不足だったわ。詰めるところわかったし、
詰めるところ詰めることができたらひっそりどっかに書くことにするわ。
いろいろコメント参考になったわ。
2024/10/05(土) 00:27:27.96ID:aeHKoAMv
集合と写像の区別がついてないんだから、何を準備しようが時間の無駄
2024/10/05(土) 07:57:53.70ID:jwoAd9Km
ZFでは集合しか無いから。写像だろうが、自然数だろうが何でも集合。全てを集合で実装する世界。
517デフォルトの名無しさん
垢版 |
2024/10/05(土) 08:14:37.65ID:JByJwyk5
圏論は逆で、対象(集合で言う元)を恒等写像と同一視して全てを射(写像)として扱うね。
2024/10/05(土) 08:53:09.61ID:jwoAd9Km
対象Aに対しA=id_Aとする圏の定義は、射のクラスの上での全域的で無い結合的2項演算⚪︎を持つ代数系としての簡潔な定式化。この定義では圏には射しかなくて、対象とは恒等射の別名に過ぎない。
ただ、この圏の実装は入門者には分かり難い。

Aが圏Cの対象であることを古い文献はA in Ob(C)と書くことが多いけど、最近の文献はA in Cと書いてしまう。fが圏Cの射f:A --> Bなことはf in Hom_C(A,B)かf in Mor_C(A,B)。
2024/10/05(土) 10:51:32.56ID:KE+ltgGd
普通のλはどの順序で適用しても同じ計算結果になる(Church-Rosserの定理)けど
副作用を伴うλは適用順序が入れ替わると副作用の順序も変わって同じ結果とは言えなくなるから
順序を保証する仕組みとしてモナドが応用されてるはず

IO a >>= (a -> IO b) -> IO b
は(a -> IO b)が(IO a)を受け取れないから
(IO a)からaを取り出せるところまで計算しないと(a -> IO b)を適用できない

仮に
IO a -> (IO a -> IO b) -> IO b
みたいな形だと(IO a)の計算を保留したまま(IO a -> IO b)を適用できる

圏論はよく分からないけど
圏Aに便宜的な時間軸をつけたA_t0, A_t1, A_t2, …を用意して関手
A_t0 → A_t1, A_t1 → A_t2, …
を作るとA_t0, A_t1…は全部AのクローンだからA_t0 → A_t1, …は自己関手になって
その自己関手の集合がなんやかんやでモナドに相当するみたいなイメージ
2024/10/05(土) 11:23:42.68ID:KE+ltgGd
どうでもいいけど計算科学のside effect→副作用は誤訳だと思う
薬学のside effectは「随伴作用」(副作用)だけど計算科学のside effectは「側面作用」って感じ
2024/10/05(土) 11:40:17.86ID:gdCH0E84
圏論のコンコルド効果について。

Haskellのコーティングの質をあげようと、
一生懸命頑張って勉強したのに実はほとんど役に立たない…
「大量の時間と労力を学習したのに悔しい!」
そのことを認めることができず、懸命に圏論のプログラミングでの有用性を力説し、学習布教に努める。
2024/10/05(土) 13:16:57.88ID:AoKf42Y0
>>519
異なる順序でreductionする方法がある場合は、どの順序でreductionしても同じ結果になるだろ?

IO a >>= (a -> IO b) -> IO bなら当たり前だけど(a -> IO b) -> IO bをa -> IO bに先にreduction可能
2024/10/05(土) 13:51:21.32ID:2BBo/yBe
数日程度で成果を出す戦略を採用したにもかかわらず何年も戦争が続く
こういうのは圏論に限定されない現象だ

順序を入れかえたら結果が変わる
数日後の情報が今ここに伝わるならそれは時間軸とは言えないぞ
2024/10/05(土) 14:41:11.81ID:hOtauQiF
>>522
IO a >>= (a -> IO b) -> IO b

(IO a >>= (a -> IO b)) -> IO b
であって
IO a >>= ((a -> IO b) -> IO b)
にはならないよ
(>>=)は演算子
2024/10/05(土) 15:10:26.09ID:u1hwkRNd
圏論の話題出すなよ
Haskellで何か書くにあたって利益があるわけじゃないんだから
2024/10/05(土) 15:30:46.49ID:2BBo/yBe
利益は道徳よりも軽い
これも、未来予知ができなければ利益を計算できないことに原因がある
527デフォルトの名無しさん
垢版 |
2024/10/05(土) 17:25:54.13ID:JByJwyk5
>>521
役に立つなら、もっと色々入ってるかと…。

私はむしろHaskellより圏論そのものに興味の対象が移って、Haskellは圏論の概念を実際に動かしてみるための道具に成り下がってますね^^;

とはいえ、数学の知識不足なので群論やらトポロジーやらあっちこっち読み漁りながらなので、歩みは遅いですが…。
2024/10/05(土) 20:22:21.95ID:J2mQEu2j
>>527
面倒でも一般位相の基本、ホモロジーの初歩…と地道にやるのをおすすめします
2024/10/05(土) 20:30:18.78ID:aeHKoAMv
集合と写像の区別もついてないんだから、集合と位相からやらないとだめ
530デフォルトの名無しさん
垢版 |
2024/10/05(土) 22:07:16.25ID:JByJwyk5
>>528
ありがとうございます。
手探りだったので、助かります。
重点的に勉強してみます。
(高卒にどこまで理解できるか…)

>>529
一応、区別付いてるつもりなのですが…。
指摘していただければ調べてみます。
2024/10/05(土) 22:16:56.83ID:aeHKoAMv
>>530
あー上で暴れてた人とは別人だったのね
でも、集合と位相は何をやるにしても必要だから頑張ってね
2024/10/05(土) 23:30:55.73ID:bPGp2ASj
>>373=396=530 っぽいから言うと、(数学に関して)「分かった」「理解した」の自己基準が不安しかない

> ほら、分かってみれば「なーんだ。そんなことか」でしょ?
> なるほど、って感じ。
と自分に言い聞かせていても、ポピュラーサイエンス書感覚で読んだってダメ

他人との議論では、逆に「こいつ分かってないな」と思われるだけだからな
533デフォルトの名無しさん
垢版 |
2024/10/05(土) 23:50:06.63ID:JByJwyk5
>>532
独学ですしね^^;
こいつ分かってないなと思われても良いですよ?
それで指摘されたものも新しい知識になるので。

どうも定義を読むだけじゃイメージ湧かないので、ネット上や数学書の複数の例え話が全て真だと仮定して、共通の特徴からイメージを掴むパターンが多いんです。
2024/10/06(日) 01:53:03.98ID:6zQjUfx4
いま正常性バイアスを理解した
全て正常だと仮定する
なるほど
2024/10/06(日) 10:54:18.58ID:jCq2z3ec
本来Haskell使う上で必要のない数学の知識をかじらされるのかわいそう
こうやって無駄に間口狭めてなんの意味があるんだか
2024/10/06(日) 11:09:45.81ID:y6HCCYtz
>>530に関しては同情すんな
>>373前後で煽っておいて炎上勉強法してる
2024/10/06(日) 12:50:07.74ID:6zQjUfx4
>>535
だから、具体例をかじることなく一般圏論でやめておこうって言ってるじゃないか
バランスを考えて妥協するとはそういうことだ
2024/10/06(日) 13:58:19.62ID:jCq2z3ec
まず圏論が必要ないっての
2024/10/06(日) 14:19:17.49ID:6zQjUfx4
それは極論だがそれを許容する代わりに反対側の極論も許容してもらう
ダブルヘイターとは違うのだよ
2024/10/07(月) 16:51:22.87ID:89HfDe1C
>>539
君頭悪いなら無理に書き込まないほうがいいよ
2024/10/08(火) 16:34:43.77ID:uOPPJ/Hn
圏論好きはHaskellよりCPLで幸せになれる
542デフォルトの名無しさん
垢版 |
2024/10/08(火) 19:19:24.66ID:fXGz3G0z
>>529
集合と写像って違うんですか?写像って集合ではなかったですか?
543デフォルトの名無しさん
垢版 |
2024/10/08(火) 19:24:10.23ID:u3fJk7wa
>>541
CPLとは?kwsk
2024/10/08(火) 19:35:49.07ID:i8KKt4Pq
>>542
反対向きは成り立たないよ
彼はラムダ項みたいなただの集合も関数だとか言ってたんだよ
545デフォルトの名無しさん
垢版 |
2024/10/08(火) 20:00:43.25ID:fXGz3G0z
>>544
なるほど。勉強になります。
2024/10/08(火) 20:58:36.65ID:uOPPJ/Hn
>>543
CPL (圏論プログラミング言語)
https://ja.m.wikipedia.org/wiki/CPL_(%E5%9C%8F%E8%AB%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)
2024/10/08(火) 21:59:10.54ID:fIGAPb3c
CPL使ったことは一度もないが
関手圏よりもっとややこしい圏で、モナドより凡庸なものを定義するんでしょ
2024/10/08(火) 23:08:48.38ID:Fz/Eetv9
こんなんだけど

>通常では,自然数などのデータ型は,効率のためにシステムに組込んであるが,CPLでは定義しなければならない.
>また,定義したとしても,機械本来の足し算,かけ算を使用できず,独自に定義しなければならない.
549デフォルトの名無しさん
垢版 |
2024/10/09(水) 00:11:45.00ID:NBQjGpZO
O'CAMLのCAMLはCategorical Abstract Machine Languageの略ということを忘れてはかわいそう。
550デフォルトの名無しさん
垢版 |
2024/10/09(水) 20:31:07.90ID:UpCIlB6y
>>546
Thenks!!
2024/10/12(土) 20:07:00.42ID:fyUcodga
初心者はStack、ガチムチはCabalで開発するんですか?
2024/10/15(火) 05:30:10.38ID:CzVFQLgH
みんなStackだよ
Cabalの依存関係解決はましになったとはいえプロジェクト構成の記述はStackのほうがよくできてるし
553デフォルトの名無しさん
垢版 |
2024/10/15(火) 22:34:15.38ID:2I09ehic
詳しい情報サンクス
CabalやめてStackに帰ります
GHCup tuiで選べるCabalやHLSやStackも全部recommendedに落とします
2024/10/16(水) 05:04:51.74ID:PvdZsye3
ああCabal辞めてStackに移行したらビルドし直しただけでTLSのハンドシェイクがTwitchでは大丈夫なのにツイキャスで失敗する謎の不具合が治りました
やっぱStackすわ
2024/10/18(金) 18:33:56.50ID:358zSdqs
別に不具合あったわけじゃないならよくね
みんなとか言い出したらそもそもみんなhaskellなんか使ってないが
556デフォルトの名無しさん
垢版 |
2024/10/25(金) 23:46:50.40ID:jl3K3ThU
Haskellを学んだみたいと思うんだけど、「すごいHaskell たのしく学ぼう」って書籍は今でも有用?
Haskellの良書として挙げることは多いと思うけど、出版から10年以上経ってるのが気になった
その間で言語に大きな変更があったとか、「今のHaskellだったらこう書くよね」みたいな注意が必要な点などあれば知りたい
あるいは最近の書籍でよりおすすめというものでも
2024/10/25(金) 23:58:48.00ID:ss1i659U
ちょっと古い情報だけど、
僕が「すごいH」を購入したのが2016.12だけど、数年後には章立ての変更まではなかったかもしれないけど、コードの記述など結構アップデートされてたような
いずれにしても、一冊でHaskellを、ってのはアレで、何冊かは読まないとと僕の場合
2024/10/26(土) 01:14:59.65ID:jaMDzNJq
>>556
ラムダノートのプログラミングHaskell第2版
これを読めばモナドの使い方がわかる
559デフォルトの名無しさん
垢版 |
2024/10/26(土) 13:33:26.33ID:qze4GRwI
モナドはCのポインタより概念が難しいのどうにかならんの
別のはないんですか
2024/10/26(土) 14:33:50.42ID:jaMDzNJq
ない
別に理論的な部分はすっ飛ばしていいよ
純粋関数型言語で手続き型言語のようなシーケンスをどうやったら書けるか?みたいなパズルを解く方法と思ってればいい
全てはdo記法にため
561デフォルトの名無しさん
垢版 |
2024/10/26(土) 18:20:45.25ID:QG40CL6R
>>559
だったらCleanはどうでせう?
モナドの代わりに線形何たらっての使ってる。

副作用関数を使い捨て関数と捉える概念らしいけど…。

変数は引数のない関数と捉えられるので、入力関数も外部で代入する変数と捉えられる。
んで、

return 0 >>= \x -> return (x + 1) >>= \x -> return (x + 1) = 2



return 0 >>= (\x -> return (x + 1) >>= (\x -> return (x + 1)))

と解釈されて、(\x -> ...) 部分が1個のラムダ式(関数)の上に階層構造なので、同名の変数 x はシャドーイングで古い値は隠される。
(そして隠されたら他から参照されなくなるのでGCでメモリを解放される)

IOモナドな入力関数も引数が無いので、値を外部で代入する変数と捉え、シャドーイングで古い値は隠されると考えると、線形何たらの使い捨て副作用関数と同じことしてる。
562デフォルトの名無しさん
垢版 |
2024/10/28(月) 07:23:18.71ID:duvMwVsG
>>557 >>558
ありがとう
まずはラムダノートのプログラミングHaskellを買いました
すごいH本はもう一冊読もうと思って時に買います
2024/10/28(月) 11:18:21.59ID:ABlPDVd9
すごいエロい本か
2024/10/28(月) 16:01:27.57ID:3PX2guVI
>>563
それ面白いと思ってレスしてんの?
2024/10/28(月) 17:13:55.02ID:B1OBTGXf
10年前のtwitterでは鉄板ジョークでしたよ
すごいH
2024/10/28(月) 19:07:28.37ID:aKxYxFxQ
haskell知らない人はエロ本だと思うし
隠れた卑猥な意味が無ければ
隠語としての価値も無い
2024/10/28(月) 19:57:49.83ID:2RuMUG8y
ML族のRustが市民権を得た今haskellやる意味ないよ
その時間をRustに当てなさい
2024/10/28(月) 21:28:05.60ID:B1OBTGXf
平均的HaskellerはRustもやった上でLinearTypes拡張がどうなるか様子見しつつ両方使ってるのでは?
https://zenn.dev/konn/articles/2023-10-01-linear-haskell-in-2023
569デフォルトの名無しさん
垢版 |
2024/10/28(月) 22:50:50.12ID:duvMwVsG
Haskellスレで言われましても
わざわざカレー屋に来て「ラーメンを食え」って喧伝するようなものでしょ
570デフォルトの名無しさん
垢版 |
2024/10/29(火) 10:29:33.30ID:2QinlXet
>>567
ほんそれ
2024/10/29(火) 11:58:27.10ID:IrbjK6II
Rustを関数型扱いするやつは
Rustも関数型もまるで理解してない
だから誰も真面目には相手してくれない
572デフォルトの名無しさん
垢版 |
2024/10/29(火) 12:22:05.93ID:dZcxKFDp
そう。世界がHaskellから孤立していく
世界はもっと危機感もった方が良いよ
2024/10/29(火) 15:30:57.70ID:+9FvEifI
実用プログラムに使った例はあるの?
2024/10/29(火) 16:00:48.67ID:FJXFYfo2
>>567
MLとは全然ちゃうがな
HM型推論せんやろ
575デフォルトの名無しさん
垢版 |
2024/10/29(火) 22:29:59.15ID:LPWWq4s4
>>573
自分も詳しくはないけど、クローズドな分野が多いんじゃない?
2024/10/29(火) 23:08:38.64ID:+9FvEifI
>>575
秘密ということ、それじゃわからんと同じことじゃないか
577デフォルトの名無しさん
垢版 |
2024/10/29(火) 23:25:09.95ID:6SLkDv7J
世界は頭悪すぎてHaskellを使いこなせていない
世界はもっと危機感を持った方が良い
2024/10/30(水) 02:10:51.19ID:p9nsrTZ/
急に主語が大きくなったぞωωω=2πf
2024/11/02(土) 09:15:14.82ID:KpOoS8wa
クローズドな部分なら使ったうちには入らないな
2024/11/02(土) 18:11:47.64ID:3NvQMTDb
金融工学で使ってるとこあるかもね
OCamlが定番らしいし
581デフォルトの名無しさん
垢版 |
2024/11/02(土) 19:19:33.26ID:Mufqfjtq
>>580
やはり実務ではフィンテックですか。

このスレで趣味教養的に
数理の応用実験や
アート作品生成プログラム記述用とかで
使ってる香具師いる?
582デフォルトの名無しさん
垢版 |
2024/11/02(土) 19:33:48.22ID:pIz290+w
>>580
みずほでOCamlしか聞いたことない
結局大規模障害出ちゃったけど
2024/11/02(土) 19:38:33.59ID:3NvQMTDb
>>582
金融商品の設計に使うんだよ
その手の障害とは全く関係ない
584デフォルトの名無しさん
垢版 |
2024/11/02(土) 20:11:17.53ID:pIz290+w
>>581
どっちかというと、教育に興味があって、例えば足し算の足し方が増加と追加って2種類あるんだけど、追加は後から増えるって意味だと教科書に書いてあるけど、その説明がもやもやする。
それで、違いを考えるとこれは

増加の足し算:末尾再帰。その場で簡約出来る
3 + 2 = (3 + 1) + (2- 1) = 4 + 1 = (4 + 1) + (1 -1) = 5 + 0 = 5

追加の足し算:再帰。基底部まで来てから簡約開始。リストの ++ 演算子的な動き。
2 + 3 = 1 + ((2 - 1) + 3) = 1 + (1 + ((1 - 1) + 3)) = 1 + (1 + (0 + 3)) = 1 + (1 + 3) = 1 + 4 = 5

みたいに、足し算作らないと気付かない違いを気付いて教えるのに役立ててる。
(+1/-1の代わりにsucc/pred関数の適用で考えた方が分かり易いかも)
585デフォルトの名無しさん
垢版 |
2024/11/02(土) 20:16:43.59ID:pIz290+w
>>583
そうなんだ。
そういうライブラリ頼みっぽい事なら、MathmacticaとかPythonのが良さそうなのにね。
金融商品だったら統計に強いRだってあるし。
なぜわざわざOCamlだったのやら…。
2024/11/03(日) 11:40:35.68ID:kGU90lSm
>>584
本スレ誘導
https://mevius.5ch.net/test/read.cgi/tech/1710585705/
2024/11/03(日) 17:33:41.03ID:4RaSizfZ
その手のはかなり昔からの話だしその頃pythonはそんな一般的ではない
588デフォルトの名無しさん
垢版 |
2024/11/03(日) 18:58:10.27ID:W/WQS3jI
>>586
え…。
Haskellを何に使ってるか聞かれたから答えたのに、そりゃ無いよ。
2024/11/06(水) 18:53:34.69ID:s8sk505y
semigroupoidsのAltからFunctor抜いたやつないのかな
catsのSemigroupK相当のやつ
2024/11/07(木) 02:17:24.00ID:w1FRCcDr
HackageもHaskellWikiもつながらねえ
攻撃でも受けたか
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況