関数型プログラミング言語Haskell Part34 (679レス)
関数型プログラミング言語Haskell Part34 http://mevius.5ch.net/test/read.cgi/tech/1639713446/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
233: デフォルトの名無しさん [] 2023/09/16(土) 21:25:49.38 ID:6682wM15 等価判定演算子では順番を問わないが、 記法としては順番によるインデックスアクセスもできる、が便利だと思うのですが 一番基礎的な集合の一つである自然数が順番を重視して扱うように大半の集合は順序を整頓して書かないと実用上不便ではないでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/233
234: デフォルトの名無しさん [sage] 2023/09/16(土) 23:06:28.20 ID:XG1/1lYn 順番がないやつと順番があるやつは なぜ対等な関係ではなく前者が一般的で後者が特殊だと言われるのか? 逆に、複素数はなんで虚部があるやつが一般的で虚部がないやつが特殊なのか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/234
235: デフォルトの名無しさん [] 2023/09/16(土) 23:13:33.62 ID:6682wM15 数学的概念として等価だったりどちらが特殊とか言えないのは納得しています ただ、集合は順序を維持して記述するようにしたほうが明らかに認知的負荷が少なく、数学的記法でも多くの場合でそうなっていると思うのですが、 多くの言語で組み込み型の集合がそうなっていないのはどのような思想によるものでしょうか?という質問です http://mevius.5ch.net/test/read.cgi/tech/1639713446/235
236: デフォルトの名無しさん [sage] 2023/09/17(日) 02:24:17.53 ID:yNwKlKA6 データ型としての起源としては 素集合データ構造から始まっているようなので 素である(disjoint)ことがまず要求されて 他に集合という名前が使われていないことから 素で非順序的なデータ型のことを集合型と呼ぶことになった模様 http://mevius.5ch.net/test/read.cgi/tech/1639713446/236
237: デフォルトの名無しさん [sage] 2023/09/17(日) 02:39:39.55 ID:XqeO/FaW 組み込み型とユーザー定義型の区別をなくす思想はある 最も正しいことを実現する思想ではなくミスをした場合の罪が軽くなる http://mevius.5ch.net/test/read.cgi/tech/1639713446/237
238: デフォルトの名無しさん [sage] 2023/09/17(日) 23:47:13.96 ID:70jB6wMR 初心者は++を使うけどなれたら<>を使ってる人が多い気がする SemiGroupであれさえすれば使える<>を使った方が汎用的にかけるからかな http://mevius.5ch.net/test/read.cgi/tech/1639713446/238
239: デフォルトの名無しさん [sage] 2023/09/18(月) 10:00:00.93 ID:E5yF50jH 俗説が廃れるのは「時代が変われば正しさが変わるから」ではありません 俗説が正解だった時代などない http://mevius.5ch.net/test/read.cgi/tech/1639713446/239
240: デフォルトの名無しさん [sage] 2023/09/19(火) 19:53:05.75 ID:QCYT99dv unixのtouchを実現したいのですが {-# LANGUAGE OverloadedStrings #-} import System.Posix.Files.ByteString main = do touchFile "hoge.txt" touch.hs: hoge.txt: touchFile: does not exist (No such file or directory) というエラーがでます ないのは当たり前でtouchで作ろうとしてるのですがバグがあるのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/240
241: デフォルトの名無しさん [sage] 2023/09/19(火) 19:54:00.31 ID:QCYT99dv unixのtouchを実現したいのですが {-# LANGUAGE OverloadedStrings #-} import System.Posix.Files.ByteString main = do touchFile "hoge.txt" touch.hs: hoge.txt: touchFile: does not exist (No such file or directory) というエラーがでます ないのは当たり前でtouchで作ろうとしてるのですがバグがあるのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/241
242: デフォルトの名無しさん [sage] 2023/09/19(火) 19:58:16.28 ID:QCYT99dv すみません、書き込むボタンの反応がなかったので連投になってしまいました http://mevius.5ch.net/test/read.cgi/tech/1639713446/242
243: デフォルトの名無しさん [sage] 2023/09/19(火) 20:14:24.31 ID:a563RtWW touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ http://mevius.5ch.net/test/read.cgi/tech/1639713446/243
244: デフォルトの名無しさん [sage] 2023/09/19(火) 20:14:45.64 ID:a563RtWW touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ http://mevius.5ch.net/test/read.cgi/tech/1639713446/244
245: デフォルトの名無しさん [sage] 2023/09/19(火) 20:18:27.88 ID:a563RtWW ありゃ俺も連投しちまったすまん なんか5ch重いっぽいね http://mevius.5ch.net/test/read.cgi/tech/1639713446/245
246: デフォルトの名無しさん [sage] 2023/09/20(水) 08:38:40.03 ID:I55f6i4N for i in * ; do touch anotherdir/$i ; done http://mevius.5ch.net/test/read.cgi/tech/1639713446/246
247: デフォルトの名無しさん [] 2023/09/20(水) 08:53:25.46 ID:I55f6i4N >>246(bash)でお茶を濁した perlが明日消えてなくなるらしいのでHaskellをPerlの代わりに使おうと思う 正規表現とグロブ、ファイル入出力はできた 他に何かあるかな http://mevius.5ch.net/test/read.cgi/tech/1639713446/247
248: デフォルトの名無しさん [sage] 2023/09/22(金) 12:15:07.45 ID:NjV4q9P3 数値のリストl=[1,10,3]みたいなのを 1 10 3と出力したい。末尾には空白はあってはならないとする 最初 putStrLn $ intersperse ' ' $ foldl' (\acc x -> acc ++ show x) [] l こんなのを考えたのだが10も1 0と分解されてしまった しかたなく泥臭いこんなコードを書いたのだがもっといい方法はないだろうか mp [] = return () mp [x] = putStrLn $ show x mp (x:xs) = do putStr $ show x ++ " " mp xs http://mevius.5ch.net/test/read.cgi/tech/1639713446/248
249: デフォルトの名無しさん [sage] 2023/09/22(金) 13:06:36.18 ID:8SLDLfd5 https://jutememo.blogspot.com/2008/06/haskell-join-listdata-intersperse.html http://mevius.5ch.net/test/read.cgi/tech/1639713446/249
250: デフォルトの名無しさん [sage] 2023/09/22(金) 14:01:02.50 ID:NjV4q9P3 putStrLn $ intercalate " " $ map show l これでいけました http://mevius.5ch.net/test/read.cgi/tech/1639713446/250
251: デフォルトの名無しさん [sage] 2023/09/22(金) 14:01:12.58 ID:W8j4O+ex 泥臭いだけで罪があるかのように日常的に刷りこまれてるから 本当の有罪確定したやつは絶対許してもらえないよな そりゃそうだよな http://mevius.5ch.net/test/read.cgi/tech/1639713446/251
252: デフォルトの名無しさん [sage] 2023/09/27(水) 15:30:51.70 ID:9Ywamwi5 {-# LANGUAGE BinaryLiterals #-} この拡張をいれても let t = read "0x111" :: Int -- 16進数にパースできる 273 let s = read "0b111" :: Int -- 2進数にはパースできない 微妙に不便だ http://mevius.5ch.net/test/read.cgi/tech/1639713446/252
253: デフォルトの名無しさん [sage] 2023/09/27(水) 17:59:16.99 ID:k7PwLxD8 readが定義されたモジュールは別のLANGUAGEってこと? http://mevius.5ch.net/test/read.cgi/tech/1639713446/253
254: デフォルトの名無しさん [sage] 2023/10/11(水) 15:16:15.28 ID:1pnnvG+R groupBy (\a b -> snd a == snd b) これを括弧を使わずにかけますか groupBy ((==)<$>snd<*>snd)だと(a,b)->Boolとなって(a,b)->(c,d)->Boolとは型があいませんでした http://mevius.5ch.net/test/read.cgi/tech/1639713446/254
255: デフォルトの名無しさん [sage] 2023/10/11(水) 17:39:54.48 ID:Fikp0OWy >>254 import Data.Function groupBy ((==) `on` snd) 結局かっこは使うのだけど、これがあなたの求めるものでしょうか http://mevius.5ch.net/test/read.cgi/tech/1639713446/255
256: デフォルトの名無しさん [sage] 2023/10/11(水) 22:05:36.63 ID:1pnnvG+R 括弧を使わずにじゃなくてラムダを使わずにでした まさに欲しかったのそれです ありがとうございました!! http://mevius.5ch.net/test/read.cgi/tech/1639713446/256
257: デフォルトの名無しさん [sage] 2023/10/18(水) 05:38:40.90 ID:vCrdR6l9 QuickCheckを勉強しているんですが Runtime Errorを検出したくて次のように書きました anの要素は2以上n以下で複数回出現します testcaseがほとんどdiscardされるのですがリストをchoose (2,n)とかで生成するには どうしたら良いのでしょうか verboseCheckを指定してみるとskippedだらけなのですが スキップしたやつは表示しないで欲しい prop :: Positive Int -> [Int] -> Property prop (Positive n) an = all (>=2) an && length an == n ==> monadicIO $ do a' <- run (solve n an) assert True http://mevius.5ch.net/test/read.cgi/tech/1639713446/257
258: デフォルトの名無しさん [sage] 2023/11/16(木) 18:41:54.01 ID:wXoixzgD 岡部健、復活したよ! エックス内を “Ken140291“ で探してみて下さい。 最近登録したばかりの様です。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/258
259: デフォルトの名無しさん [sage] 2023/11/18(土) 16:03:54.22 ID:sLhTkQlu 自分で書き込んでいるのでは・・・。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/259
260: デフォルトの名無しさん [sage] 2023/11/19(日) 15:31:44.23 ID:/inwpH7b >>248 init $ folfl (\a x -> a++[show x]++“ “) ““ [3,10,1] でOK http://mevius.5ch.net/test/read.cgi/tech/1639713446/260
261: デフォルトの名無しさん [sage] 2023/11/20(月) 09:46:08.35 ID:sZ0M6Dsh >260 打ち間違えた! lnlt$foldl(\a x->a ++show x++" ")[][1,10,3] が正解。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/261
262: デフォルトの名無しさん [sage] 2023/11/20(月) 14:32:44.66 ID:4MiKC4cJ >>258 ぎゃははははははは http://mevius.5ch.net/test/read.cgi/tech/1639713446/262
263: デフォルトの名無しさん [sage] 2023/11/20(月) 21:45:30.49 ID:Jf1v4QK8 https://github.com/ken-okabe/functional-programming-from-scratch-ja#before > Unkown(気づいてない) ウンコウンわろた。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/263
264: デフォルトの名無しさん [sage] 2023/11/20(月) 23:57:47.37 ID:N43MAaAU スレチ http://mevius.5ch.net/test/read.cgi/tech/1639713446/264
265: デフォルトの名無しさん [sage] 2023/11/21(火) 12:01:48.14 ID:MS7pneIs 毛の壁くん復活してたのか!! http://mevius.5ch.net/test/read.cgi/tech/1639713446/265
266: デフォルトの名無しさん [sage] 2023/11/21(火) 12:21:46.16 ID:W0g+S6dW https://archive.md/m7008 毛の壁(岡部健)についてはここが詳しい http://mevius.5ch.net/test/read.cgi/tech/1639713446/266
267: デフォルトの名無しさん [sage] 2023/11/22(水) 15:27:17.26 ID:1OepVPCl こんなコードがあるのですが cumsum k = unfoldr next . (,) 0 where next :: (Int, [Int]) -> Maybe (Int, (Int, [Int])) next (acc, x : xs) | acc <= k - x, acc' <- acc + x = Just (acc', (acc', xs)) next _ = Nothing acc <= k-xはわかるのですが、acc' <- acc + xというのはどういう文法なのですか? リスト内包表記でもないですし条件式の部分でモナドを扱ってるわけではないですよね? http://mevius.5ch.net/test/read.cgi/tech/1639713446/267
268: デフォルトの名無しさん [sage] 2023/11/22(水) 16:31:30.12 ID:PuIW3qrN >>267 パターンガードかな https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%BC%E3%83%89_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0) http://mevius.5ch.net/test/read.cgi/tech/1639713446/268
269: デフォルトの名無しさん [sage] 2023/11/23(木) 07:24:43.49 ID:WRBO39fy <-はパターンガード修飾子と呼ぶのですね 初めて知りました ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1639713446/269
270: デフォルトの名無しさん [sage] 2023/11/24(金) 17:42:26.91 ID:V3Fz2AWZ 毛の壁のTwitterの新しいアカウントは Ken140291 FPFSstutorial leadmove3648637 です!! http://mevius.5ch.net/test/read.cgi/tech/1639713446/270
271: デフォルトの名無しさん [] 2023/12/04(月) 12:27:24.28 ID:GjmDAseS >>270 ぎゃっはっはっはっはw http://mevius.5ch.net/test/read.cgi/tech/1639713446/271
272: デフォルトの名無しさん [sage] 2024/01/01(月) 20:17:21.69 ID:DcfOChZv mapAccumL/Rの使いどころがよくわからないのですが どういう時に使うとかの指針ってありますか? http://mevius.5ch.net/test/read.cgi/tech/1639713446/272
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
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
323: デフォルトの名無しさん [] 2024/08/11(日) 17:42:41.08 ID:7wNJGHOt 麓から山頂を目指す foldl: 徒歩で登り切ったら滑り台で向こう側へ降りてゴンドラで再び山頂へ戻りゴール foldr: ゴンドラでいきなり山頂へ。そこから向こうの麓まで滑り台で降り、そこから山頂へ徒歩で戻る。但しある場合は滑り台を途中で降りてそこから山頂へ徒歩で戻ってゴールにしてもよい こういうこと? http://mevius.5ch.net/test/read.cgi/tech/1639713446/323
324: デフォルトの名無しさん [] 2024/08/12(月) 21:44:35.95 ID:EAbaqMlq Preludeのライブラリドキュメントのページが最新のChromeでよく応答なしになるんですが! 現代PCでもプチフリを起こすページとか凄いですね!(怒) http://mevius.5ch.net/test/read.cgi/tech/1639713446/324
325: デフォルトの名無しさん [] 2024/08/13(火) 01:44:03.00 ID:3Ko8/FbA >>324 hoogle使いんさい。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/325
326: デフォルトの名無しさん [] 2024/08/13(火) 01:45:16.10 ID:3Ko8/FbA >>323 foldl = 末尾再帰を高階関数化 foldr = 普通の再帰を高階関数化 http://mevius.5ch.net/test/read.cgi/tech/1639713446/326
327: デフォルトの名無しさん [sage] 2024/08/15(木) 10:15:40.11 ID:oieuoNWz yesod を導入しようとして調べているのですが、今は stack 前提で cabal での利用は考えられていないのでしょうか? 導入記事では cabal の記述がありますが、 yesod init すると stack new 使えと表示が出ます。 http://mevius.5ch.net/test/read.cgi/tech/1639713446/327
328: デフォルトの名無しさん [sage] 2024/08/15(木) 10:30:38.08 ID:oieuoNWz yesod-bin 1.6.2.3 です http://mevius.5ch.net/test/read.cgi/tech/1639713446/328
329: デフォルトの名無しさん [sage] 2024/08/19(月) 21:35:37.73 ID:CkMOJkdv rambda.jsのfold相当の関数を教えてください http://mevius.5ch.net/test/read.cgi/tech/1639713446/329
330: デフォルトの名無しさん [sage] 2024/08/24(土) 05:56:24.20 ID:WHJg2+SV 今ってghcupの時代じゃないの? 久しぶりにHaskell書こうと戻ってきた浦島太郎がstackを最新にしようと思ったら ghcupとか紹介されてミーハーだから飛びついたわ http://mevius.5ch.net/test/read.cgi/tech/1639713446/330
331: デフォルトの名無しさん [sage] 2024/08/24(土) 07:38:35.09 ID:E4GXjFrz Gカップ、ハアーハアー http://mevius.5ch.net/test/read.cgi/tech/1639713446/331
332: デフォルトの名無しさん [sage] 2024/08/28(水) 21:41:00.96 ID:HNkudrYA Youtubeでしばらくの間丁寧にHaskellを解説していた人が ある日「やってらんね、俺はもうHaskellでプログラミングしない」と宣言してHaskellから離れたのを見て 所詮その程度の言語なんだなとガッカリした http://mevius.5ch.net/test/read.cgi/tech/1639713446/332
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 347 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.023s