関数型プログラミング言語Haskell Part34
1 :デフォルトの名無しさん :2021/12/17(金) 12:57:26.37 ID:NPioGyUL.net 関数型プログラミング言語 Haskell について語るスレです。 Haskell Language(公式サイト) https://www.haskell.org/ 日本Haskellユーザーグループ - Haskell-jp https://haskell.jp/ 前スレ 関数型プログラミング言語Haskell Part33 https://mevius.5ch.net/test/read.cgi/tech/1581326256/
2 :デフォルトの名無しさん :2021/12/17(金) 12:57:57.45 ID:NPioGyUL.net 過去スレ一覧 32) https://mevius.5ch.net/test/read.cgi/tech/1548720347/ 31) https://mevius.5ch.net/test/read.cgi/tech/1506447188/
3 :デフォルトの名無しさん :2021/12/17(金) 12:58:25.90 ID:NPioGyUL.net 30) http://mevius.2ch.net/test/read.cgi/tech/1484491434/ 29) http://peace.2ch.net/test/read.cgi/tech/1436869629/ 28) http://peace.2ch.net/test/read.cgi/tech/1428535861/ 27) http://peace.2ch.net/test/read.cgi/tech/1420718555/ 26) http://peace.2ch.net/test/read.cgi/tech/1406436392/ 25) http://peace.2ch.net/test/read.cgi/tech/1393313450/ 24) http://toro.2ch.net/test/read.cgi/tech/1382705669/ 23) http://toro.2ch.net/test/read.cgi/tech/1376111807/ 22) http://toro.2ch.net/test/read.cgi/tech/1364009659/ 21) http://toro.2ch.net/test/read.cgi/tech/1358702176/ 20) http://toro.2ch.net/test/read.cgi/tech/1350428908/ 19) http://toro.2ch.net/test/read.cgi/tech/1340760070/ 18) http://toro.2ch.net/test/read.cgi/tech/1331902463/ 17) http://toro.2ch.net/test/read.cgi/tech/1325510368/ 16) http://toro.2ch.net/test/read.cgi/tech/1317958045/ 15) http://hibari.2ch.net/test/read.cgi/tech/1310199414/ 14) http://hibari.2ch.net/test/read.cgi/tech/1299385928/ 13) http://hibari.2ch.net/test/read.cgi/tech/1286706874/ 12) http://hibari.2ch.net/test/read.cgi/tech/1272536128/ 11) http://pc12.2ch.net/test/read.cgi/tech/1252382593/ 10) http://pc12.2ch.net/test/read.cgi/tech/1231861873/ 09) http://pc11.2ch.net/test/read.cgi/tech/1211010089/ 08) http://pc11.2ch.net/test/read.cgi/tech/1193743693/ 07) http://pc11.2ch.net/test/read.cgi/tech/1174211797/ 06) http://pc11.2ch.net/test/read.cgi/tech/1162902266/ 05) http://pc8.2ch.net/test/read.cgi/tech/1149263630/ 04) http://pc8.2ch.net/test/read.cgi/tech/1140717775/ 03) http://pc8.2ch.net/test/read.cgi/tech/1076418993/ 02) http://pc2.2ch.net/test/read.cgi/tech/1013846140/ 01) http://pc.2ch.net/tech/kako/996/996131288.html
4 :デフォルトの名無しさん :2021/12/17(金) 12:58:57.67 ID:NPioGyUL.net 関連サイト (英語) Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり) https://en.wikibooks.org/wiki/Haskell Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版) http://learnyouahaskell.com/chapters Real World Haskell (同名書籍の無料オンライン版) http://book.realworldhaskell.org/read/ (以下、日本語) Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション) https://wiki.haskell.org/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97 Haskell - Wikibooks (上記Wikibooksの同タイトル日本語版。多くの項目が未編集) https://ja.wikibooks.org/wiki/Haskell A Gentle Introduction to Haskell, Version 98 http://www.sampou.org/haskell/tutorial-j/ Haskell のお勉強 http://www.shido.info/hs/ お気楽 Haskell プログラミング入門 http://www.nct9.ne.jp/m_hiroi/func/haskell39.html 本物のプログラマはHaskellを使う http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/ [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! http://gihyo.jp/dev/feature/01/functional-prog
5 :1 :2021/12/19(日) 03:10:48.56 ID:7grgB8Yx.net あの伝説の岡部健が復活!! https://twitter.com/ken74047924 (おまけ情報) Quoraでも有名だった岡部健、2021年12月にTwitterのアカウントまたまた永久凍結される。 当時のアーカイブは多少ネットに残ってるらしい https://twitter.com/KenSmooth5 https://i.imgur.com/Ws4RM1o.png https://twitter.com/5chan_nel (5ch newer account) (deleted an unsolicited ad)
6 :デフォルトの名無しさん :2021/12/20(月) 09:52:21.45 ID:ZumN5JOf.net https://qiita.com/mod_poppo/items/a6317294ba1e39b1c3b3 コメント欄に毛の壁現る
7 :デフォルトの名無しさん :2021/12/20(月) 12:58:58.75 ID:oUGNvHUz.net >>6 また実名っぽいの出して荒らしてんのかあいつ
8 :デフォルトの名無しさん :2021/12/20(月) 20:14:33.16 ID:ceMzU2Ib.net 自分で召還しといて荒らしとかいうのやめようや。
9 :デフォルトの名無しさん :2021/12/20(月) 20:19:16.57 ID:NqO2QdlG.net Haskellの話じゃないんだからどこか他でやってくれ
10 :デフォルトの名無しさん :2021/12/20(月) 20:33:12.76 ID:ceMzU2Ib.net Excel VBAのスレでやるのか?
11 :デフォルトの名無しさん :2021/12/20(月) 21:06:24.55 ID:NqO2QdlG.net 毛の壁から国民を守る党 72議席目 https://lavender.5ch.net/test/read.cgi/net/1615613906/
12 :デフォルトの名無しさん :2021/12/20(月) 23:17:06.32 ID:ceMzU2Ib.net 72スレ目って。 自分では気が狂ってることがわからないんだろな。 国民を守らなければ!って使命感があふれ出して72スレ。
13 :デフォルトの名無しさん :2021/12/21(火) 00:08:10.53 ID:S6JYHyb7.net ご本人?
14 :デフォルトの名無しさん :2021/12/21(火) 06:55:32.78 ID:t7n7AMl6.net a :: Int -> Int a 0 = 50^2 a n = round (sqrt (realToFrac n):: Float) 型変換なみだでてきた ghciプロンプトだと round (sqrt 50) 7 ちゃんと出るじゃねーか...
15 :デフォルトの名無しさん :2021/12/21(火) 10:17:23.12 ID:WtPb4PP+.net >>6 酷すぎる
16 :デフォルトの名無しさん :2021/12/21(火) 11:09:52.33 ID:+QFtbkZ1.net >>14 ghci 上で :t round . sqrt として a :: Int -> Int との違いを比べてみるとよいよ (あとリテラルの50はIntではない) 数(特に浮動小数点数)まわりの関数でなみだ出てくるのは多少同意
17 :デフォルトの名無しさん :2021/12/21(火) 15:10:59.44 ID:XC3saJz0.net >>6 こ、これはもしや・・・・あの!?
18 :デフォルトの名無しさん :2021/12/23(木) 17:28:45.18 ID:iaSGtOUq.net ken80297274 岡部さんのサブアカウント発見
19 :デフォルトの名無しさん :2021/12/23(木) 20:30:31.33 ID:hyDq6lCn.net どんな人生を生きたら実名でこんな攻撃的な調子でtwitter上で不特定多数に絡みに行こうと思えるんだ 実際実社会で会ったらどんな感じの人なんだろう
20 :デフォルトの名無しさん :2021/12/23(木) 21:25:57.12 ID:cmpFYqPS.net 岡部健さんはアメリカのUCLA卒業と書いていたらしいので、情報技術の素養はあるんじゃないか? https://twitter.com/ohagiya/status/226163166067949568 http://archive.ph/1oA1C >>「まああれでUCLAとかよく嘘こけるよねー。 」 >とは、これも、僕が学歴詐称しているという野田憲太郎の妄想にはじまる >「バッシングに用いる好物のネタ」であり、もちろんそのような学歴詐称の事実などないし、それも名誉毀損として刑事告訴の要件に入っている。 (deleted an unsolicited ad)
21 :デフォルトの名無しさん :2021/12/23(木) 21:27:02.59 ID:cmpFYqPS.net Twitterで ohagiya UCLA で検索すると岡部健さんの学歴にけちを付けてる人が出てくるね
22 :デフォルトの名無しさん :2021/12/23(木) 23:57:52.67 ID:MjSWMWRR.net ハリウッド映画でよくある、酒場でのウィットに富んだ大人の会話の一種では? 0時を過ぎると、酒瓶を割って拳で語り合う・・・いまその状態では? 夜が明けると、互いを理解し絆が深まる。 そして生涯の友となるのでは?
23 :デフォルトの名無しさん :2021/12/27(月) 09:38:29.17 ID:hZ17KgJk.net https://ken-okabe .hatenablog .com/entry/2021/12/20/134121 『結局は、あろうことか、当時のQiita運営がこういう匿名炎上目的のアカウントの思惑に乗っかる形で、僕の反論コメントを消してしまったので』 と書いてるので、当時nonstarterさんの記事のコメント欄に出没していたのは岡部健本人だったのかな。 ことあるごとに「岡部氏」って別人のように書いてたのにね
24 :デフォルトの名無しさん :2021/12/28(火) 01:15:18.08 ID:e4meyx5L.net 高度IT人材、富士通は最大年収3500万円へ 「富士通年収3500万!」日本のIT企業の年収も、高額化してきました AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ 【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材 来年度から副業解禁 人材多様化へ―大同生命次期社長 副業・兼務の解禁から4年、ロート製薬流で進めるキャリア支援 ロート製薬が副業をいち早く導入した「超人間的」な理由 ロート製薬会長が「副業を受け入れない会社は発展しない」と断言する理由
25 :デフォルトの名無しさん :2021/12/28(火) 08:27:45.42 ID:FaceSKSV.net https://mobile.twitter.com/matusita2012/status/172883696091791361 (deleted an unsolicited ad)
26 :デフォルトの名無しさん :2021/12/31(金) 02:20:27.03 ID:aP8qPSMg.net シンプルなワードカウント書いたけど関数合成でワードカウントが組めません " ab ccc dd "を[0,1,1,0,1,1,1,0,1,1,0]みたいなリストに変換して ワードの数は3みたいな 以下普通に書いたワードカウント spwc4 :: [Char] -> Int spwc4 s = wc4 s 0 0 where wc4 :: [Char] -> Int -> Int -> Int wc4 [] l c = (c + (if l == 0 then 0 else 1)) wc4 (x:xs) l c | x == ' ' || x == '\t' || x == '\n' || x == '\r' = if l == 0 then wc4 xs 0 c else wc4 xs 0 (c+1) | otherwise = wc4 xs (l+1) c 文字列を chkspand :: Char -> Int chkspand c = if c == ' ' || c == '\t' || c == '\n' || c == '\r' then 0 else 1 に与えて[0,1,1,0,0,1]みたいなリストに変換 これを関数合成でカウントすると内部状態を保持する必要で困惑中 wordcount . map chkspand $ " asas df df" みたいな書き方がしたい
27 :デフォルトの名無しさん :2021/12/31(金) 03:53:55.07 ID:aP8qPSMg.net 自己解決したけどデータが多いとスタックが... >countword . countchars . map chkspand $ " 1313 13 111 rfr fdf" >5
28 :デフォルトの名無しさん :2021/12/31(金) 14:45:34.52 ID:KqmzC1Ir.net リストみたいなただのデータコンストラクタだったら、いくら長くてもスタック関係ないのに リストをfoldrしたような物が出てくるとスタックでみんな躓く
29 :デフォルトの名無しさん :2021/12/31(金) 14:58:51.96 ID:bqUePCKa.net スクラッチで書くなら(0:)で0を追加して(0:1:_)をカウントしていくんだろうな chkspand :: Char -> Int chkspand c = if c == ' ' || c == '\t' || c == '\n' || c == '\r' then 0 else 1 wordcount = let iterator [ ] = 0 iterator ( 0: 1: xs ) = 1 + ( iterator xs ) iterator ( x : xs ) = iterator xs in iterator . ( 0 : ) main = do print $ map chkspand $ " asas df df" print $ wordcount . map chkspand $ " asas df df"
30 :デフォルトの名無しさん :2021/12/31(金) 16:30:35.01 ID:aP8qPSMg.net >>29 wc5 = let iterator [] = 0 iterator (0:1:xs) = 1 + (iterator xs) iterator (x:xs) = iterator xs in iterator . ((0::Int) :) wc5 . map chkspand $ "0 hushjuh hhuj 89 546456" 5 上手く行きました イテレータのパターンマッチ目からウロコ
31 :デフォルトの名無しさん :2021/12/31(金) 20:42:25.11 ID:aP8qPSMg.net >>30 のこれ iterator (0:1:xs) = 1 + (iterator xs) 内部で 1+1+1+1+...が積みあがって最後に計算されるの?
32 :デフォルトの名無しさん :2021/12/31(金) 20:58:03.01 ID:bqUePCKa.net >>31 それは処理系のimplement依存だから一概には言えないけど多分stack上に(1+)関数が乗っていって最後に確定した0が入ってから計算しそうな気がする
33 :デフォルトの名無しさん :2021/12/31(金) 21:10:21.51 ID:aP8qPSMg.net >>32 了解しました
34 :デフォルトの名無しさん :2022/01/02(日) 20:44:02.99 ID:OOMiLRw0.net >>30 ちょと改変 wc6 = let iter n [] = z iter n (False:True:xs) = let n' = n + 1 in seq n' $ iter n' xs iter n (x:xs) = iter n xs in (iter 0) . (False :) wcc = wc6 . map chkspand2 これのseq n'が効けば+1+1+1+1が積みあがらないはず
35 :デフォルトの名無しさん :2022/01/02(日) 21:09:40.82 ID:OOMiLRw0.net ghciで確認 >>30 はスタックオーバーフローで止まった >>34 は止まらないからctr-Cで止めた
36 :デフォルトの名無しさん :2022/01/03(月) 00:17:58.15 ID:eS7vipFo.net OOPでも、整数を他のオブジェクトとは全然違う形式にしないと 計算が遅過ぎてダサくなるよね 逆にオブジェクトの方を整数と同じようなGC非依存みたいな構造にする手もあるか
37 :デフォルトの名無しさん :2022/01/03(月) 08:08:25.82 ID:hLrwvjQQ.net まぁコレは趣味による Haskellでは性能面より可読性を重視するからな それも使う人次第だけど >>34 のようにすればメモリも時間も節約できるけど可読性は失われる どこまで我慢するかだけどオレは計算時間もメモリも線形までなら我慢して可読性を重視する >>34 だと入力に比例して要求されるスタック量が増える 線形までならしょうがないと思う どのみち入力が大きくなるにつれてシステムが大きくなるのは元々しょうがないんだしその時の比例定数の違いまでなら我慢する 今具体的にやりたいことがあってその線形オーダーの無駄すら許されない状況なら考えるけど
38 :デフォルトの名無しさん :2022/01/03(月) 11:20:12.64 ID:TEX8BSo6.net >>37 今回のお題はワードカウント、ファイルサイズがギガになる場合を想定 スタックなりヒープなりを消費しない手法は?です Cなどで実装した場合、ループでカウントして再帰なしスタックもヒープも消費なしとか(可読性は...) 他にマルチスレッドで分割カウントした時の手法とか(ディスクのIOで律速か)
39 :デフォルトの名無しさん :2022/01/03(月) 12:59:34.38 ID:hLrwvjQQ.net 今回の場合1ワード消費するたびにスタック一個消費するから必要なメモリリソースが倍以上になる可能性もあるから意味はあるかな 特にコレは>>34 の方法だと必要なメモリリソースがデータ保持する分を除けばlogオーダーになるからな しかも読み込んだデータは順次捨てていけるし(そこまでのカウント結果を保持しないといけないので有限オートマトンでは無理だけど有限オートマトン以上、チューリング完全以下、こういう計算クラスは名前ついてるのかな?) 個人的にはこういうときメモリ線形、時間線形までは許さないと大した事できないことが多いのでそれ以上のこだわりは持たないようにしてる 数学的研究対象とかにするなら別だけど
40 :デフォルトの名無しさん :2022/01/03(月) 15:29:08.17 ID:TEX8BSo6.net >>39 今回なにを確認したのか それは、Cで組むような単純繰り返しを同じ感覚でヒャッハーとhaskellの遅延評価で行うと ヤバイと言う教訓とそれを回避する手法
41 :デフォルトの名無しさん :2022/01/04(火) 16:11:04.31 ID:h755Av8k.net Haskellを身に付けた人は他の言語も使えると予想しますが、いくつもの言語の中からHaskellを選んで プログラムを書くのはどんな課題、問題を解決したいときなんでしょうか
42 :デフォルトの名無しさん :2022/01/04(火) 16:44:18.80 ID:HuVGMWib.net 課題が「ガベージをコレクトしたい」だけだったとしても じゃあ静的型は不要だとかジェネリクスは不要だとはならない だから課題と関係ない部分を作り込む
43 :デフォルトの名無しさん :2022/01/05(水) 10:28:01.47 ID:imDyM2+l.net Twitterの検索で @ohagiya @kenokabe と入れると楽しいよな
44 :デフォルトの名無しさん :2022/01/11(火) 17:47:50.88 ID:rZde0CTm.net >>43 ひどすぎるだろこれ 可哀想に
45 :デフォルトの名無しさん :2022/01/14(金) 10:48:22.13 ID:3PF6dXYX.net 最新の怪文書も読んだけどさ、毛の壁は毎回毎回威勢だけは良いんだよなw たとえば「ちくわは民事でもやる!」「ちくわはもう詰み」(9年前) 「ちくわはもう死に体」(7年前)とかさ。 死に体なのに、つい最近もブログで恨み節w ネズミ一匹、始末できないなんてだらしがないな
46 :デフォルトの名無しさん :2022/01/15(土) 18:49:30.83 ID:chCIM2fB.net 質問です array と List の性能の差がいまいちピンと来ません 何か「この例ではどう考えてもarray、ほらこんなに性能に差が出る」って例ご存知ないですか?
47 :デフォルトの名無しさん :2022/01/16(日) 12:22:44.80 ID:f2QwXzzi.net 質問です 何かの文章で square x = x*x print $ square $ square 3 のようなプログラムをHaskell は square $ square 3 → square ( square 3 ) → ( square 3 ) * ( square 3 ) → ( 3 * 3 ) * ( 3 * 3 ) のようになる コレを避けるためにseqを使えばよいとあったのですが試しに import Debug.Trace square x = x * x const3 = trace "*" 3 main = do print $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ square $ const3 みたいなプログラムで試してみました もし説明通りならconst3が2^15回呼ばれて*がいっぱい出てきそうですが、やってみると*は一個しか出てきません コレは何故ですか? ちなみにghcです ghcがconst3の結果を自分で勝手に“メモ化”してよきにはからってくれているんでしょうか?
48 :デフォルトの名無しさん :2022/01/16(日) 13:40:56.61 ID:rC9oNTrC.net メモ化は独自実装ではなく仕様 何かの文章は嘘 でも騙されたことがないので被害が存在しないし、加害者も存在しない
49 :デフォルトの名無しさん :2022/01/16(日) 14:36:08.72 ID:f2QwXzzi.net >>48 仕様なんですか? Language Reportかなんかに書いてありますか?
50 :デフォルトの名無しさん :2022/01/16(日) 14:39:15.35 ID:f2QwXzzi.net 何かの文章は "ウォークスルー Haskell" というやつでした http://walk.northcol.org/haskell/eval-strategies/ 3 ではなく 1 + 2 でやってました
51 :デフォルトの名無しさん :2022/01/16(日) 18:39:45.50 ID:ZlAL8rfa.net seqだと結果はどうなるんですか?
52 :デフォルトの名無しさん :2022/01/16(日) 18:54:16.95 ID:f2QwXzzi.net >>51 square x = x * x を square x = seq x $ x * x にして明治的に“xを評価してからx*xを計算せよ”に変えるともちろん*ひとつです それは納得いきます ウォークスルーHaskellにもそうなると書いてあるしHaskell Language Report 2010にもseqで正格評価になると書いてあります なのでコレは納得いくんですがseqなしの場合の動作が文書と異なるように見えます もちろん参照透過性があるので一度計算した結果をメモ化して再利用しても同じ答えにならないといけないので答え自体は同じになるわけですけど コレはたまたまGHCの開発者が優秀でHaskellの標準動作としては保証されない事までやってくれてるだけなのか、標準動作としてメモ化しないといけないことになってるのかどっちだろうと 今のところ今自分が勉強してるプログラムにはseq入れて明治的に正格評価してもらってるんですけど標準でメモ化してくれるなら消せるしスッキリするし、あるいは明示しないと他の処理系だとしてくれないなら残しとかないといけないし
53 :デフォルトの名無しさん :2022/01/17(月) 04:24:56.47 ID:FNscPcIY.net 銀の弾丸のHaskellをIT企業が採用したら市場を席捲できるのでは??? 実際そうなると思う?
54 :デフォルトの名無しさん :2022/01/17(月) 13:17:04.94 ID:3dpBVALW.net Windows10にVSCode入れて、Haskellを遊ぼうとしたけど上手く入らない。 コマンドラインで細かく入れて遊ぶしかないかな。
55 :デフォルトの名無しさん :2022/01/18(火) 00:23:47.53 ID:1uCkeDxh.net https://www.haskell.org/ghcup/ >GHCup is an installer for the general purpose language Haskell.
56 :デフォルトの名無しさん :2022/01/27(木) 08:50:29.18 ID:NJ4yaxSd.net https://qiita.com/lucker_summer/items/baa68e681872de44d5f8 コメント欄ひどすぎだろ @stken2050(これ岡部健)が非道いので皆さん通報してほしい
57 :デフォルトの名無しさん :2022/01/27(木) 10:10:34.06 ID:orDFdZXN.net 毛さんは昔から色々酷いが >>56 のコメ欄の流れだけでいうと単に@Zuishinが分が悪いわ 珍妙な独自用語は早めに芽を摘まないといけない
58 :デフォルトの名無しさん :2022/01/27(木) 11:59:44.42 ID:oUTYjCet.net 岡部さんこんにちは
59 :デフォルトの名無しさん :2022/01/27(木) 12:03:44.88 ID:eY59BLQP.net https://twitter.com/mutamac/status/322296035147935744 引用 「Linuxの元になったMINIXが復権中。期待。」という自称ギークとの話』の魚拓を取りました http://nmuta.dip.jp/~muta/toog237.pdf (deleted an unsolicited ad)
60 :デフォルトの名無しさん :2022/01/27(木) 23:00:32.74 ID:7u9WcLA6.net そうじゃなくて、PHPやHaskellごときが偉そうにすんなって事だろ。 質問者が来たらお茶菓子くらい出せ。 底辺やマイナー言語はそうするべき。
61 :デフォルトの名無しさん :2022/01/28(金) 01:07:24.72 ID:dNnJMVwD.net 誰かをディスるよりも、こういう話の方が面白くない? https://www.reddit.com/r/haskell/comments/s7p29y/letin_vs_function_application_space_leaks/
62 :デフォルトの名無しさん :2022/01/28(金) 09:50:56.34 ID:F+QYYxM3.net >>60 そもそも質問者が来たと思ってないんだろう 強いて言うなら「命令者」が来たと思われてるね
63 :デフォルトの名無しさん :2022/02/01(火) 14:44:50.86 ID:VXi8EI6O.net Qiitaの運営どうなってんのこれ https://qiita.com/lucker_summer/items/baa68e681872de44d5f8#comment-ceab8639f8275f297563
64 :デフォルトの名無しさん :2022/02/01(火) 15:19:04.39 ID:rr+/bjEX.net https://twitter.com/kuratan/status/114732100682391552 (deleted an unsolicited ad)
65 :デフォルトの名無しさん :2022/02/01(火) 18:35:16.11 ID:e9RXuv9o.net >>56 どいつも誰だか知らんしどーでも良いが 見た感じ、@Zuishinの記事は確かにしょぼい記事だが、@stken2050の反論にも無理があるな @Zuishinに関しては、大きな主張をしている割に根拠がかなりしょぼいせいで、記事として価値が低くなっているように思える 対する@stken2050の反論だが、「排他的ではないので反対ではない!」云々は無理がありすぎ 「反対」という自然言語の単語が元々ガバガバなのは誰だって知ってるんだから、それに対して自分で勝手に厳密な定義を与えて、その定義に基づいて矛盾を指摘したって、そりゃ「日本語わかりますか」言われるわ さらに@stken2050の反論ではwikipediaと異なる高階関数の定義を使っているが、それならwikipedia以上に信憑性の高いソース出して、英語版wikipediaに書かれている高階関数の定義に疑問を呈するのが筋 それをしてないせいで論理的にぶっ飛んで見える
66 :デフォルトの名無しさん :2022/02/02(水) 12:32:50.68 ID:4gWS4lIC.net >>63 無事、記事が凍結されたね
67 :デフォルトの名無しさん :2022/02/04(金) 08:30:39.02 ID:iaw7RH3I.net 完全に荒らしやろあれ
68 :デフォルトの名無しさん :2022/02/08(火) 08:58:59.73 ID:t2yWr+Jt.net Haskellって日本人に受けそうで実際一時期話題になったけど 結局下火になっちゃったね なんでだろう
69 :デフォルトの名無しさん :2022/02/08(火) 12:34:20.88 ID:iTFetD6R.net haskellでしばらく何かを学んだら、元いたところに帰っていくんじゃないかな
70 :デフォルトの名無しさん :2022/02/09(水) 10:14:27.54 ID:9eeUOmy1.net 型とGCが下火になったから 型無しならPython GC無しならRustに行く
71 :デフォルトの名無しさん :2022/02/09(水) 10:49:56.61 ID:Lp+6eS6t.net 型下火になることなんてある?
72 :デフォルトの名無しさん :2022/02/09(水) 13:51:00.40 ID:LMpY9ePh.net >>70 の中では下火になったんだろ
73 :デフォルトの名無しさん :2022/02/09(水) 14:32:04.90 ID:4IAm5Mq6.net 両方なしならどこへ行けばいい?
74 :デフォルトの名無しさん :2022/02/09(水) 16:30:45.01 ID:tjRbJd/i.net 両方ないならAPIと言語が無関係なクラウドみたいな感じになりそう
75 :デフォルトの名無しさん :2022/02/09(水) 19:00:25.72 ID:/Rs/AQCx.net Cじゃだめなん? あと、型なしじゃなくて、動的型で良ければ、 Objective-Cがかなり自由度高かった気がする。
76 :デフォルトの名無しさん :2022/02/10(木) 14:08:35.36 ID:Rx8BtNec.net 単純に難しいからだろ 元の言語仕様はシンプルなのに、ソフトウェア工学的なノウハウに基づいてOOPと同等以上の実装を実現しようとすると、とたんに大量のGHC拡張と難解な型が出てきてわけわからんくなる
77 :デフォルトの名無しさん :2022/02/10(木) 17:05:47.42 ID:0/0SR33O.net lensの型とか複雑すぎる
78 :デフォルトの名無しさん :2022/02/11(金) 01:01:15.27 ID:oG7lMZNP.net setterの存在自体がマナー違反ということにすればある意味単純なんだよ マナー違反したせいで複雑すぎるのは自己責任、言語のせいにするなってね
79 :デフォルトの名無しさん :2022/02/12(土) 14:38:21.43 ID:3EVMkjej.net 岡部健
80 :デフォルトの名無しさん :2022/02/12(土) 14:59:18.26 ID:MmDcA0PA.net >>79 こいつに“H“はムリ(爆) “三擦り半“で昇天するよw
81 :デフォルトの名無しさん :2022/02/13(日) 02:50:13.95 ID:gJE3VDE6.net GHC方言とかの知識が豊富な奴ってどちらかといえば反抗的な性格だと思う それなのに、オリジナルの仕様への忠誠心が高ければ高いほど有能みたいな誤解がある その上更にいかにも忠誠心なさそうなキャラまで作られてるし
82 :デフォルトの名無しさん :2022/02/14(月) 11:54:21.19 ID:4AqyxcJv.net 最近数値計算の勉強してるんですけど、よく最近高速フーリエ変換を用いた乗算の高速化なんて話が出てきます サイズの大きい整数の掛け算とかを高速化する手法で桁数n同士の乗算のコストをn log(n)に抑えるのだとか これGHCのInteger型の乗算には応用されてますかね? やっぱりそこまで速さに拘りたいならご自分でのスタンス? GHCのソースが読めるほどのスキルはないのでよくわからない そもそもGHCのソースってどこに転がってます?
83 :デフォルトの名無しさん :2022/02/14(月) 20:10:36.04 ID:TSLH56nb.net >>82 ghc haskell ソース でググれば見つかる
84 :デフォルトの名無しさん :2022/02/14(月) 20:56:01.04 ID:uQiQyHca.net ソースを1行も読まなくても分かることがいくつかある IntとIntegerの二刀流ができるなら三刀流もできること 第二第三の型を追加するだけのためにコンパイラをコンパイルするのは無意味過ぎること
85 :デフォルトの名無しさん :2022/02/14(月) 21:36:02.36 ID:4AqyxcJv.net >>82 見つからないorz >>83 ちょっと数値計算の練習したいんですよ 例えば円周率10万桁とか さすがに10万桁とかだとghcはデフォルトでは対応してくれないのかなと 仮にできるにしても10万桁×10万桁の計算で桁数^2オーダーで計算したのではその一個の掛け算で何年もかかってしまうことになりかねません ただのarrayやlistなら10万要素位は扱ってくれそうですけど ただHaskellでその手の大量データを扱うのは色々難しい問題があるらしいと言う話は聞いてたので今までは「そういうのはHaskellは向かない、そういう時はC」とか使い分けてました しかしやはりHaskellでできないのは面白くないのでHaskellでもそういうでかいデータを扱えるスキルを身につけたいなぁというのもあります まぁまだFFTでの掛け算プログラム勉強し始めたばっかりなので先は長そうですけど とりあえず[Double]のFFTと逆FFT作ったとこまではやったんです でもそこまで作って「アレ?もしかしてこんなの自作しなくてもそもそもHaskellのIntegerが最初からFFTで掛け算してるとかあるかも?GHCの開発者メチャメチャ優秀っぽいし」と思った次第
86 :デフォルトの名無しさん :2022/02/14(月) 21:36:29.77 ID:4AqyxcJv.net あら、アンカー一個ずれ
87 :デフォルトの名無しさん :2022/02/14(月) 21:54:21.41 ID:BjFXlOcH.net GMP使ってるかもしれないし使ってないかもしれないらしい[1] GMP使ってるならFFTベースのSchonhage-Strassenが働くしGMP使いたいならライブラリ[2]がある [1]https://stackoverflow.com/questions/57688078/what-is-the-algorithm-used-in-integer-multiplication [2]https://hackage.haskell.org/package/integer-gmp
88 :デフォルトの名無しさん :2022/02/14(月) 23:13:34.14 ID:4AqyxcJv.net >>87 おお、thx なるほどGMPというのを使ってるんですね --Stack excangeより GMP appears to use Schonhage-Strassen, but not until you start dealing with numbers with 10s of thousands of decimal digits. GMPではSchonhage-Strassenを使用しているようですが、小数点以下が何万桁もあるような数字を扱うようになるまでは、このようなことはないようです。 --wikiより GMPは、どんなオペランドの大きさでも他の多倍長整数ライブラリよりも高速であることを目標としている。このために、以下の点を重視している。 基本算術型としてフルワードを使う。 オペランドの大きさによってそれぞれ異なるアルゴリズムを使う。非常に大きな数に有効なアルゴリズムは、小さい数では遅いことが多い。 ---- 要するに自分でわざわざSchonhage-Strassenのアルゴリズム実装しなくてもそもそもintegerで実装済みという事ですね そうじゃないかと思ったw そりゃそうでしょうねぇ、こんな優秀なソフトが数値計算理論の最新の成果取り入れてないわけがないw 10万桁とかIntegerで扱えるのかな? 実はData.FixedにあるFixed aで100桁くらいは余裕というのは確認済みなんです 週末にでも桁数増やして実験してみます ありがとうございました
89 :デフォルトの名無しさん :2022/02/15(火) 00:40:37.96 ID:2crEr/EW.net Haskellの多倍長計算、昔は大変だったけど今はよくなった、みたいな記事が10年前くらいに書かれてた http://tanakh.jp/posts/2012-03-08-pi.html
90 :デフォルトの名無しさん :2022/02/15(火) 19:39:32.71 ID:ujR6VeHM.net >>89 おお、先人がいたww いや〜Haskellって速さ求めるならあんまりいい選択肢ではなさそうですけどやっぱり挑戦してみたくなりますね その人のページのリンク先がすごく参考になりました ようやくChudnovskyの公式とかいうのがなんで最速なのかわかりました 収束速度そのものはどう考えてもAGMの方が早いのになんでChudnovskyの方が早いんだと Binary Splittingという技使ってまとめて計算していく方法があるんですね ちょっと感動しました まぁともかくInteger型の計算で10億桁くらいまで実用的な?速度で計算できるもんなんですね ボチボチやってみます
91 :デフォルトの名無しさん :2022/03/28(月) 00:29:30.89 ID:dN2icdd7.net Haskell昔は日本でも人気あったのにどうしてこうなった
92 :デフォルトの名無しさん :2022/03/28(月) 00:37:16.39 ID:NMG6YJEi.net 人気ないって事? そりゃそうでしょ? お世辞にも使いやすいとは言えない
93 :デフォルトの名無しさん :2022/03/28(月) 17:03:01.17 ID:o+cr0I/L.net >>92 使いにくいと感じるところを教えてください
94 :デフォルトの名無しさん :2022/03/28(月) 18:04:03.42 ID:kSkV8rOb.net 文字列操作のパッケージを作っている。 1文字づつ評価して処理するのは出来るけど ループで実現しようとすると、上手くいかない。 [Char]型とString型で混ぜて作ったせいか ボトムアップ方式で作るのが間違えなのか。 まだまだ初心者の愚痴。
95 :デフォルトの名無しさん :2022/04/07(木) 21:21:24.28 ID:v9cHeTKb.net Stringは[Char]の別名だが
96 :デフォルトの名無しさん :2022/04/08(金) 04:13:38.57 ID:ZfK1p/yR.net Haskell-jp slackってどうなの?
97 :デフォルトの名無しさん :2022/04/08(金) 13:18:29.82 ID:7u/c8YSR.net とりあえず入ってみたら?
98 :デフォルトの名無しさん :2022/05/25(水) 23:07:08.21 ID:HGLTMsh1.net >>91 純粋関数型といいつつ実際にはそうではないし 結局はモナドも使わなきゃ実用的なものは作れない よく例題に上がるようなシンプルな書き方すると遅いし Lispでも同じようにあった問題で綺麗な書き方よりも早い書き方が重視される そうこうしているうちにどんどん人は離れていったよ 理念が現実に負けたのだと思う・・
99 :デフォルトの名無しさん :2022/05/25(水) 23:31:09.11 ID:HGLTMsh1.net あとそうだ なによりもデバッグがあまりに困難すぎるし デバッグのために型制約とか何バカやってんだろな・・って思うことしばしば 作業環境が悪いのがまるで改善されないから嫌になる
100 :デフォルトの名無しさん :2022/05/27(金) 23:36:10.66 ID:IybSybG6.net 型はコンパイル時にしか存在しない モナドクラスもコンパイル時にしか使わない 実行時に使われているのはモナドのインスタンスのみ そのインスタンスは任意の言語で再発明できる どの言語でデバッグしても困難は同じ 結局は再発明をやらなきゃ実用的な知識が身につかない
101 :デフォルトの名無しさん :2022/05/27(金) 23:58:56.33 ID:IeVDSTdQ.net 今だにprintfデバッグに頼ってるなんてHaskellくらいのものかもね・・
102 :デフォルトの名無しさん :2022/05/28(土) 00:21:10.26 ID:1xwNIN3l.net Cのライブラリに丸投げする効率化を考えれば デバッグの効率化にはこだわらない方が丸投げしやすい
103 :デフォルトの名無しさん :2022/07/18(月) 03:26:49.61 ID:zDzunRmU.net なんでここまで人気なくなったんだろうな
104 :デフォルトの名無しさん :2022/07/18(月) 14:14:58.82 ID:IRYfc5Qz.net 声の大きい人たちが使わなくなっただけでは
105 :デフォルトの名無しさん :2022/07/19(火) 17:39:52.93 ID:6V/PH7AR.net 個人が言語を自作できるレベルになってる説 団体は必須ではない
106 :デフォルトの名無しさん :2022/08/07(日) 20:06:46.56 ID:My+goEll.net ハマりました 次のコード通らん理由が分からん import Data.Ratio [[ a,b],[c,d]] *** [[ p,q],[r,s]] = [ [ a*p+b*r, a*q+b*s], [c*p+d*r],[c*q+d*s]] i [[ a,b],[c,d]] = [[d,-b],[-c,a]] a :: [[Rational ]] b:: [[Rational ]] a = [[1%1,99],[0,100]] b = [[100,0],[-99,1]] main = do mapM_ print $ [ a, b , i a , i b] print $ (( i b ) *** ( i a ) ) *** b 実行時エラーで prog: prog.hs:4:1-79: Non-exhaustive patterns in function になる 一項目のprintの出力 [[1 % 1,99 % 1],[0 % 1,100 % 1]] [[100 % 1,0 % 1],[(-99) % 1,1 % 1]] [[100 % 1,(-99) % 1],[0 % 1,1 % 1]] [[1 % 1,0 % 1],[99 % 1,100 % 1]] を見てもどう見てもパターンマッチしてるのに? 何故?
107 :デフォルトの名無しさん :2022/08/08(月) 19:26:19.73 ID:NwZYLTPj.net >>106 リストの長さがマッチしてない 長さが2でないリストをどこで作ったのかはソースを読めば分かる ***は長さが3のリストを返す
108 :デフォルトの名無しさん :2022/08/09(火) 10:46:53.89 ID:VUIfOlq+.net >>107 あ、ホントだ コピペミスかなんかか thx
109 :デフォルトの名無しさん :2022/08/11(木) 18:04:41.32 ID:9dSVJvSP.net おまいらこのクソ暑い夏をどうにかするCOOLなコードをHaskellで簡潔に書けんのか?
110 :デフォルトの名無しさん :[ここ壊れてます] .net ttps://hackage.haskell.org/package/mtl-2.3/docs/src/Control.Monad.Writer.Class.html#tell listen ~(w, a) = (w, (a, w)) この~はどういう文法なの?
111 :デフォルトの名無しさん :2022/08/25(木) 21:14:39.81 ID:+PRPT5FW.net https://www.sampou.org/haskell/tutorial-j/patterns.html#tut-lazy-patterns
112 :デフォルトの名無しさん :2022/08/25(木) 21:15:08.79 ID:3SQ1xNiu.net stack でwxHaskell インストールしようとしたんだが、 > stack install wxHaskell とすると Unknown package: wxhaskell とでてインストールできない。 StackだとwxHaskellインストールできないの?んなわけないと思うんだが。 公式見てもstackの場合の方法が書いてない。
113 :デフォルトの名無しさん :2022/08/29(月) 23:25:47.74 ID:mJ1Da6QY.net stackage に入っていないからじゃないかな? 最近アップデートされていないし 並行処理も問題ありそうだし… stack と GUI で検索したらこんな記事があった https://www.stackbuilders.com/blog/gui-application/
114 :デフォルトの名無しさん :2022/08/30(火) 19:30:33.33 ID:XzDfLd3k.net みんな中央集権クラウドに騙されてる
115 :デフォルトの名無しさん :2022/09/10(土) 21:18:15.99 ID:Jyomj+F3.net ボトルネックは事実上バグと変わらないから 結局パフォーマンスを考えると Haskellはバグが混入しやすい言語と言える しかも入出力は正しいから解決がクッソ厄介で実用性はない
116 :デフォルトの名無しさん :2022/09/10(土) 23:20:56.83 ID:6vG8VA3K.net ロマン思考言語_
117 :デフォルトの名無しさん :2022/09/11(日) 00:14:39.94 ID:HO9VQuZG.net まあ合ってるな
118 :デフォルトの名無しさん :2022/09/20(火) 01:04:13.74 ID:zJWv8hkC.net ghci --show-options | wc -l Output: 1200
119 :デフォルトの名無しさん :2022/09/24(土) 01:20:51.22 ID:v6+/ywPo.net 書き込んでいた専門家たちが書き込みをやめたので下火になっている感が出ているわけですね。
120 :デフォルトの名無しさん :2022/09/24(土) 02:26:09.94 ID:vtJ0GRzX.net イヤ、でも実際した火なんじゃない? やっぱりHaskellで“性能”と“可読性”の両立を図るのはかなり難しい やっぱり言語の生い立ちというか、性格というか、性能面、特に速度面の性能面はどうしても優先順位が低い、しかし実務上はもちろんそこは最重要factorだからそこがでないとした火になるのもやむを得ないかと
121 :デフォルトの名無しさん :2022/09/24(土) 03:13:03.66 ID:v6+/ywPo.net 仕組みはわからんが計画的だろ。 言い換えると、騒ぐ奴らがうざいから騒がなくなるまで下火なんだろう。
122 :デフォルトの名無しさん :2022/09/24(土) 03:21:31.25 ID:cIbikbIQ.net てか元々世界のメジャーな言語に躍り出ようというつもりなんかHaskellコミュニティにはないのかもね Haskellコミュニティなんて学者の集合体でしょ? 実務になんか元々興味ないんじゃない?
123 :デフォルトの名無しさん :[ここ壊れてます] .net StackでGUIプログラミングしたいのですが、stackでインストールできるライブラリで おすすめのものはありますか。
124 :デフォルトの名無しさん :2022/09/27(火) 18:16:48.82 ID:2m9lsdvh.net haskellで作ったチェスゲームありますか コマとボードはきれいなグラフィックで マウスでコマを動かすチェス
125 :デフォルトの名無しさん :[ここ壊れてます] .net 来年のRustがこの状態。
126 :デフォルトの名無しさん :2022/09/27(火) 19:55:55.43 ID:CVmtKHy4.net Haskellに飛びつく層は Rustには飛びつかんよね Rustには面白みが無い
127 :デフォルトの名無しさん :2022/09/27(火) 20:30:27.34 ID:Ctbd02WQ.net とにもかくにももう少しHaskellは速度性能を出すための方法の標準化について詰めてほしい Haskell2010の文章のメモ化の部分の詰めがダメすぎる 実情のGHCとかで提供されてるものと差がありすぎて意味がわからん GHCでの研究成果をもっと標準仕様に取り入れてほしい 何をどうやったら確実にドレコレはメモ化されるかハッキリ文書化してほしい
128 :デフォルトの名無しさん :2022/09/28(水) 02:23:18.14 ID:4krAnsc6.net 整理する気がないからな どんどんカオスになって行く
129 :デフォルトの名無しさん :[ここ壊れてます] .net いまだにGHCというとGuarded Horn Clausesの方のGHCを先に思い出す
130 :デフォルトの名無しさん :2022/10/01(土) 19:53:52.72 ID:7gwAD0df.net 1番実用的な関数型言語やその影響が強い言語って何になるの?
131 :デフォルトの名無しさん :2022/10/01(土) 20:00:27.14 ID:IQLzQmPp.net Cじゃね
132 :デフォルトの名無しさん :2022/10/01(土) 22:58:35.36 ID:76wmMtDf.net 標準規格を一番忠実に実装した奴が優勝みたいな考え方は全然数学的ではない
133 :デフォルトの名無しさん :2022/10/03(月) 18:02:59.08 ID:LGdcguEE.net lisp系やocamlとか。
134 :デフォルトの名無しさん :2022/10/04(火) 08:48:04.42 ID:S20URLlI.net ルールがない状態からルールが守られている状態へ誘導するか 何もしてないのに持続するルールを拾い集めるかの違い
135 :デフォルトの名無しさん :2022/10/07(金) 20:15:05.17 ID:xpYSJYo6.net F#では。
136 :デフォルトの名無しさん :2022/10/07(金) 20:28:34.11 ID:lAeL408c.net Erlang
137 :デフォルトの名無しさん :2022/10/14(金) 22:28:23.68 ID:GVf4qcGD.net ラムダや <- や case で束縛される変数の値は二回以上計算されない seqは計算のタイミングを変える効果しかない 難しいのは = で定義される名前だが = の右辺で頑張ってseqを使っても報われない
138 :デフォルトの名無しさん :2022/10/14(金) 23:54:06.57 ID:91YiMGAd.net でもhaskell 2010 reportには評価順を変える方法はseqしか規定されていない GHQなどの実際の処理系でそれ以外のタイミングでメモ化されたりするのはあくまで処理系の独自仕様でしかない ある処理系でメモ化されて早かったプログラムが別の処理系で同じ速度で処理してくれる保証などどこにもない
139 :デフォルトの名無しさん :2022/10/15(土) 08:05:01.19 ID:/BlEbfcm.net >>138 もしかして、個人の感想のようなものを悪と思ってるのかね そして客観的事実 (ようするに絶対正しい事実) と称するものが正義だと 個人の感想を排除するべきという思想はどこにも規定されてないでしょ
140 :デフォルトの名無しさん :2022/10/15(土) 09:49:59.76 ID:fUoifk8c.net メモ化に関しては俺も>>138 と同じような感想持ってるな
141 :デフォルトの名無しさん :2022/10/15(土) 10:11:19.74 ID:/BlEbfcm.net ある人の感想が別の人の感想と同じになる保証はどこにもない 保証がなくても特に問題ないと判明したならそれでいい
142 :デフォルトの名無しさん :2022/10/15(土) 10:19:45.48 ID:+yYiQ+MP.net 一番嫌なのはネットに転がってるすごいスッキリしたプログラムがあって「おお、すげぇ」と思っても結局それはGHCのメモ化の恩恵でしかなくHaskell本来のそれではないので別の処理系では通用しないものであったりする事 事実上GHCが標準なのでGHCで早ければ「早いプログラムが書けない事はない」のではあるけど、じゃあGHCはどんな時は気をきかせてメモ化してくれるのか、どんな時はその事を利用して早い、しかし短い、わかりやすいプログラムを書けるのかはHaskell 2010 reportではなくGHCの方の仕様書を読むか、実験してみるかしかない、しかし前者はそもそもGHCの仕様書そのものどこにあるかわからないんだけど見つけてもおそらくメモ化の理論は相当に難しい論文レベルの話、さりとて実験で詰めていくのはデバッグと同じレベルのかなり苦痛な作業で、しかも完成したものは大概速さのために可読性をかなり犠牲にしないといけないものになる、当然可搬性も落ちてる GHCがやってくれてる事全てでなくてもいいけどネットによく転がってるフィボナッチ数列とか素数生成とかのGHCの良きに計らってくれる機能を利用したスッキリした、けど早いプログラムくらいまでは標準化して全ての処理系で動くようにしてほしいけどね
143 :デフォルトの名無しさん :2022/10/15(土) 11:46:05.26 ID:fUoifk8c.net まあ実際のところメモ化を考え出したら Lispと同じように可読性を犠牲にした速度重視のコードしか生まれないので・・ メモ化は考えないのが筋だけどそうすると実用性は皆無であってつまり
144 :デフォルトの名無しさん :2022/10/15(土) 15:59:55.52 ID:/BlEbfcm.net LispとHaskellの違いで重要なのは モジュールの定義をインタラクティブにやらないこと ghci起動時に全てのモジュールが定義され最後に mainや他の式を評価・実行するところだけがインタラクティブ そもそもmodule Main whereとかいうのは式ではない 式ではないから評価順序という考え方がそこでは通用しない
145 :デフォルトの名無しさん :2022/11/03(木) 00:12:52.63 ID:A4mGU1Ql.net GHCがデファクトだしこだわりがなければ他のコンパイラを使うこともないでしょ とはいえ関数型言語って速度を重視するタスクには向かないでしょ 速さを求めるのが間違い
146 :デフォルトの名無しさん :2022/11/03(木) 01:14:31.73 ID:+2fbLBnA.net Symbolicsが失敗した事例を思い出す あれも理想を追求したはいいけど何をやってもひたすら遅く 他社はそれより早く安い機材を次々と繰り出していた 当然惨敗は必然だった
147 :デフォルトの名無しさん :2022/11/03(木) 06:02:33.84 ID:A4mGU1Ql.net 静的な型付けによる頑健性だとrustがあるしなぁ
148 :デフォルトの名無しさん :2022/11/03(木) 11:53:42.15 ID:k32TY8HF.net 結局のところHaskellの言語策定をしてるコミュニティは学者さんのコミュニティで実用的な性能を向上させる事にそもそも興味ないから実務面での有用性を期待するのは無理やね
149 :デフォルトの名無しさん :2022/11/04(金) 01:33:00.25 ID:ggdePY4U.net まあそうだろうな
150 :デフォルトの名無しさん :2022/11/05(土) 10:09:23.49 ID:nyx0vuE5.net >>142 の指摘って他の言語のGCにもそのまま当てはまると思う。
151 :デフォルトの名無しさん :2022/11/06(日) 14:53:18.67 ID:p6fV7yyc.net Haskellで開発している会社ってどこがあるの? 検索するとHERPやTuruCapitalしか出てこない…
152 :デフォルトの名無しさん :2022/11/06(日) 16:00:47.05 ID:8Hp8Ymz2.net GHC9.4.3 リリース
153 :デフォルトの名無しさん :2022/11/06(日) 16:35:55.22 ID:MgGeIf3l.net Haskell wikiに載ってるやつ見るに、部分的にHaskellを使うって感じかなぁ
154 :デフォルトの名無しさん :2022/11/06(日) 18:08:25.72 ID:SOHxH3HV.net >>151 一時期富士通が募集してたことがあったような もうないからやめたのだろうけど
155 :デフォルトの名無しさん :2022/11/06(日) 19:47:21.37 ID:p6fV7yyc.net あと朝日ネットの募集要項はHaskellがありました 朝日ネットに応募してみようかなぁ。 HERPはリファレンスチェックが面倒…(上司とかと会話したくない)
156 :デフォルトの名無しさん :2022/11/07(月) 00:00:47.60 ID:35GjxAYG.net facebookも使ってた気がする。
157 :デフォルトの名無しさん :2022/11/07(月) 00:41:59.56 ID:aVSF4vDw.net Haskellの求人、あまり見つからないんですが、言語として微妙な感じなんでしょうか…? HaskellでできることはPython、Java、Go、Scalaでできる、みたいな… あえてHaskellを使う意味がない、みたいな…
158 :デフォルトの名無しさん :2022/11/07(月) 11:14:09.19 ID:uMWKgAVp.net オーバーヘッドを気にせず頑健性を取りたいとき うーん、具体例が出てこない
159 :デフォルトの名無しさん :2022/11/07(月) 12:17:58.82 ID:y2qdzeiV.net >>157 > Haskellの求人、あまり見つからないんですが、言語として微妙な感じなんでしょうか…? > HaskellでできることはPython、Java、Go、Scalaでできる、みたいな… > あえてHaskellを使う意味がない、みたいな… かきか
160 :デフォルトの名無しさん :2022/11/07(月) 12:18:26.38 ID:y2qdzeiV.net 誤操作スマソ
161 :デフォルトの名無しさん :2022/11/08(火) 09:36:33.50 ID:VjMrXhSs.net 消費者目線ではGHCはフリーソフトだからコストが高いとは言えない コストという物差しが万能ではない具体例がいま出た
162 :デフォルトの名無しさん :2022/11/09(水) 01:51:03.18 ID:3Bh922De.net まあ学者さんたちのお遊びだからね・・
163 :デフォルトの名無しさん :2022/11/09(水) 10:38:48.12 ID:wL144bz5.net どういう結果になるのか契約とか誓約しないのがオープンソース お遊びにしかならないという保証もしてない
164 :デフォルトの名無しさん :2022/12/02(金) 14:29:56.51 ID:fOU9+Fqp.net Haskellまだイキテル?
165 :デフォルトの名無しさん :2022/12/03(土) 12:50:06.92 ID:HJhX36nM.net 無生物であることは保証する 何も実験してないのに保証することを数学的と言えないこともない
166 :デフォルトの名無しさん :2022/12/12(月) 16:34:32.76 ID:Yq3RU8vo.net Unreal Verse https://simon.peytonjones.org/assets/pdfs/haskell-exchange-22.pdf サイモンさんが関わってるからHaskellの弟分なのかな? unreal engineに採用なら関数型プログラミングでは 一番使われることになるんだろうか
167 :デフォルトの名無しさん :2022/12/13(火) 21:33:17.94 ID:s5AI7uvQ.net ちょっとやってみるかと思ったら 今はHIEじゃなくてHLS使えみたいなのがぼちぼち出てくるが じゃあHLSをemacsからどう利用すりゃいいのってなると情報なし どうなってんのよ haskell-modeなんて2016で止まってるし
168 :デフォルトの名無しさん :2022/12/15(木) 08:50:05.16 ID:hYy+q+Gy.net >>166 10年越しのビジョン実現で胸熱 https://pc.watch.impress.co.jp/docs/column/kaigai/555239.html >プレゼンテーションを見ると、Sweeney氏はゲームコードを走らせるプラットフォームが超並列化して行くことを予見し、Unrealの場合は80%のCPUユーセージを並列化が可能だと語っている。また、(ソフトウェア)トランザクショナルメモリや、プログラミングには関数型言語(例としてHaskellを挙げていたが、同時にHaskellに好ましくない点もあると説明している)がフィットすることなどを語っている。 それにしてもSPJを引き抜くなんてゲーム業界はすごい
169 :デフォルトの名無しさん :2022/12/15(木) 11:15:36.01 ID:3Q63kYiw.net いや15年越し https://game.watch.impress.co.jp/docs/20080911/epic.htm >Sweeney氏は純粋関数型言語のもつ並列処理安全性に着目しており、将来的にゲームプログラミングはそういった処理系に移行していくべきだとした。Sweeney氏はそのひな形として言語“Haskel”を挙げているが、ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。
170 :デフォルトの名無しさん :2022/12/17(土) 23:16:08.75 ID:7V76W+iX.net HaskellでWebシステムのバックエンドを開発したときのメモリ使用量は GoやPythonと比較してどの程度でしょうか?多いですか?少ないですか?
171 :デフォルトの名無しさん :2022/12/23(金) 15:37:27.80 ID:Rf1vHPUu.net サーバとクライアントのサンプルプログラムを練習で書いたのだけど toSend <- T.getLine sendAll sock (E.encodeUtf8 toSend) 日本語文字列を出力するのにByteStringを経由しなきゃいけない もしかして任意の型でやりとりがしたいとき 自分でByteStringにパック&アンパックしなきゃいけない? 多分、C言語のFFIがベースになってるからこんな風になってるんだよね?
172 :デフォルトの名無しさん :2022/12/23(金) 20:44:32.65 ID:Gou4DLut.net >>171 明示的に変換しなきゃいけないのは事実だがその原因はC言語じゃない 言語と無関係だからこそHaskell2010でもC言語でも同じデータ構造が使える >>170 データだけ見ればメモリ使用量を同じにすることは可能
173 :デフォルトの名無しさん :2022/12/29(木) 17:00:27.04 ID:ZBF5EoRT.net モノイド、関手は習得できたけど 自然変換で躓いてる
174 :デフォルトの名無しさん :2022/12/29(木) 23:24:37.93 ID:pM4wQIt0.net 今haskellでguiを作るなら何がいい? できれば低レベル層のライブラリは使いたくないけど wxはもうめんてされてない fugets?threepenny?webviewhs?どれもarchのパッケージにない 実用言語としてhaskellを使いたいのに使えないのばかりで悲しい
175 :デフォルトの名無しさん :2022/12/30(金) 12:18:58.51 ID:/hxsvxNk.net ところでwxHaskellが流行らないのはなぜ? wxが流行ってないからかな?
176 :デフォルトの名無しさん :2022/12/30(金) 13:53:40.82 ID:FXsz7+hW.net 本当に必要なのはドリルの大量生産ではなくドリルでもなく穴だからかな
177 :デフォルトの名無しさん :2022/12/30(金) 19:21:21.60 ID:dTZ5gB6H.net Haskellはすでに見放されてる感ある
178 :デフォルトの名無しさん :2023/01/02(月) 01:15:52.75 ID:jETc9FsM.net >>177 そうなの?それは実務的な意味で?
179 :デフォルトの名無しさん :2023/01/02(月) 03:01:15.30 ID:/m9PT5PE.net ステマが酷すぎた。
180 :デフォルトの名無しさん :2023/01/02(月) 03:01:59.29 ID:/m9PT5PE.net 言いなおそう。 某出版社のステマが酷すぎた。
181 :デフォルトの名無しさん :2023/01/03(火) 00:10:20.46 ID:7mh2KVDC.net 見放されるようになったのは、 モナドってなに?というミステリアスで興味深い問いがいつのまにか 白けた話になったからじゃないか。もうどうでもいいというか。
182 :デフォルトの名無しさん :2023/01/03(火) 04:29:29.65 ID:yYGSV1g6.net 技術評論社のせいでは?
183 :デフォルトの名無しさん :2023/01/04(水) 05:08:58.65 ID:peYJ5uzH.net メンテナーが次々と逃げ出してるのが象徴的・・ わかりやすいコードを書くとすこぶるパフォーマンス悪いし だからといって頑張ると一体これは何をしたいのだってなる 遅延評価がデフォルトなのも非常にまずいし 正格評価と切り分けて結局は書かなければならずまだまだ発展途上だと感じる いっそのこと正格評価はなしとした方がいっそ清々しい
184 :デフォルトの名無しさん :2023/01/04(水) 18:10:50.86 ID:HUTbVNXS.net PureScriptに移行しようぜ 正格評価で使いやすいし
185 :デフォルトの名無しさん :2023/01/05(木) 03:59:19.12 ID:PBBtO4Nd.net しかし無限数列とか表現できなくなるのがなぁ
186 :デフォルトの名無しさん :2023/01/05(木) 12:24:48.41 ID:dQdtWkz5.net あんなもの現実には扱えないからな 適当な数値を上限にしとけばいいだけ
187 :デフォルトの名無しさん :2023/01/05(木) 13:19:36.00 ID:PBBtO4Nd.net イヤ、“表現できる”ってとこに意味があるんだよ
188 :デフォルトの名無しさん :2023/01/05(木) 14:40:58.83 ID:dQdtWkz5.net その割にデメリットの方が大きすぎる やはりいらないよ
189 :デフォルトの名無しさん :2023/01/14(土) 23:43:44.49 ID:vLwyb8f9.net PureScriptと被ってるかな? [GHC 9.6.1-alpha1 is now available - Announcements - Haskell Community](https://discourse.haskell.org/t/ghc-9-6-1-alpha1-is-now-available/5585)
190 :デフォルトの名無しさん :2023/01/17(火) 00:55:50.42 ID:zIKNxshB.net 無限の長さの [a] を仮に廃止して他の言語と同じような方式に変えたら IO a のような型になる 生物学とか好きそうな人達は [a] と IO a の差が致命的 (つまり一方は死ぬが他方は生き残る) と決めつける傾向がある
191 :デフォルトの名無しさん :2023/01/17(火) 01:31:37.81 ID:PP1OxyD+.net 生物学関係ないな
192 :デフォルトの名無しさん :2023/01/17(火) 03:13:49.00 ID:zIKNxshB.net 言語は死なないとか復活させればいいだけとか思うならもう生物学関係ない そう思わないなら関係ありそう
193 :デフォルトの名無しさん :2023/01/17(火) 08:07:29.90 ID:Inpyi8aQ.net 無意味な比喩表現
194 :デフォルトの名無しさん :2023/01/19(木) 01:20:46.84 ID:cE+DUb2P.net クラウドは中に人がいるのか無人なのか調べられないので 人間と機械を混同したのではなく不確実にした
195 :デフォルトの名無しさん :2023/01/19(木) 07:47:39.45 ID:7wHhBGeN.net 意味不明 もう少し文章を書く練習をしろ
196 :デフォルトの名無しさん :2023/01/19(木) 17:42:25.26 ID:ugYwIpAQ.net 嘘を書くのをやめろって言われない努力はしてる 現に、嘘だと言われない
197 :デフォルトの名無しさん :2023/01/19(木) 20:45:58.03 ID:LuniV29G.net 間違ってさえいない文章 真偽以前に中身がない
198 :デフォルトの名無しさん :2023/01/19(木) 20:49:17.03 ID:LuniV29G.net それっぽいだけで少し読めば大したことすら書かれてないのがわかる
199 :デフォルトの名無しさん :2023/01/19(木) 21:18:32.97 ID:ugYwIpAQ.net 「わかる」と「意味不明」は矛盾しそう どっちかが嘘ついるのでは
200 :デフォルトの名無しさん :2023/01/19(木) 21:33:25.41 ID:QROh3L3M.net >>199 お前読解力もないのか もうこのスレ来るなよ
201 :デフォルトの名無しさん :2023/01/19(木) 21:38:24.06 ID:CHvJHSS4.net お前も反応すんなよ
202 :デフォルトの名無しさん :2023/01/20(金) 01:52:23.49 ID:jpIFaaML.net いくら話題がないからって
203 :デフォルトの名無しさん :2023/01/21(土) 13:30:02.33 ID:ms4pFp6J.net 職業倫理が苦手です
204 :デフォルトの名無しさん :2023/01/21(土) 16:31:20.60 ID:c9rqNig0.net スレチ
205 :デフォルトの名無しさん :2023/01/29(日) 20:58:33.14 ID:3238s/rq.net 教科書の通りなのになんでエラーになるんだろう? code: fork :: (a->b, a->c) -> a -> (b, c) fork (f, g) h = fork (f h, g h) main :: IO () main = do print $ fork (map fst, map snd) (zip [0 .. 4] "hallo") Output: Error occurred ERROR line 2 - Type error in explicitly typed binding *** Term : fork *** Type : (a -> b -> c,a -> b -> d) -> a -> b -> (c,d) *** Does not match : (a -> b -> c,a -> b -> d) -> a -> (b -> c,b -> d)
206 :デフォルトの名無しさん :2023/01/30(月) 02:11:06.80 ID:jVdK8GQm.net >>205 fork (f, g) h = (f h, g h) では?
207 :デフォルトの名無しさん :2023/01/30(月) 04:31:24.57 ID:KsiNNj/4.net >>206 ありがとうございます。その通りでした。 code: pair :: (a->b, a->c) -> a -> (b, c) pair (f, g) x = (f x, g x) fork :: (a->b, a->c) -> a -> (b, c) fork (f, g) h = pair (f, g) h main :: IO () main = do print $ fork (map fst, map snd) (zip [0 .. 4] "hallo") Output: -- ([0,1,2,3,4],"hallo") これで上手く動いたので報告しておこうと思ったら、同じことを2時間以上も前に... oTL
208 :デフォルトの名無しさん :2023/02/01(水) 14:35:45.13 ID:RAEJFXsc.net Haskell使い(でLinux使い)の皆さんってxmonad使ってますか? ウィンドウフォーカスを切り替えるときにfloatingウィンドウは無視するようにしたいです。 オリジナルのfocusUp'関数は focusUp' :: Stack a -> a focusUp' (Stack t (l:ls) rs) = Stack l ls (t:rs) focusUp' (Stack t [] rs) = Stack x xs [] where (x :| xs) = NE.reverse (t :| rs) と大変記述量の少ない作りになってるのですが、これに最小の変更を加えて目的を実現するとしたらどうするべきでしょうか?
209 :デフォルトの名無しさん :2023/02/17(金) 00:17:58.82 ID:x2uQcODA.net ChatGPTにいろんなサンプル書かせて勉強させてもらってるわ
210 :デフォルトの名無しさん :2023/02/18(土) 07:53:47.68 ID:pwjCq/Fb.net >>208 ですがスレチですかね Linux板のタイル型WMスレに移動させていただきます (全く動いてないスレなのでダメ元ですが……)
211 :デフォルトの名無しさん :2023/02/23(木) 22:53:40.11 ID:3VcdShfb.net すみません 凄いHを楽しく学ぶ本を復習していて 疑問に思って試してみたのですが 具体的な型が決まらない値(単独変数で)は 下記の(Maybeや配列)の他にどんなのがありますでしょうか。 v1 :: Maybe a v1 = Nothing v2 :: [a] v2 = [] 型拘束を使わない型変数を使って ある単独変数の型を定義できない物かと思いました。 また関数でも具体的な型が決まらない値を返す 関数はありますでしょうか。 (Nothingや空リスト以外で)
212 :デフォルトの名無しさん :2023/02/24(金) 02:14:24.44 ID:PIH/rCf2.net >>211 Bing チャットに聞いたらこんなのが返ってきた。参考になるかな。 型変数を含むデータ型の例としては、関数型、代数的データ型、型クラスなどがあります。 例: data Tree a = Leaf a | Node (Tree a) (Tree a) この代数的データ型Treeは任意の型aを要素とする二分木を表します。 例: class Eq a where (==) :: a -> a -> Bool (/=) :: a -> a -> Bool この型クラスEqは任意の型aに対して等値性を定義するための仕組みです。
213 :デフォルトの名無しさん :2023/02/25(土) 11:21:45.77 ID:h/PI1ikt.net >>212 ありがとうございます。 凄いHを楽しく学ぶ本にも Tree型があったので試してみました。 具体的な中身が「無い」事を現す値の場合 型引数で定義できるみたいです。 data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving (Show) v3 :: Tree a v3 = EmptyTree
214 :デフォルトの名無しさん :2023/04/29(土) 14:07:24.45 ID:AoTbqg9O.net マルチポストだが教えてくれ 【追記あり】ChatGPTじゃなくて人力でモナドが発明された経緯を適当に調べた(ソース付き)。 https://qiita.com/iHdkz/items/e7a59eef034ab6d0fdc2 この記事正しいの?こんな話聞いたこともないし。圏論でモジュール性なんて扱えるの?
215 :デフォルトの名無しさん :2023/05/01(月) 00:30:45.06 ID:PDTetkfq.net >>214 よく分からんけど「モナドが発明された経緯」ではないな 1971年の本ですでにモナドについて書かれてるようだし en.wikipedia.org/wiki/Categories_for_the_Working_Mathematician
216 :デフォルトの名無しさん :2023/05/03(水) 20:58:10.10 ID:ioA1phJ7.net >>214 英語で調べてもそんな話出てきたことはないな。
217 :デフォルトの名無しさん :2023/05/03(水) 21:14:18.69 ID:ioA1phJ7.net これにもそんなストーリー書いてない https://pdfs.semanticscholar.org/59d7/a0f5c341ab450e2893eb73384895524bbebd.pdf
218 :デフォルトの名無しさん :2023/06/09(金) 14:58:05.85 ID:GYy2ex4t.net lispやらカリー=ハワード同型やらの関連性は 数学的な意味では遥か前だし実装上の話かな https://en.m.wikipedia.org/wiki/Timeline_of_category_theory_and_related_mathematics
219 :デフォルトの名無しさん :2023/06/20(火) 00:30:03.89 ID:qm9+2t5E.net do 記法でのメモ化について質問です 例えば do let x <- someComplexExpression print $ f x print $ g x のようなコードがあったとしてxの値はf xの評価の時点とg xの評価の時点で2回別々にされますか? 少なくともHaskell2010 Lang. Rep. (以下HLR2010)ではこのような場合メモ化されて2回展開されることはないという記述を見つけることはできませんでした なので公式にはこのような記述だと2回展開されると思わなければいけないのだと思います ではsomeComplexExpressionを先に展開してから、展開したものをxにbindするにはどうすれば良いのでしょうか? HLR2010ではswqを使えば良いとあるのですがこの場合 x <- seq someComplexExpression someComplexExpression とかでうまく行くんでしょうか? またそれでうまくいってるのかどうか確かめる方法はありますか? つまり実際何回 someComplexExpressionが展開されてる回数を確かめる方法はありますか? よろしくお願い致します
220 :デフォルトの名無しさん :2023/06/25(日) 14:24:09.04 ID:H+Ij4nqZ.net 質問にさせていただきます 違う標数での有限体での計算を必要とするコードを考えてます ある変数に𝔽₃や𝔽₅の値を混在して代入することはないので𝔽₃の元を生成するconstructor F3や𝔽₅の元を生成すconstructor F5を定義して x = F3 $ 1+2 y = F5 $ 2-5 のような記述ができればいいなと思ってます そのためには data FiniteFieldCh3 = F3 Int instance Num F3 where... のようにF3,F5両方にNumを定義しないといけません 面倒なのでFiniteFieldと言うクラスを作って以下のようにできないかやってみたところ class FiniteField t where modulus :: t -> Int toInt :: t -> Int fromInt :: Int -> t instance ( FiniteField a ) => ( Num a ) where x + y = fromInt $ mod ( toInt x ) + ( toInt y ) ) ( char x )
221 :デフォルトの名無しさん :2023/06/25(日) 14:24:14.71 ID:H+Ij4nqZ.net 以下のようなerror が出てきます prog.hs:22:10: error: • The constraint ‘FiniteField a’ is no smaller than the instance head (Use UndecidableInstances to permit this) • In the instance declaration for ‘(Num a)’ | 22 | instance ( FiniteField a ) => ( Num a ) where | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ コレはなんですか? ちなみにFlexibleInstancesというのが必要かとの事なので冒頭に {-# LANGUAGE FlexibleInstances #-} を入れています コンパイラはghc8.4.4です よろしくお願い致します
222 :デフォルトの名無しさん :2023/06/25(日) 14:43:47.12 ID:H+Ij4nqZ.net すいません、最後の行間違って修正前のやつコピペしました class FiniteField t where modulus :: t -> Int toInt :: t -> Int fromInt :: Int -> t instance ( FiniteField a ) => ( Num a ) where x + y = fromInt $ mod ( toInt x ) + ( toInt y ) ) ( modulus x ) です よろしくお願い致します
223 :デフォルトの名無しさん :2023/06/25(日) 15:08:12.64 ID:CDxt6lPg.net 型クラスの単相性制限とか、関数従属性とか、とか。。。 的外れなこと言ってたらごめん。
224 :デフォルトの名無しさん :2023/06/25(日) 15:23:50.61 ID:CDxt6lPg.net なんか Bard とかにつっこんでも情報得られるかも
225 :デフォルトの名無しさん :2023/06/25(日) 17:33:31.79 ID:OvK+yilq.net ありがとうございます 現在まだ調べてる最中なんですけど https://stackoverflow.com/questions/7198907/haskell-constraint-is-no-smaller-than-the-instance-head によるとどうもclass制約の解決をloopさせないための制約くさいです つまり「aがclasd Cのときclass Dにも入れる事ができる」、「aがclass Dのときclass Cにも入れる事ができる」の宣言 class ( C a ) => D a where ... class ( D a ) => C a where ... のような宣言があるとまずいようです なので=>の左側の型は右側の型より“短い”事が要求されるそうです 例えばtoDみたいな型生成子を作っておいて class ( C a ) => ( D ( toD a ) ) where ... などとしないといけないらしいです でその後newtypeを使うとどうやらこうやら書いてあるんですけどなんのことやら
226 :デフォルトの名無しさん :2023/07/03(月) 23:45:49.20 ID:QPaqlNti.net 値とmoduleどっちも含んだdata作ればいいのでは
227 :デフォルトの名無しさん :2023/07/04(火) 00:24:50.19 ID:+0TfLuMN.net >>226 こういうやつですね data FiniteField = FF { val :: Int, modulus :: Int } deriving ( Show, Eq) instance Num FiniteField where x + y = FF ( mod ( ( val x ) + ( val y ) ) ( modulus x ) )( modulus x ) x * y = FF ( mod ( ( val x ) * ( val y ) ) ( modulus x ) )( modulus x ) fromInteger x = FF x 1 でもコレだと例えば x = FF 2 7 y = FF 4 7 x + y のような場合実行時にプログラムは値に格納されてるmodulusを読みに行ってから割り算行うという手間がかかります しかし私のやりたいプログラムではそもそも各変数のmodulusは確定していてそもそも読みに行くのはバカバカしい感じがします 実行時にxもyも𝔽₇の元と決まりきっててmod の第二引数はコンパイル時点で7と決まっているのにその7を読みに行く作業が無駄に思えるんです しかもコレは型ではなく値なので型チェックの恩恵も受けることができません プログラム中に出てくるmodilus事に全部F2型、F3型、F5型‥と全部作って全部のNum instance一個ずつ定義してとやればできるんでしょうけど、何が上手い逃げ道はないものかと
228 :デフォルトの名無しさん :2023/07/04(火) 11:11:04.93 ID:rN492ZrW.net この記事では剰余環を作っているみたいだけど、参考にならないかな https://qiita.com/gummycandy/items/9abca700eea7f46626e4
229 :デフォルトの名無しさん :2023/07/06(木) 01:04:07.84 ID:sds/6LG1.net みなさん情報ありがとうございます 色々紹介していただいたソースとか自分で探してみた情報とかでまずは一区切りつける事にしました こんな感じになりました https://ideone.com/3Lhc4z
230 :デフォルトの名無しさん :2023/08/05(土) 13:07:07.29 ID:1IOAcn45.net hage
231 :デフォルトの名無しさん :2023/09/04(月) 14:41:20.09 ID:FcZAE9nJ.net haskellは廃れてきてるな、悲しい スペースリーク対応は難しすぎるしライブラリ類も最新のghcだと使えなかったりしてなんか 実用的な言語じゃないなって思う xmonadなんかはほとんどBangPatternだよね そういえば自動でstrictにする拡張が2個ぐらいあったけど追ってないどうなの
232 :デフォルトの名無しさん :2023/09/16(土) 21:21:50.35 ID:6682wM15.net 数学の集合は普通順番を付けて書くと思うのですが(添字でアクセスできたほうが便利) なぜ多くの言語では集合に順番がないのでしょうか?
233 :デフォルトの名無しさん :2023/09/16(土) 21:25:49.38 ID:6682wM15.net 等価判定演算子では順番を問わないが、 記法としては順番によるインデックスアクセスもできる、が便利だと思うのですが 一番基礎的な集合の一つである自然数が順番を重視して扱うように大半の集合は順序を整頓して書かないと実用上不便ではないでしょうか?
234 :デフォルトの名無しさん :2023/09/16(土) 23:06:28.20 ID:XG1/1lYn.net 順番がないやつと順番があるやつは なぜ対等な関係ではなく前者が一般的で後者が特殊だと言われるのか? 逆に、複素数はなんで虚部があるやつが一般的で虚部がないやつが特殊なのか?
235 :デフォルトの名無しさん :2023/09/16(土) 23:13:33.62 ID:6682wM15.net 数学的概念として等価だったりどちらが特殊とか言えないのは納得しています ただ、集合は順序を維持して記述するようにしたほうが明らかに認知的負荷が少なく、数学的記法でも多くの場合でそうなっていると思うのですが、 多くの言語で組み込み型の集合がそうなっていないのはどのような思想によるものでしょうか?という質問です
236 :デフォルトの名無しさん :2023/09/17(日) 02:24:17.53 ID:yNwKlKA6.net データ型としての起源としては 素集合データ構造から始まっているようなので 素である(disjoint)ことがまず要求されて 他に集合という名前が使われていないことから 素で非順序的なデータ型のことを集合型と呼ぶことになった模様
237 :デフォルトの名無しさん :2023/09/17(日) 02:39:39.55 ID:XqeO/FaW.net 組み込み型とユーザー定義型の区別をなくす思想はある 最も正しいことを実現する思想ではなくミスをした場合の罪が軽くなる
238 :デフォルトの名無しさん :2023/09/17(日) 23:47:13.96 ID:70jB6wMR.net 初心者は++を使うけどなれたら<>を使ってる人が多い気がする SemiGroupであれさえすれば使える<>を使った方が汎用的にかけるからかな
239 :デフォルトの名無しさん :2023/09/18(月) 10:00:00.93 ID:E5yF50jH.net 俗説が廃れるのは「時代が変われば正しさが変わるから」ではありません 俗説が正解だった時代などない
240 :デフォルトの名無しさん :2023/09/19(火) 19:53:05.75 ID:QCYT99dv.net 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で作ろうとしてるのですがバグがあるのでしょうか?
241 :デフォルトの名無しさん :2023/09/19(火) 19:54:00.31 ID:QCYT99dv.net 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で作ろうとしてるのですがバグがあるのでしょうか?
242 :デフォルトの名無しさん :2023/09/19(火) 19:58:16.28 ID:QCYT99dv.net すみません、書き込むボタンの反応がなかったので連投になってしまいました
243 :デフォルトの名無しさん :2023/09/19(火) 20:14:24.31 ID:a563RtWW.net touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ
244 :デフォルトの名無しさん :2023/09/19(火) 20:14:45.64 ID:a563RtWW.net touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ
245 :デフォルトの名無しさん :2023/09/19(火) 20:18:27.88 ID:a563RtWW.net ありゃ俺も連投しちまったすまん なんか5ch重いっぽいね
246 :デフォルトの名無しさん :2023/09/20(水) 08:38:40.03 ID:I55f6i4N.net for i in * ; do touch anotherdir/$i ; done
247 :デフォルトの名無しさん :2023/09/20(水) 08:53:25.46 ID:I55f6i4N.net >>246 (bash)でお茶を濁した perlが明日消えてなくなるらしいのでHaskellをPerlの代わりに使おうと思う 正規表現とグロブ、ファイル入出力はできた 他に何かあるかな
248 :デフォルトの名無しさん :2023/09/22(金) 12:15:07.45 ID:NjV4q9P3.net 数値のリスト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
249 :デフォルトの名無しさん :2023/09/22(金) 13:06:36.18 ID:8SLDLfd5.net https://jutememo.blogspot.com/2008/06/haskell-join-listdata-intersperse.html
250 :デフォルトの名無しさん :2023/09/22(金) 14:01:02.50 ID:NjV4q9P3.net putStrLn $ intercalate " " $ map show l これでいけました
251 :デフォルトの名無しさん :2023/09/22(金) 14:01:12.58 ID:W8j4O+ex.net 泥臭いだけで罪があるかのように日常的に刷りこまれてるから 本当の有罪確定したやつは絶対許してもらえないよな そりゃそうだよな
252 :デフォルトの名無しさん :2023/09/27(水) 15:30:51.70 ID:9Ywamwi5.net {-# LANGUAGE BinaryLiterals #-} この拡張をいれても let t = read "0x111" :: Int -- 16進数にパースできる 273 let s = read "0b111" :: Int -- 2進数にはパースできない 微妙に不便だ
253 :デフォルトの名無しさん :2023/09/27(水) 17:59:16.99 ID:k7PwLxD8.net readが定義されたモジュールは別のLANGUAGEってこと?
254 :デフォルトの名無しさん :2023/10/11(水) 15:16:15.28 ID:1pnnvG+R.net groupBy (\a b -> snd a == snd b) これを括弧を使わずにかけますか groupBy ((==)<$>snd<*>snd)だと(a,b)->Boolとなって(a,b)->(c,d)->Boolとは型があいませんでした
255 :デフォルトの名無しさん :2023/10/11(水) 17:39:54.48 ID:Fikp0OWy.net >>254 import Data.Function groupBy ((==) `on` snd) 結局かっこは使うのだけど、これがあなたの求めるものでしょうか
256 :デフォルトの名無しさん :2023/10/11(水) 22:05:36.63 ID:1pnnvG+R.net 括弧を使わずにじゃなくてラムダを使わずにでした まさに欲しかったのそれです ありがとうございました!!
257 :デフォルトの名無しさん :2023/10/18(水) 05:38:40.90 ID:vCrdR6l9.net 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
258 :デフォルトの名無しさん :2023/11/16(木) 18:41:54.01 ID:wXoixzgD.net 岡部健、復活したよ! エックス内を “Ken140291“ で探してみて下さい。 最近登録したばかりの様です。
259 :デフォルトの名無しさん :2023/11/18(土) 16:03:54.22 ID:sLhTkQlu.net 自分で書き込んでいるのでは・・・。
260 :デフォルトの名無しさん :2023/11/19(日) 15:31:44.23 ID:/inwpH7b.net >>248 init $ folfl (\a x -> a++[show x]++“ “) ““ [3,10,1] でOK
261 :デフォルトの名無しさん :2023/11/20(月) 09:46:08.35 ID:sZ0M6Dsh.net >260 打ち間違えた! lnlt$foldl(\a x->a ++show x++" ")[][1,10,3] が正解。
262 :デフォルトの名無しさん :2023/11/20(月) 14:32:44.66 ID:4MiKC4cJ.net >>258 ぎゃははははははは
263 :デフォルトの名無しさん :2023/11/20(月) 21:45:30.49 ID:Jf1v4QK8.net https://github.com/ken-okabe/functional-programming-from-scratch-ja#before > Unkown(気づいてない) ウンコウンわろた。
264 :デフォルトの名無しさん :2023/11/20(月) 23:57:47.37 ID:N43MAaAU.net スレチ
265 :デフォルトの名無しさん :2023/11/21(火) 12:01:48.14 ID:MS7pneIs.net 毛の壁くん復活してたのか!!
266 :デフォルトの名無しさん :2023/11/21(火) 12:21:46.16 ID:W0g+S6dW.net https://archive.md/m7008 毛の壁(岡部健)についてはここが詳しい
267 :デフォルトの名無しさん :2023/11/22(水) 15:27:17.26 ID:1OepVPCl.net こんなコードがあるのですが 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というのはどういう文法なのですか? リスト内包表記でもないですし条件式の部分でモナドを扱ってるわけではないですよね?
268 :デフォルトの名無しさん :2023/11/22(水) 16:31:30.12 ID:PuIW3qrN.net >>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)
269 :デフォルトの名無しさん :2023/11/23(木) 07:24:43.49 ID:WRBO39fy.net <-はパターンガード修飾子と呼ぶのですね 初めて知りました ありがとうございました
270 :デフォルトの名無しさん :2023/11/24(金) 17:42:26.91 ID:V3Fz2AWZ.net 毛の壁のTwitterの新しいアカウントは Ken140291 FPFSstutorial leadmove3648637 です!!
271 :デフォルトの名無しさん :2023/12/04(月) 12:27:24.28 ID:GjmDAseS.net >>270 ぎゃっはっはっはっはw
272 :デフォルトの名無しさん :2024/01/01(月) 20:17:21.69 ID:DcfOChZv.net mapAccumL/Rの使いどころがよくわからないのですが どういう時に使うとかの指針ってありますか?
273 :デフォルトの名無しさん :2024/01/09(火) 22:50:44.14 ID:3mg8b04T.net ここ5年で発売されたHaskellの書籍で最も優れたものを紹介してください
274 :デフォルトの名無しさん :2024/01/12(金) 10:55:28.35 ID:cAhPSGjh.net オワコン
275 :デフォルトの名無しさん :2024/02/29(木) 01:38:01.78 ID:d2gqoSk4.net windowsにインストールできんみたいだなcabalがエラー? まあwindowsでやるなってことだな
276 :デフォルトの名無しさん :2024/03/03(日) 23:47:35.89 ID:9XAeTkis.net モナドについて、床下配線に例えられたり、世界を受け取って副作用後の世界を返すと(IOモナドについて)語られたりするのが当時は分からなくて、考えた結果 何かから値を取り出し、関数適用して(その関数が)何かに値を戻す「動き」をモナドという。 って結論になっていたのだが、IOモナドも含めてもっと良い例えはないかと考えた結果、 モナドとは、アウトソーシング(外部依頼)を数学的に表現したもの。 という結論に至った。 アウトソーシング先が(数学の)外の世界だとIOモナドで、同じ数学の世界だとその他のモナド。 それならHaskell自身は「この関数実行しておいて~」って依頼出して結果を受け取るだけだから、 副作用はないと言う主張に矛盾はない(のか?) (もしくは、IOモナドはHaskellが受け取れる形の値を返すような入出力の「マシン語」を返してる?) そう考えると、数学が「数学の外とのやり取り」という概念を獲得したと思うと凄い。
277 :デフォルトの名無しさん :2024/03/04(月) 00:46:59.53 ID:XMYw3zR0.net 箱の中に処理したいデータが入ってるけど一緒にIOウイルスも入ってて 普通に箱を開けるとIOウイルスが外界に漏れて困るから もう一回り大きい箱を用意してその中に箱とデータ処理装置を入れて 密封した上で内側の箱を開けてデータを処理する そうすると箱の中に処理されたデータとIOウイルスが入った状態になる これを延々と繰り返すのがIOモナド ずっと前に毒ガスで考えた比喩だけど最近だとこっちだな
278 :デフォルトの名無しさん :2024/03/04(月) 01:02:22.82 ID:vyClhVzf.net ふーむ。 仮にアセンブラと1対1に対応したCの関数を全部Haskellから呼べるようにすると、出来ちゃうわけで。 (do形式だとまるっきりアセンブラコードに見えるHaskellコードの出来上がり) そう考えて私のアウトソーシング説が出来た感じですね。 Haskellがモナドを採用したのは数学(関数型言語だったっけ?)の敗北ってどっかで読みましたし。
279 :デフォルトの名無しさん :2024/03/04(月) 01:22:40.61 ID:XMYw3zR0.net doの場合は1行ごとに新しい箱が作られてる 順序はたまに前後するけど内側の箱のデータは外側の箱でしか使えないから 必要な順序は保証される 外界の予測不能な状態を全部1つの箱の中に押し込んで 箱の外側の処理装置製造工場は全部予測可能(純粋)にしてる感じ 数学の敗北の意味はよく分からないけど 実用性のために予測不能な状態を持ち込んだことかな
280 :デフォルトの名無しさん :2024/03/06(水) 10:29:39.18 ID:Yy7OLBEk.net なんか大げさな例えを使いたがるやつが増えたなぁ コーディングの上でなんの役に立つんだが
281 :デフォルトの名無しさん :2024/03/06(水) 15:29:14.97 ID:soRPwZI7.net 「末尾呼び出ししたい関数をデータコンストラクタで置き換える」という仮説は役に立つけれども (>>=)はコンストラクタではないという事実を見ただけで仮説を捨ててしまうことは科学的によくあること
282 :デフォルトの名無しさん :2024/04/10(水) 04:46:37.45 ID:+L19CyUd.net WindowsでghcupをインストールするのにWSLが不要になって PowerShellだけで導入できるようになってる
283 :デフォルトの名無しさん :2024/04/13(土) 09:43:59.70 ID:p3ysjEUv.net rustスレで知ったけどhaskellを正格にして依存型を入れたidris(idris2)つー言語があるんだな
284 :デフォルトの名無しさん :2024/04/13(土) 10:37:58.47 ID:VEwLcqlL.net idrisまで興味があるのならHaskell/Elm/Rust/Zigの流れで開発されているRoc-langも見ておくと良い 特にstatic reference counting周り
285 :デフォルトの名無しさん :2024/04/13(土) 22:46:49.50 ID:p3ysjEUv.net 色々知らないのがあった、ありがとう static reference countingつーのが流行りなの 最近のhaskellもrustみたいな1回しかつかえない線形型(linera haskell?)が導入されてるね
286 :デフォルトの名無しさん :2024/04/14(日) 08:32:57.22 ID:ZXz6cRZI.net IOモナドの入力関数も、引数のない関数=変数と捉えると、実質線形型と同じ。 let x = 0 in return (x + 1) >>= x -> print x こうすると変数xはシャドーイングによって同名の別の変数が生成される。 getLineとかの入力関数はHaskell(数学)の外で初期化される変数とも考えられる。
287 :デフォルトの名無しさん :2024/05/17(金) 10:56:06.61 ID:kEVlBeR0.net 参照カウントは0になれば即座にデストラクタを呼び出す つまり呼び出しを遅延しない 正格にすることと参照カウントを入れることは実質的に同じこと
288 :デフォルトの名無しさん :2024/05/18(土) 22:55:12.58 ID:HEnIptqp.net cabalのバージョン上がってたので windowsで試したらちゃんと動いたわ 気にかけてくれてたんやな
82 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200
本文 スレッドタイトル 投稿者