関数型プログラミング言語 Haskell について語るスレです。
Haskell Language(公式サイト)
https://www.haskell.org/
日本Haskellユーザーグループ - Haskell-jp
https://haskell.jp/
前スレ
関数型プログラミング言語Haskell Part33
https://mevius.5ch.net/test/read.cgi/tech/1581326256/
関数型プログラミング言語Haskell Part34
1デフォルトの名無しさん
2021/12/17(金) 12:57:26.37ID:NPioGyUL18デフォルトの名無しさん
2021/12/23(木) 17:28:45.18ID:iaSGtOUq ken80297274
岡部さんのサブアカウント発見
岡部さんのサブアカウント発見
19デフォルトの名無しさん
2021/12/23(木) 20:30:31.33ID:hyDq6lCn どんな人生を生きたら実名でこんな攻撃的な調子でtwitter上で不特定多数に絡みに行こうと思えるんだ
実際実社会で会ったらどんな感じの人なんだろう
実際実社会で会ったらどんな感じの人なんだろう
20デフォルトの名無しさん
2021/12/23(木) 21:25:57.12ID:cmpFYqPS 岡部健さんはアメリカのUCLA卒業と書いていたらしいので、情報技術の素養はあるんじゃないか?
https://twitter.com/ohagiya/status/226163166067949568
http://archive.ph/1oA1C
>>「まああれでUCLAとかよく嘘こけるよねー。 」
>とは、これも、僕が学歴詐称しているという野田憲太郎の妄想にはじまる
>「バッシングに用いる好物のネタ」であり、もちろんそのような学歴詐称の事実などないし、それも名誉毀損として刑事告訴の要件に入っている。
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/ohagiya/status/226163166067949568
http://archive.ph/1oA1C
>>「まああれでUCLAとかよく嘘こけるよねー。 」
>とは、これも、僕が学歴詐称しているという野田憲太郎の妄想にはじまる
>「バッシングに用いる好物のネタ」であり、もちろんそのような学歴詐称の事実などないし、それも名誉毀損として刑事告訴の要件に入っている。
https://twitter.com/5chan_nel (5ch newer account)
21デフォルトの名無しさん
2021/12/23(木) 21:27:02.59ID:cmpFYqPS Twitterで
ohagiya UCLA
で検索すると岡部健さんの学歴にけちを付けてる人が出てくるね
ohagiya UCLA
で検索すると岡部健さんの学歴にけちを付けてる人が出てくるね
22デフォルトの名無しさん
2021/12/23(木) 23:57:52.67ID:MjSWMWRR ハリウッド映画でよくある、酒場でのウィットに富んだ大人の会話の一種では?
0時を過ぎると、酒瓶を割って拳で語り合う・・・いまその状態では?
夜が明けると、互いを理解し絆が深まる。
そして生涯の友となるのでは?
0時を過ぎると、酒瓶を割って拳で語り合う・・・いまその状態では?
夜が明けると、互いを理解し絆が深まる。
そして生涯の友となるのでは?
23デフォルトの名無しさん
2021/12/27(月) 09:38:29.17ID:hZ17KgJk https://ken-okabe
.hatenablog
.com/entry/2021/12/20/134121
『結局は、あろうことか、当時のQiita運営がこういう匿名炎上目的のアカウントの思惑に乗っかる形で、僕の反論コメントを消してしまったので』
と書いてるので、当時nonstarterさんの記事のコメント欄に出没していたのは岡部健本人だったのかな。
ことあるごとに「岡部氏」って別人のように書いてたのにね
.hatenablog
.com/entry/2021/12/20/134121
『結局は、あろうことか、当時のQiita運営がこういう匿名炎上目的のアカウントの思惑に乗っかる形で、僕の反論コメントを消してしまったので』
と書いてるので、当時nonstarterさんの記事のコメント欄に出没していたのは岡部健本人だったのかな。
ことあるごとに「岡部氏」って別人のように書いてたのにね
24デフォルトの名無しさん
2021/12/28(火) 01:15:18.08ID:e4meyx5L 高度IT人材、富士通は最大年収3500万円へ
「富士通年収3500万!」日本のIT企業の年収も、高額化してきました
AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ
【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材
来年度から副業解禁 人材多様化へ―大同生命次期社長
副業・兼務の解禁から4年、ロート製薬流で進めるキャリア支援
ロート製薬が副業をいち早く導入した「超人間的」な理由
ロート製薬会長が「副業を受け入れない会社は発展しない」と断言する理由
「富士通年収3500万!」日本のIT企業の年収も、高額化してきました
AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ
【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材
来年度から副業解禁 人材多様化へ―大同生命次期社長
副業・兼務の解禁から4年、ロート製薬流で進めるキャリア支援
ロート製薬が副業をいち早く導入した「超人間的」な理由
ロート製薬会長が「副業を受け入れない会社は発展しない」と断言する理由
25デフォルトの名無しさん
2021/12/28(火) 08:27:45.42ID:FaceSKSV2021/12/31(金) 02:20:27.03ID:aP8qPSMg
シンプルなワードカウント書いたけど関数合成でワードカウントが組めません
" 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"
みたいな書き方がしたい
" 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"
みたいな書き方がしたい
2021/12/31(金) 03:53:55.07ID:aP8qPSMg
自己解決したけどデータが多いとスタックが...
>countword . countchars . map chkspand $ " 1313 13 111 rfr fdf"
>5
>countword . countchars . map chkspand $ " 1313 13 111 rfr fdf"
>5
2021/12/31(金) 14:45:34.52ID:KqmzC1Ir
リストみたいなただのデータコンストラクタだったら、いくら長くてもスタック関係ないのに
リストをfoldrしたような物が出てくるとスタックでみんな躓く
リストをfoldrしたような物が出てくるとスタックでみんな躓く
29デフォルトの名無しさん
2021/12/31(金) 14:58:51.96ID:bqUePCKa スクラッチで書くなら(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"
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"
2021/12/31(金) 16:30:35.01ID:aP8qPSMg
>>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
上手く行きました
イテレータのパターンマッチ目からウロコ
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
上手く行きました
イテレータのパターンマッチ目からウロコ
2021/12/31(金) 20:42:25.11ID:aP8qPSMg
32デフォルトの名無しさん
2021/12/31(金) 20:58:03.01ID:bqUePCKa >>31
それは処理系のimplement依存だから一概には言えないけど多分stack上に(1+)関数が乗っていって最後に確定した0が入ってから計算しそうな気がする
それは処理系のimplement依存だから一概には言えないけど多分stack上に(1+)関数が乗っていって最後に確定した0が入ってから計算しそうな気がする
2021/12/31(金) 21:10:21.51ID:aP8qPSMg
>>32
了解しました
了解しました
2022/01/02(日) 20:44:02.99ID:OOMiLRw0
>>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が積みあがらないはず
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が積みあがらないはず
2022/01/02(日) 21:09:40.82ID:OOMiLRw0
2022/01/03(月) 00:17:58.15ID:eS7vipFo
OOPでも、整数を他のオブジェクトとは全然違う形式にしないと
計算が遅過ぎてダサくなるよね
逆にオブジェクトの方を整数と同じようなGC非依存みたいな構造にする手もあるか
計算が遅過ぎてダサくなるよね
逆にオブジェクトの方を整数と同じようなGC非依存みたいな構造にする手もあるか
37デフォルトの名無しさん
2022/01/03(月) 08:08:25.82ID:hLrwvjQQ2022/01/03(月) 11:20:12.64ID:TEX8BSo6
>>37
今回のお題はワードカウント、ファイルサイズがギガになる場合を想定
スタックなりヒープなりを消費しない手法は?です
Cなどで実装した場合、ループでカウントして再帰なしスタックもヒープも消費なしとか(可読性は...)
他にマルチスレッドで分割カウントした時の手法とか(ディスクのIOで律速か)
今回のお題はワードカウント、ファイルサイズがギガになる場合を想定
スタックなりヒープなりを消費しない手法は?です
Cなどで実装した場合、ループでカウントして再帰なしスタックもヒープも消費なしとか(可読性は...)
他にマルチスレッドで分割カウントした時の手法とか(ディスクのIOで律速か)
39デフォルトの名無しさん
2022/01/03(月) 12:59:34.38ID:hLrwvjQQ 今回の場合1ワード消費するたびにスタック一個消費するから必要なメモリリソースが倍以上になる可能性もあるから意味はあるかな
特にコレは>>34の方法だと必要なメモリリソースがデータ保持する分を除けばlogオーダーになるからな
しかも読み込んだデータは順次捨てていけるし(そこまでのカウント結果を保持しないといけないので有限オートマトンでは無理だけど有限オートマトン以上、チューリング完全以下、こういう計算クラスは名前ついてるのかな?)
個人的にはこういうときメモリ線形、時間線形までは許さないと大した事できないことが多いのでそれ以上のこだわりは持たないようにしてる
数学的研究対象とかにするなら別だけど
特にコレは>>34の方法だと必要なメモリリソースがデータ保持する分を除けばlogオーダーになるからな
しかも読み込んだデータは順次捨てていけるし(そこまでのカウント結果を保持しないといけないので有限オートマトンでは無理だけど有限オートマトン以上、チューリング完全以下、こういう計算クラスは名前ついてるのかな?)
個人的にはこういうときメモリ線形、時間線形までは許さないと大した事できないことが多いのでそれ以上のこだわりは持たないようにしてる
数学的研究対象とかにするなら別だけど
2022/01/03(月) 15:29:08.17ID:TEX8BSo6
41デフォルトの名無しさん
2022/01/04(火) 16:11:04.31ID:h755Av8k Haskellを身に付けた人は他の言語も使えると予想しますが、いくつもの言語の中からHaskellを選んで
プログラムを書くのはどんな課題、問題を解決したいときなんでしょうか
プログラムを書くのはどんな課題、問題を解決したいときなんでしょうか
2022/01/04(火) 16:44:18.80ID:HuVGMWib
課題が「ガベージをコレクトしたい」だけだったとしても
じゃあ静的型は不要だとかジェネリクスは不要だとはならない
だから課題と関係ない部分を作り込む
じゃあ静的型は不要だとかジェネリクスは不要だとはならない
だから課題と関係ない部分を作り込む
43デフォルトの名無しさん
2022/01/05(水) 10:28:01.47ID:imDyM2+l Twitterの検索で
@ohagiya @kenokabe
と入れると楽しいよな
@ohagiya @kenokabe
と入れると楽しいよな
44デフォルトの名無しさん
2022/01/11(火) 17:47:50.88ID:rZde0CTm45デフォルトの名無しさん
2022/01/14(金) 10:48:22.13ID:3PF6dXYX 最新の怪文書も読んだけどさ、毛の壁は毎回毎回威勢だけは良いんだよなw
たとえば「ちくわは民事でもやる!」「ちくわはもう詰み」(9年前)
「ちくわはもう死に体」(7年前)とかさ。
死に体なのに、つい最近もブログで恨み節w
ネズミ一匹、始末できないなんてだらしがないな
たとえば「ちくわは民事でもやる!」「ちくわはもう詰み」(9年前)
「ちくわはもう死に体」(7年前)とかさ。
死に体なのに、つい最近もブログで恨み節w
ネズミ一匹、始末できないなんてだらしがないな
46デフォルトの名無しさん
2022/01/15(土) 18:49:30.83ID:chCIM2fB 質問です
array と List の性能の差がいまいちピンと来ません
何か「この例ではどう考えてもarray、ほらこんなに性能に差が出る」って例ご存知ないですか?
array と List の性能の差がいまいちピンと来ません
何か「この例ではどう考えてもarray、ほらこんなに性能に差が出る」って例ご存知ないですか?
47デフォルトの名無しさん
2022/01/16(日) 12:22:44.80ID:f2QwXzzi 質問です
何かの文章で
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の結果を自分で勝手に“メモ化”してよきにはからってくれているんでしょうか?
何かの文章で
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
$ square $ square $ square $ square $ square
$ square $ square $ square $ square $ square
$ square $ square $ square $ square $ square
$ const3
みたいなプログラムで試してみました
もし説明通りならconst3が2^15回呼ばれて*がいっぱい出てきそうですが、やってみると*は一個しか出てきません
コレは何故ですか?
ちなみにghcです
ghcがconst3の結果を自分で勝手に“メモ化”してよきにはからってくれているんでしょうか?
2022/01/16(日) 13:40:56.61ID:rC9oNTrC
メモ化は独自実装ではなく仕様
何かの文章は嘘
でも騙されたことがないので被害が存在しないし、加害者も存在しない
何かの文章は嘘
でも騙されたことがないので被害が存在しないし、加害者も存在しない
49デフォルトの名無しさん
2022/01/16(日) 14:36:08.72ID:f2QwXzzi50デフォルトの名無しさん
2022/01/16(日) 14:39:15.35ID:f2QwXzzi 何かの文章は "ウォークスルー Haskell" というやつでした
http://walk.northcol.org/haskell/eval-strategies/
3 ではなく 1 + 2 でやってました
http://walk.northcol.org/haskell/eval-strategies/
3 ではなく 1 + 2 でやってました
2022/01/16(日) 18:39:45.50ID:ZlAL8rfa
seqだと結果はどうなるんですか?
52デフォルトの名無しさん
2022/01/16(日) 18:54:16.95ID:f2QwXzzi >>51
square x = x * x
を
square x = seq x $ x * x
にして明治的に“xを評価してからx*xを計算せよ”に変えるともちろん*ひとつです
それは納得いきます
ウォークスルーHaskellにもそうなると書いてあるしHaskell Language Report 2010にもseqで正格評価になると書いてあります
なのでコレは納得いくんですがseqなしの場合の動作が文書と異なるように見えます
もちろん参照透過性があるので一度計算した結果をメモ化して再利用しても同じ答えにならないといけないので答え自体は同じになるわけですけど
コレはたまたまGHCの開発者が優秀でHaskellの標準動作としては保証されない事までやってくれてるだけなのか、標準動作としてメモ化しないといけないことになってるのかどっちだろうと
今のところ今自分が勉強してるプログラムにはseq入れて明治的に正格評価してもらってるんですけど標準でメモ化してくれるなら消せるしスッキリするし、あるいは明示しないと他の処理系だとしてくれないなら残しとかないといけないし
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.47ID:FNscPcIY 銀の弾丸のHaskellをIT企業が採用したら市場を席捲できるのでは???
実際そうなると思う?
実際そうなると思う?
2022/01/17(月) 13:17:04.94ID:3dpBVALW
Windows10にVSCode入れて、Haskellを遊ぼうとしたけど上手く入らない。
コマンドラインで細かく入れて遊ぶしかないかな。
コマンドラインで細かく入れて遊ぶしかないかな。
2022/01/18(火) 00:23:47.53ID:1uCkeDxh
https://www.haskell.org/ghcup/
>GHCup is an installer for the general purpose language Haskell.
>GHCup is an installer for the general purpose language Haskell.
56デフォルトの名無しさん
2022/01/27(木) 08:50:29.18ID:NJ4yaxSd https://qiita.com/lucker_summer/items/baa68e681872de44d5f8
コメント欄ひどすぎだろ
@stken2050(これ岡部健)が非道いので皆さん通報してほしい
コメント欄ひどすぎだろ
@stken2050(これ岡部健)が非道いので皆さん通報してほしい
2022/01/27(木) 10:10:34.06ID:orDFdZXN
58デフォルトの名無しさん
2022/01/27(木) 11:59:44.42ID:oUTYjCet 岡部さんこんにちは
59デフォルトの名無しさん
2022/01/27(木) 12:03:44.88ID:eY59BLQP https://twitter.com/mutamac/status/322296035147935744
引用
「Linuxの元になったMINIXが復権中。期待。」という自称ギークとの話』の魚拓を取りました http://nmuta.dip.jp/~muta/toog237.pdf
https://twitter.com/5chan_nel (5ch newer account)
引用
「Linuxの元になったMINIXが復権中。期待。」という自称ギークとの話』の魚拓を取りました http://nmuta.dip.jp/~muta/toog237.pdf
https://twitter.com/5chan_nel (5ch newer account)
60デフォルトの名無しさん
2022/01/27(木) 23:00:32.74ID:7u9WcLA6 そうじゃなくて、PHPやHaskellごときが偉そうにすんなって事だろ。
質問者が来たらお茶菓子くらい出せ。
底辺やマイナー言語はそうするべき。
質問者が来たらお茶菓子くらい出せ。
底辺やマイナー言語はそうするべき。
2022/01/28(金) 01:07:24.72ID:dNnJMVwD
誰かをディスるよりも、こういう話の方が面白くない?
https://www.reddit.com/r/haskell/comments/s7p29y/letin_vs_function_application_space_leaks/
https://www.reddit.com/r/haskell/comments/s7p29y/letin_vs_function_application_space_leaks/
2022/01/28(金) 09:50:56.34ID:F+QYYxM3
63デフォルトの名無しさん
2022/02/01(火) 14:44:50.86ID:VXi8EI6O64デフォルトの名無しさん
2022/02/01(火) 15:19:04.39ID:rr+/bjEX https://twitter.com/kuratan/status/114732100682391552
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/5chan_nel (5ch newer account)
2022/02/01(火) 18:35:16.11ID:e9RXuv9o
>>56
どいつも誰だか知らんしどーでも良いが
見た感じ、@Zuishinの記事は確かにしょぼい記事だが、@stken2050の反論にも無理があるな
@Zuishinに関しては、大きな主張をしている割に根拠がかなりしょぼいせいで、記事として価値が低くなっているように思える
対する@stken2050の反論だが、「排他的ではないので反対ではない!」云々は無理がありすぎ
「反対」という自然言語の単語が元々ガバガバなのは誰だって知ってるんだから、それに対して自分で勝手に厳密な定義を与えて、その定義に基づいて矛盾を指摘したって、そりゃ「日本語わかりますか」言われるわ
さらに@stken2050の反論ではwikipediaと異なる高階関数の定義を使っているが、それならwikipedia以上に信憑性の高いソース出して、英語版wikipediaに書かれている高階関数の定義に疑問を呈するのが筋
それをしてないせいで論理的にぶっ飛んで見える
どいつも誰だか知らんしどーでも良いが
見た感じ、@Zuishinの記事は確かにしょぼい記事だが、@stken2050の反論にも無理があるな
@Zuishinに関しては、大きな主張をしている割に根拠がかなりしょぼいせいで、記事として価値が低くなっているように思える
対する@stken2050の反論だが、「排他的ではないので反対ではない!」云々は無理がありすぎ
「反対」という自然言語の単語が元々ガバガバなのは誰だって知ってるんだから、それに対して自分で勝手に厳密な定義を与えて、その定義に基づいて矛盾を指摘したって、そりゃ「日本語わかりますか」言われるわ
さらに@stken2050の反論ではwikipediaと異なる高階関数の定義を使っているが、それならwikipedia以上に信憑性の高いソース出して、英語版wikipediaに書かれている高階関数の定義に疑問を呈するのが筋
それをしてないせいで論理的にぶっ飛んで見える
66デフォルトの名無しさん
2022/02/02(水) 12:32:50.68ID:4gWS4lIC >>63
無事、記事が凍結されたね
無事、記事が凍結されたね
67デフォルトの名無しさん
2022/02/04(金) 08:30:39.02ID:iaw7RH3I 完全に荒らしやろあれ
2022/02/08(火) 08:58:59.73ID:t2yWr+Jt
Haskellって日本人に受けそうで実際一時期話題になったけど
結局下火になっちゃったね
なんでだろう
結局下火になっちゃったね
なんでだろう
69デフォルトの名無しさん
2022/02/08(火) 12:34:20.88ID:iTFetD6R haskellでしばらく何かを学んだら、元いたところに帰っていくんじゃないかな
2022/02/09(水) 10:14:27.54ID:9eeUOmy1
型とGCが下火になったから
型無しならPython
GC無しならRustに行く
型無しならPython
GC無しならRustに行く
2022/02/09(水) 10:49:56.61ID:Lp+6eS6t
型下火になることなんてある?
2022/02/09(水) 13:51:00.40ID:LMpY9ePh
>>70の中では下火になったんだろ
2022/02/09(水) 14:32:04.90ID:4IAm5Mq6
両方なしならどこへ行けばいい?
2022/02/09(水) 16:30:45.01ID:tjRbJd/i
両方ないならAPIと言語が無関係なクラウドみたいな感じになりそう
2022/02/09(水) 19:00:25.72ID:/Rs/AQCx
Cじゃだめなん?
あと、型なしじゃなくて、動的型で良ければ、
Objective-Cがかなり自由度高かった気がする。
あと、型なしじゃなくて、動的型で良ければ、
Objective-Cがかなり自由度高かった気がする。
2022/02/10(木) 14:08:35.36ID:Rx8BtNec
単純に難しいからだろ
元の言語仕様はシンプルなのに、ソフトウェア工学的なノウハウに基づいてOOPと同等以上の実装を実現しようとすると、とたんに大量のGHC拡張と難解な型が出てきてわけわからんくなる
元の言語仕様はシンプルなのに、ソフトウェア工学的なノウハウに基づいてOOPと同等以上の実装を実現しようとすると、とたんに大量のGHC拡張と難解な型が出てきてわけわからんくなる
2022/02/10(木) 17:05:47.42ID:0/0SR33O
lensの型とか複雑すぎる
2022/02/11(金) 01:01:15.27ID:oG7lMZNP
setterの存在自体がマナー違反ということにすればある意味単純なんだよ
マナー違反したせいで複雑すぎるのは自己責任、言語のせいにするなってね
マナー違反したせいで複雑すぎるのは自己責任、言語のせいにするなってね
79デフォルトの名無しさん
2022/02/12(土) 14:38:21.43ID:3EVMkjej 岡部健
2022/02/12(土) 14:59:18.26ID:MmDcA0PA
2022/02/13(日) 02:50:13.95ID:gJE3VDE6
GHC方言とかの知識が豊富な奴ってどちらかといえば反抗的な性格だと思う
それなのに、オリジナルの仕様への忠誠心が高ければ高いほど有能みたいな誤解がある
その上更にいかにも忠誠心なさそうなキャラまで作られてるし
それなのに、オリジナルの仕様への忠誠心が高ければ高いほど有能みたいな誤解がある
その上更にいかにも忠誠心なさそうなキャラまで作られてるし
82デフォルトの名無しさん
2022/02/14(月) 11:54:21.19ID:4AqyxcJv 最近数値計算の勉強してるんですけど、よく最近高速フーリエ変換を用いた乗算の高速化なんて話が出てきます
サイズの大きい整数の掛け算とかを高速化する手法で桁数n同士の乗算のコストをn log(n)に抑えるのだとか
これGHCのInteger型の乗算には応用されてますかね?
やっぱりそこまで速さに拘りたいならご自分でのスタンス?
GHCのソースが読めるほどのスキルはないのでよくわからない
そもそもGHCのソースってどこに転がってます?
サイズの大きい整数の掛け算とかを高速化する手法で桁数n同士の乗算のコストをn log(n)に抑えるのだとか
これGHCのInteger型の乗算には応用されてますかね?
やっぱりそこまで速さに拘りたいならご自分でのスタンス?
GHCのソースが読めるほどのスキルはないのでよくわからない
そもそもGHCのソースってどこに転がってます?
2022/02/14(月) 20:10:36.04ID:TSLH56nb
>>82
ghc haskell ソース でググれば見つかる
ghc haskell ソース でググれば見つかる
2022/02/14(月) 20:56:01.04ID:uQiQyHca
ソースを1行も読まなくても分かることがいくつかある
IntとIntegerの二刀流ができるなら三刀流もできること
第二第三の型を追加するだけのためにコンパイラをコンパイルするのは無意味過ぎること
IntとIntegerの二刀流ができるなら三刀流もできること
第二第三の型を追加するだけのためにコンパイラをコンパイルするのは無意味過ぎること
85デフォルトの名無しさん
2022/02/14(月) 21:36:02.36ID:4AqyxcJv >>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の開発者メチャメチャ優秀っぽいし」と思った次第
見つからない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.77ID:4AqyxcJv あら、アンカー一個ずれ
2022/02/14(月) 21:54:21.41ID:BjFXlOcH
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
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.14ID:4AqyxcJv >>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桁くらいは余裕というのは確認済みなんです
週末にでも桁数増やして実験してみます
ありがとうございました
おお、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桁くらいは余裕というのは確認済みなんです
週末にでも桁数増やして実験してみます
ありがとうございました
2022/02/15(火) 00:40:37.96ID:2crEr/EW
Haskellの多倍長計算、昔は大変だったけど今はよくなった、みたいな記事が10年前くらいに書かれてた
http://tanakh.jp/posts/2012-03-08-pi.html
http://tanakh.jp/posts/2012-03-08-pi.html
90デフォルトの名無しさん
2022/02/15(火) 19:39:32.71ID:ujR6VeHM >>89
おお、先人がいたww
いや〜Haskellって速さ求めるならあんまりいい選択肢ではなさそうですけどやっぱり挑戦してみたくなりますね
その人のページのリンク先がすごく参考になりました
ようやくChudnovskyの公式とかいうのがなんで最速なのかわかりました
収束速度そのものはどう考えてもAGMの方が早いのになんでChudnovskyの方が早いんだと
Binary Splittingという技使ってまとめて計算していく方法があるんですね
ちょっと感動しました
まぁともかくInteger型の計算で10億桁くらいまで実用的な?速度で計算できるもんなんですね
ボチボチやってみます
おお、先人がいたww
いや〜Haskellって速さ求めるならあんまりいい選択肢ではなさそうですけどやっぱり挑戦してみたくなりますね
その人のページのリンク先がすごく参考になりました
ようやくChudnovskyの公式とかいうのがなんで最速なのかわかりました
収束速度そのものはどう考えてもAGMの方が早いのになんでChudnovskyの方が早いんだと
Binary Splittingという技使ってまとめて計算していく方法があるんですね
ちょっと感動しました
まぁともかくInteger型の計算で10億桁くらいまで実用的な?速度で計算できるもんなんですね
ボチボチやってみます
2022/03/28(月) 00:29:30.89ID:dN2icdd7
Haskell昔は日本でも人気あったのにどうしてこうなった
2022/03/28(月) 00:37:16.39ID:NMG6YJEi
人気ないって事?
そりゃそうでしょ?
お世辞にも使いやすいとは言えない
そりゃそうでしょ?
お世辞にも使いやすいとは言えない
2022/03/28(月) 17:03:01.17ID:o+cr0I/L
>>92
使いにくいと感じるところを教えてください
使いにくいと感じるところを教えてください
2022/03/28(月) 18:04:03.42ID:kSkV8rOb
文字列操作のパッケージを作っている。
1文字づつ評価して処理するのは出来るけど
ループで実現しようとすると、上手くいかない。
[Char]型とString型で混ぜて作ったせいか
ボトムアップ方式で作るのが間違えなのか。
まだまだ初心者の愚痴。
1文字づつ評価して処理するのは出来るけど
ループで実現しようとすると、上手くいかない。
[Char]型とString型で混ぜて作ったせいか
ボトムアップ方式で作るのが間違えなのか。
まだまだ初心者の愚痴。
2022/04/07(木) 21:21:24.28ID:v9cHeTKb
Stringは[Char]の別名だが
2022/04/08(金) 04:13:38.57ID:ZfK1p/yR
Haskell-jp slackってどうなの?
2022/04/08(金) 13:18:29.82ID:7u/c8YSR
とりあえず入ってみたら?
2022/05/25(水) 23:07:08.21ID:HGLTMsh1
>>91
純粋関数型といいつつ実際にはそうではないし
結局はモナドも使わなきゃ実用的なものは作れない
よく例題に上がるようなシンプルな書き方すると遅いし
Lispでも同じようにあった問題で綺麗な書き方よりも早い書き方が重視される
そうこうしているうちにどんどん人は離れていったよ
理念が現実に負けたのだと思う・・
純粋関数型といいつつ実際にはそうではないし
結局はモナドも使わなきゃ実用的なものは作れない
よく例題に上がるようなシンプルな書き方すると遅いし
Lispでも同じようにあった問題で綺麗な書き方よりも早い書き方が重視される
そうこうしているうちにどんどん人は離れていったよ
理念が現実に負けたのだと思う・・
2022/05/25(水) 23:31:09.11ID:HGLTMsh1
あとそうだ
なによりもデバッグがあまりに困難すぎるし
デバッグのために型制約とか何バカやってんだろな・・って思うことしばしば
作業環境が悪いのがまるで改善されないから嫌になる
なによりもデバッグがあまりに困難すぎるし
デバッグのために型制約とか何バカやってんだろな・・って思うことしばしば
作業環境が悪いのがまるで改善されないから嫌になる
100デフォルトの名無しさん
2022/05/27(金) 23:36:10.66ID:IybSybG6 型はコンパイル時にしか存在しない
モナドクラスもコンパイル時にしか使わない
実行時に使われているのはモナドのインスタンスのみ
そのインスタンスは任意の言語で再発明できる
どの言語でデバッグしても困難は同じ
結局は再発明をやらなきゃ実用的な知識が身につかない
モナドクラスもコンパイル時にしか使わない
実行時に使われているのはモナドのインスタンスのみ
そのインスタンスは任意の言語で再発明できる
どの言語でデバッグしても困難は同じ
結局は再発明をやらなきゃ実用的な知識が身につかない
101デフォルトの名無しさん
2022/05/27(金) 23:58:56.33ID:IeVDSTdQ 今だにprintfデバッグに頼ってるなんてHaskellくらいのものかもね・・
102デフォルトの名無しさん
2022/05/28(土) 00:21:10.26ID:1xwNIN3l Cのライブラリに丸投げする効率化を考えれば
デバッグの効率化にはこだわらない方が丸投げしやすい
デバッグの効率化にはこだわらない方が丸投げしやすい
103デフォルトの名無しさん
2022/07/18(月) 03:26:49.61ID:zDzunRmU なんでここまで人気なくなったんだろうな
104デフォルトの名無しさん
2022/07/18(月) 14:14:58.82ID:IRYfc5Qz 声の大きい人たちが使わなくなっただけでは
105デフォルトの名無しさん
2022/07/19(火) 17:39:52.93ID:6V/PH7AR 個人が言語を自作できるレベルになってる説
団体は必須ではない
団体は必須ではない
106デフォルトの名無しさん
2022/08/07(日) 20:06:46.56ID:My+goEll ハマりました
次のコード通らん理由が分からん
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]]
を見てもどう見てもパターンマッチしてるのに?
何故?
次のコード通らん理由が分からん
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.73ID:NwZYLTPj108デフォルトの名無しさん
2022/08/09(火) 10:46:53.89ID:VUIfOlq+109デフォルトの名無しさん
2022/08/11(木) 18:04:41.32ID:9dSVJvSP おまいらこのクソ暑い夏をどうにかするCOOLなコードをHaskellで簡潔に書けんのか?
110デフォルトの名無しさん
2022/08/25(木) 11:20:55.19ID:97f0Pf6Z ttps://hackage.haskell.org/package/mtl-2.3/docs/src/Control.Monad.Writer.Class.html#tell
listen ~(w, a) = (w, (a, w))
この~はどういう文法なの?
listen ~(w, a) = (w, (a, w))
この~はどういう文法なの?
111デフォルトの名無しさん
2022/08/25(木) 21:14:39.81ID:+PRPT5FW112デフォルトの名無しさん
2022/08/25(木) 21:15:08.79ID:3SQ1xNiu stack でwxHaskell インストールしようとしたんだが、
> stack install wxHaskell
とすると
Unknown package: wxhaskell
とでてインストールできない。
StackだとwxHaskellインストールできないの?んなわけないと思うんだが。
公式見てもstackの場合の方法が書いてない。
> stack install wxHaskell
とすると
Unknown package: wxhaskell
とでてインストールできない。
StackだとwxHaskellインストールできないの?んなわけないと思うんだが。
公式見てもstackの場合の方法が書いてない。
113デフォルトの名無しさん
2022/08/29(月) 23:25:47.74ID:mJ1Da6QY stackage に入っていないからじゃないかな?
最近アップデートされていないし
並行処理も問題ありそうだし…
stack と GUI で検索したらこんな記事があった
https://www.stackbuilders.com/blog/gui-application/
最近アップデートされていないし
並行処理も問題ありそうだし…
stack と GUI で検索したらこんな記事があった
https://www.stackbuilders.com/blog/gui-application/
114デフォルトの名無しさん
2022/08/30(火) 19:30:33.33ID:XzDfLd3k みんな中央集権クラウドに騙されてる
115デフォルトの名無しさん
2022/09/10(土) 21:18:15.99ID:Jyomj+F3 ボトルネックは事実上バグと変わらないから
結局パフォーマンスを考えると
Haskellはバグが混入しやすい言語と言える
しかも入出力は正しいから解決がクッソ厄介で実用性はない
結局パフォーマンスを考えると
Haskellはバグが混入しやすい言語と言える
しかも入出力は正しいから解決がクッソ厄介で実用性はない
116デフォルトの名無しさん
2022/09/10(土) 23:20:56.83ID:6vG8VA3K ロマン思考言語_
117デフォルトの名無しさん
2022/09/11(日) 00:14:39.94ID:HO9VQuZG まあ合ってるな
レスを投稿する
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★4 [BFU★]
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★10 [樽悶★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- 中国、レアアース輸出制限wwwwwwwwwwwwwwwwwwwwwwww🎌 [329329848]
- マッサージ師だが
- 【訃報】日経平均先物逝く、円安株安債券安 [943688309]
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
- お返事まだカナ
- 寒すぎて風呂入れん
