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