関数型プログラミング言語Haskell Part34 (667レス)
関数型プログラミング言語Haskell Part34 http://mevius.5ch.net/test/read.cgi/tech/1639713446/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
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
303: デフォルトの名無しさん [] 2024/07/26(金) 05:41:42.96 ID:JmafwQnp >>302 それはそうで、IOモナドは他の言語例えばC言語系列だとhoge();の";"部分を数学的に表現しただけだから。 見た目だけなら x = x + 1; printf("%d\n", x); を return (x + 1) >>= \x -> print x do形式に直して x <- return (x + 1) print x ただ、x <- の部分は同名の別の変数をシャドーイングしてるので、厳密にメモリの動作まで合わせるならIORefを使う。 Haskellから見たらメモリもIO処理(ファイル処理含む)も等しく外部への入出力という扱い。 だから、実用としては意味が無い。 一見複数行に見えるコードがその気になれば全部一行に出来るという感動はあるが、それだけだ。 Haskellを仲立ちにして数学とプログラミング言語の関係を研究したりには便利。 逆に自力でIOモナドをPythonなどの適当な言語で実装して全てのコードを関数っぽく書ける。 (Pythonだと演算子の自作が出来ないのでf = (>>=)みたいな事になる) Haskellは便利だから使うものじゃない。 美しいから使うものだ。 あ、でも腐っても最新版は実行速度が結構上がってる(C#/Java並み)ので、選択肢から外される理由も減ってきた気がする。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/303
304: デフォルトの名無しさん [] 2024/07/26(金) 05:47:41.29 ID:JmafwQnp そこまで気づくと、Gtk2hsとかWin32とかのC/C++からのラッパーライブラリを関数型言語っぽくない!って拒否する気持ちが分からなくなる。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/304
305: デフォルトの名無しさん [] 2024/07/26(金) 06:16:02.54 ID:JmafwQnp あ、IOモナドの利点一応あった。 入力関数が他の関数の引数になったり、他の関数に関数合成出来ない。 Pythonのprint(input())みたいなコードや、len(input())みたいなコードは無理。 ここをしっかり分けることで、そういう変な使い方でのエラーは出ない。 もっと広い視点で言えば、入出力がIOモナドという型で分かれているのでネストの深いループの中でも入出力時に型を意識する必要があるので、そういうバグが大分減る。 手続き型関数型関係なく、ネストの深いループの中のデータが今どんな状態かを頭の中で把握出来る人はそう多くない。 だから、デバッグ時に解きほぐしていくんだが、関数型の方が切り分けしやすいかも? http://mevius.5ch.net/test/read.cgi/tech/1639713446/305
306: デフォルトの名無しさん [sage] 2024/07/26(金) 06:20:50.81 ID:EERDttnJ Halkellのその先が見たい? Rustにその答えが全て詰まっている http://mevius.5ch.net/test/read.cgi/tech/1639713446/306
307: デフォルトの名無しさん [] 2024/07/26(金) 08:11:21.54 ID:3P5OnSpM どなたか教えてください。 数学の構成や命題の証明に使うならば、HaskellとOCamlはどちらがよいでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/307
308: デフォルトの名無しさん [sage] 2024/07/26(金) 12:15:47.14 ID:f34zQmtT Rustは、メモリが見えすぎるのがイヤだー 大したもの書かないから、GCありでお願いしたい http://mevius.5ch.net/test/read.cgi/tech/1639713446/308
309: デフォルトの名無しさん [sage] 2024/07/26(金) 17:24:09.33 ID:HoH4md/R >>307 漠然としすぎ やり直し http://mevius.5ch.net/test/read.cgi/tech/1639713446/309
310: デフォルトの名無しさん [sage] 2024/07/26(金) 17:58:43.47 ID:dth0vnjc 数学の構成? http://mevius.5ch.net/test/read.cgi/tech/1639713446/310
311: デフォルトの名無しさん [] 2024/07/27(土) 00:29:15.86 ID:r3Qeb3es >>307 Coqという証明支援プログラミング言語をお使い下さい。 Haskellでも型プログラミングでゴリゴリ自力で命題の証明出来るそうですが、ある程度自動化されている専用言語の方が良いでしょう。 Coqはその中でも日本語情報が多いです。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/311
312: デフォルトの名無しさん [] 2024/07/27(土) 00:43:27.29 ID:r3Qeb3es >>306 実用言語、特に組み込み分野を置き換えるのに期待されてる。 特集記事が無くてもお題スレ見たいな、Rustで問題を解こう的な連載が続いてる辺り、 特にinterfaceの編集陣の熱量は感じる。 Haskellも先駆者の記事によればWeb向けとしては神言語だそうだ。 ただ、周辺環境が未整備なだけで。 (なので、自分で全部作るという茨の道を進む「覚悟」が必要だとか) 未だにそうではないことを祈るが…。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/312
313: デフォルトの名無しさん [] 2024/07/27(土) 00:53:19.48 ID:r3Qeb3es >>307 数の構成の方は、代数的型と基本的な方だと(一部)derivingで自動生成してもらえるから、Haskellはとても楽。 print関数で表示する部分だけでも自動生成してもらう価値はある。 (Read,Enum,Ordで生成されるのは確認済み) data Nat = Zero | Succ Nat deriving (Show) 連続関数はPCそのものの限界で無理。 代数的型でメモリの続く限りの範囲なら少数も作れるかもしれない。 (その前にリストなり何なりで10進数位取り記法を導入しないと、Natは無限進数なので小数点第1位が1万とか、無限に桁上がりしない構造になる) http://mevius.5ch.net/test/read.cgi/tech/1639713446/313
314: デフォルトの名無しさん [sage] 2024/07/27(土) 13:46:44.73 ID:f/jP9uGd >>307 結局こいつがなんの返信もしてない時点で適当に書き込んでたってことがわかるよ 真面目に相手をしないほうがいい http://mevius.5ch.net/test/read.cgi/tech/1639713446/314
315: デフォルトの名無しさん [] 2024/07/27(土) 16:19:23.58 ID:Z663WedI >>313 ありがとうございます。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/315
316: デフォルトの名無しさん [sage] 2024/07/27(土) 17:29:46.87 ID:sW1zoNGb >>311-313と>>314は同一人物だよ 騙されないで http://mevius.5ch.net/test/read.cgi/tech/1639713446/316
317: デフォルトの名無しさん [sage] 2024/07/27(土) 21:26:10.11 ID:wvv58UYW 知ってた http://mevius.5ch.net/test/read.cgi/tech/1639713446/317
318: デフォルトの名無しさん [] 2024/07/27(土) 23:34:35.07 ID:r3Qeb3es >>316 他人を語ったつもりもないけどね?(ID見れば分かるんだし) ちなみに>303-305も私だ。 1日2-3回くらいしか見に来ないから、書き込めることはまとめて書き込んだ結果です。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/318
319: デフォルトの名無しさん [sage] 2024/08/01(木) 12:24:32.72 ID:XzWUPxYY プロセッサメーカはAIブームと見るやこぞってAI処理特化プロセッサの開発競争 関数型言語に特徴的な処理に特化したプロセッサは誰も作ってくれない http://mevius.5ch.net/test/read.cgi/tech/1639713446/319
320: デフォルトの名無しさん [sage] 2024/08/01(木) 16:36:21.75 ID:rWBa8MOA それ必要か? http://mevius.5ch.net/test/read.cgi/tech/1639713446/320
321: デフォルトの名無しさん [] 2024/08/04(日) 23:21:47.06 ID:y1wQ9MUm >>319 スタックコンピューターは、Lispの時にぽしゃった。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/321
322: デフォルトの名無しさん [sage] 2024/08/05(月) 21:33:27.17 ID:FcOscapW 日本企業がLisp専用マシン作ったが第五世代コンピュータプロジェクトが💩で何らまともな成果をあげられなかったからね。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/322
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 345 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.014s