関数型プログラミング言語Haskell Part34 (667レス)
上下前次1-新
273: 2024/01/09(火)22:50 ID:3mg8b04T(1) AAS
ここ5年で発売されたHaskellの書籍で最も優れたものを紹介してください
274: 2024/01/12(金)10:55 ID:cAhPSGjh(1) AAS
オワコン
275: 2024/02/29(木)01:38 ID:d2gqoSk4(1) AAS
windowsにインストールできんみたいだなcabalがエラー?
まあwindowsでやるなってことだな
276: 2024/03/03(日)23:47 ID:9XAeTkis(1) AAS
モナドについて、床下配線に例えられたり、世界を受け取って副作用後の世界を返すと(IOモナドについて)語られたりするのが当時は分からなくて、考えた結果
何かから値を取り出し、関数適用して(その関数が)何かに値を戻す「動き」をモナドという。
って結論になっていたのだが、IOモナドも含めてもっと良い例えはないかと考えた結果、
モナドとは、アウトソーシング(外部依頼)を数学的に表現したもの。
という結論に至った。
省5
277: 2024/03/04(月)00:46 ID:XMYw3zR0(1/2) AAS
箱の中に処理したいデータが入ってるけど一緒にIOウイルスも入ってて
普通に箱を開けるとIOウイルスが外界に漏れて困るから
もう一回り大きい箱を用意してその中に箱とデータ処理装置を入れて
密封した上で内側の箱を開けてデータを処理する
そうすると箱の中に処理されたデータとIOウイルスが入った状態になる
これを延々と繰り返すのがIOモナド
ずっと前に毒ガスで考えた比喩だけど最近だとこっちだな
278: 2024/03/04(月)01:02 ID:vyClhVzf(1) AAS
ふーむ。
仮にアセンブラと1対1に対応したCの関数を全部Haskellから呼べるようにすると、出来ちゃうわけで。
(do形式だとまるっきりアセンブラコードに見えるHaskellコードの出来上がり)
そう考えて私のアウトソーシング説が出来た感じですね。
Haskellがモナドを採用したのは数学(関数型言語だったっけ?)の敗北ってどっかで読みましたし。
279: 2024/03/04(月)01:22 ID:XMYw3zR0(2/2) AAS
doの場合は1行ごとに新しい箱が作られてる
順序はたまに前後するけど内側の箱のデータは外側の箱でしか使えないから
必要な順序は保証される
外界の予測不能な状態を全部1つの箱の中に押し込んで
箱の外側の処理装置製造工場は全部予測可能(純粋)にしてる感じ
数学の敗北の意味はよく分からないけど
実用性のために予測不能な状態を持ち込んだことかな
280: 2024/03/06(水)10:29 ID:Yy7OLBEk(1) AAS
なんか大げさな例えを使いたがるやつが増えたなぁ
コーディングの上でなんの役に立つんだが
281: 2024/03/06(水)15:29 ID:soRPwZI7(1) AAS
「末尾呼び出ししたい関数をデータコンストラクタで置き換える」という仮説は役に立つけれども
(>>=)はコンストラクタではないという事実を見ただけで仮説を捨ててしまうことは科学的によくあること
282: 2024/04/10(水)04:46 ID:+L19CyUd(1) AAS
WindowsでghcupをインストールするのにWSLが不要になって
PowerShellだけで導入できるようになってる
283: 2024/04/13(土)09:43 ID:p3ysjEUv(1/2) AAS
rustスレで知ったけどhaskellを正格にして依存型を入れたidris(idris2)つー言語があるんだな
284: 2024/04/13(土)10:37 ID:VEwLcqlL(1) AAS
idrisまで興味があるのならHaskell/Elm/Rust/Zigの流れで開発されているRoc-langも見ておくと良い
特にstatic reference counting周り
285: 2024/04/13(土)22:46 ID:p3ysjEUv(2/2) AAS
色々知らないのがあった、ありがとう
static reference countingつーのが流行りなの
最近のhaskellもrustみたいな1回しかつかえない線形型(linera haskell?)が導入されてるね
286: 2024/04/14(日)08:32 ID:ZXz6cRZI(1) AAS
IOモナドの入力関数も、引数のない関数=変数と捉えると、実質線形型と同じ。
let x = 0 in return (x + 1) >>= x -> print x
こうすると変数xはシャドーイングによって同名の別の変数が生成される。
getLineとかの入力関数はHaskell(数学)の外で初期化される変数とも考えられる。
287: 2024/05/17(金)10:56 ID:kEVlBeR0(1) AAS
参照カウントは0になれば即座にデストラクタを呼び出す
つまり呼び出しを遅延しない
正格にすることと参照カウントを入れることは実質的に同じこと
288: 2024/05/18(土)22:55 ID:HEnIptqp(1) AAS
cabalのバージョン上がってたので
windowsで試したらちゃんと動いたわ
気にかけてくれてたんやな
289: 2024/06/11(火)20:46 ID:zqrBHeqN(1) AAS
IOモナドを拡張して、副作用をDBだけに限定したモナドとか作れないの?
290: 2024/06/20(木)02:22 ID:s4SRXQdp(1) AAS
いつの間にかHaskellがC#より速くなってた…。
外部リンク:nshinchan01.hateblo.jp
291: 2024/06/23(日)11:34 ID:1+Xj+JzS(1/2) AAS
すみません
GHCのWindows11対応についての質問ですが
「9.2」以前のGHCはWindows11をサポートしていないとの事ですが
外部リンク:gitlab.haskell.org
これはプログラムコンパイルをして
アプリケーションを生成できないだけで
コンソール内での実行や学習をする分には
「9.2」以前のGHCでも問題ないとの認識で大丈夫でしょうか。
ライブラリが9.0に対応していない物があり確認したいです。
292: 2024/06/23(日)21:13 ID:1+Xj+JzS(2/2) AAS
度々すみません。
GHCのWindows11対応についての質問の件
Windows11機にGHC8.xをインストールして試した所
問題なくコンソールから実行して
結果のデータファイル生成できました。
取り敢えずはこれでやってみます。
293: 2024/07/03(水)21:32 ID:FVo2vRsM(1) AAS
Functorってf : value -> valueの関数をfmap f : computation -> computationの関数に拡張してあれこれするけど、
そもそもvalue -> value関数がいらなくない?
わざわざvalue とcomputationを区別するから難しくなるのであって、
全部Functor適用した体で computation -> computationの拡張関数だけ使うように
設計しなおせばもっと普及するんじゃない?
294: 2024/07/03(水)23:29 ID:XPii5wC3(1) AAS
何を言っとるんじゃw
295(1): 2024/07/04(木)00:05 ID:CIK9cQRa(1/2) AAS
computationにしたら理論的にカプセル化されるから、例えばT computationで専用に作った関数はU computationでは使いまわしできない。
だから一般的にvalue -> valueで作ることでT computationでもU computationでも使いまわしできるようにしてるというのはわかる。
でも、そういうところが使いにくくて普及してないんじゃないかと思うから、T computationで専用で作った関数も特に何もせず
U computationの関数として使えるようになったらもっと使いやすくなると思う。
というかHaskellにはcomputationの概念は百害あって一利なしなんじゃまいか。
296: 2024/07/04(木)14:17 ID:PVQ//B0J(1) AAS
>>295
君の言うcomputationってどういう定義?
297(1): 2024/07/04(木)19:36 ID:CIK9cQRa(2/2) AAS
しらんがな。
一応マジレスすると、valueと似ているけどなんか違いがあるもの、ぐらいだろう。
自分の意図としては、”計算機”上で生成されたデータ。
計算機というのは電子計算機に限定されない。
電卓でもいいし、そろばんでもいいし、計算するときのもととなる
数の表現とかをcomputationと呼んでも差し支えないと思ってる。
たとえば、
value:27
に対して電子計算機上だと
11011(2)
省5
298(1): 2024/07/04(木)23:38 ID:iUDrYol2(1) AAS
>>297
computationはvalueの一つ
`5 + 3`がcomputation
`Just 8`もcomputation
299(1): 2024/07/05(金)00:05 ID:b38yqPqv(1/2) AAS
>>298
computationがvalueの一つだったら
概念的に computation ⊆ value
になるけど。
少なくとも拡張しているのだから
computation ⊇ value
にならないとおかしくない?
`5 + 3`がcomputationというのは前提にもよるからなんとも言えないと思う。
計算して8(=5+3)を導いたなら8はcomputationだと思うが。
たとえば、掛け算だったとして、九九を唱えてゴサンジュウゴで15を導き出したんなら計算してないからvalueだと思う。
300(1): 2024/07/05(金)00:53 ID:DkqpNxkH(1) AAS
>>299
おかしくないよ
OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
`九九を唱えてゴサンジュウゴの結果を導き出す`のがcomputation
導き出された結果と導き出す計算を区別して
301: 2024/07/05(金)02:03 ID:b38yqPqv(2/2) AAS
やっぱりHaskellスレにcomputationネタわかる人いたんだね。
>>300
>OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
ここは納得。
>導き出された結果と導き出す計算を区別して
なにか f: value -> computation型の関数を念頭に置いて
`f ()`はcomputationと言っているのでは?
意図を勘違いしているかもしれないですが、computationはあくまで導き出された結果でしょう。
それと、関数の返り値を導き出す計算をするにあたって出てくる効果を定義に含めようとしているように感じたのですが、
それはあくまで value -> computation型の関数を計算することに付随する性質であって
省3
302(1): 2024/07/25(木)23:56 ID:zdgCFOr2(1) AAS
stateやioモナドってHaskell以外でも使われてるの?
maybeやeitherは関数型でない言語でも同等のものがあるから分かるけど、stateやioはいまいち便利そうな感じがしない
上下前次1-新書関写板覧索設栞歴
あと 365 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.030s