関数型プログラミング言語Haskell Part34 (694レス)
1-

30
(3): 2021/12/31(金)16:30 ID:aP8qPSMg(3/5) AAS
>>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"
省3
31
(1): 2021/12/31(金)20:42 ID:aP8qPSMg(4/5) AAS
>>30のこれ
iterator (0:1:xs) = 1 + (iterator xs)
内部で
1+1+1+1+...が積みあがって最後に計算されるの?
32
(1): 2021/12/31(金)20:58 ID:bqUePCKa(2/2) AAS
>>31
それは処理系のimplement依存だから一概には言えないけど多分stack上に(1+)関数が乗っていって最後に確定した0が入ってから計算しそうな気がする
33: 2021/12/31(金)21:10 ID:aP8qPSMg(5/5) AAS
>>32
了解しました
34
(3): 2022/01/02(日)20:44 ID:OOMiLRw0(1/2) AAS
>>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
省1
35: 2022/01/02(日)21:09 ID:OOMiLRw0(2/2) AAS
ghciで確認
>>30はスタックオーバーフローで止まった
>>34は止まらないからctr-Cで止めた
36: 2022/01/03(月)00:17 ID:eS7vipFo(1) AAS
OOPでも、整数を他のオブジェクトとは全然違う形式にしないと
計算が遅過ぎてダサくなるよね

逆にオブジェクトの方を整数と同じようなGC非依存みたいな構造にする手もあるか
37
(1): 2022/01/03(月)08:08 ID:hLrwvjQQ(1/2) AAS
まぁコレは趣味による
Haskellでは性能面より可読性を重視するからな
それも使う人次第だけど
>>34のようにすればメモリも時間も節約できるけど可読性は失われる
どこまで我慢するかだけどオレは計算時間もメモリも線形までなら我慢して可読性を重視する
>>34だと入力に比例して要求されるスタック量が増える
線形までならしょうがないと思う
省2
38: 2022/01/03(月)11:20 ID:TEX8BSo6(1/2) AAS
>>37
今回のお題はワードカウント、ファイルサイズがギガになる場合を想定
スタックなりヒープなりを消費しない手法は?です
Cなどで実装した場合、ループでカウントして再帰なしスタックもヒープも消費なしとか(可読性は...)

他にマルチスレッドで分割カウントした時の手法とか(ディスクのIOで律速か)
39
(1): 2022/01/03(月)12:59 ID:hLrwvjQQ(2/2) AAS
今回の場合1ワード消費するたびにスタック一個消費するから必要なメモリリソースが倍以上になる可能性もあるから意味はあるかな
特にコレは>>34の方法だと必要なメモリリソースがデータ保持する分を除けばlogオーダーになるからな
しかも読み込んだデータは順次捨てていけるし(そこまでのカウント結果を保持しないといけないので有限オートマトンでは無理だけど有限オートマトン以上、チューリング完全以下、こういう計算クラスは名前ついてるのかな?)
個人的にはこういうときメモリ線形、時間線形までは許さないと大した事できないことが多いのでそれ以上のこだわりは持たないようにしてる
数学的研究対象とかにするなら別だけど
40: 2022/01/03(月)15:29 ID:TEX8BSo6(2/2) AAS
>>39
今回なにを確認したのか
それは、Cで組むような単純繰り返しを同じ感覚でヒャッハーとhaskellの遅延評価で行うと
ヤバイと言う教訓とそれを回避する手法
41: 2022/01/04(火)16:11 ID:h755Av8k(1) AAS
Haskellを身に付けた人は他の言語も使えると予想しますが、いくつもの言語の中からHaskellを選んで
プログラムを書くのはどんな課題、問題を解決したいときなんでしょうか
42: 2022/01/04(火)16:44 ID:HuVGMWib(1) AAS
課題が「ガベージをコレクトしたい」だけだったとしても
じゃあ静的型は不要だとかジェネリクスは不要だとはならない
だから課題と関係ない部分を作り込む
43
(1): 2022/01/05(水)10:28 ID:imDyM2+l(1) AAS
Twitterの検索で

@ohagiya @kenokabe

と入れると楽しいよな
44: 2022/01/11(火)17:47 ID:rZde0CTm(1) AAS
>>43
ひどすぎるだろこれ
可哀想に
45: 2022/01/14(金)10:48 ID:3PF6dXYX(1) AAS
最新の怪文書も読んだけどさ、毛の壁は毎回毎回威勢だけは良いんだよなw
たとえば「ちくわは民事でもやる!」「ちくわはもう詰み」(9年前)
「ちくわはもう死に体」(7年前)とかさ。
死に体なのに、つい最近もブログで恨み節w
ネズミ一匹、始末できないなんてだらしがないな
46: 2022/01/15(土)18:49 ID:chCIM2fB(1) AAS
質問です
array と List の性能の差がいまいちピンと来ません
何か「この例ではどう考えてもarray、ほらこんなに性能に差が出る」って例ご存知ないですか?
47: 2022/01/16(日)12:22 ID:f2QwXzzi(1/4) AAS
質問です
何かの文章で

square x = x*x
print $ square $ square 3

のようなプログラムをHaskell は
square $ square 3
→ square ( square 3 )
省18
48
(1): 2022/01/16(日)13:40 ID:rC9oNTrC(1) AAS
メモ化は独自実装ではなく仕様

何かの文章は嘘
でも騙されたことがないので被害が存在しないし、加害者も存在しない
49: 2022/01/16(日)14:36 ID:f2QwXzzi(2/4) AAS
>>48
仕様なんですか?
Language Reportかなんかに書いてありますか?
50: 2022/01/16(日)14:39 ID:f2QwXzzi(3/4) AAS
何かの文章は "ウォークスルー Haskell" というやつでした

外部リンク:walk.northcol.org

3 ではなく 1 + 2 でやってました
51
(1): 2022/01/16(日)18:39 ID:ZlAL8rfa(1) AAS
seqだと結果はどうなるんですか?
52: 2022/01/16(日)18:54 ID:f2QwXzzi(4/4) AAS
>>51

square x = x * x



square x = seq x $ x * x

にして明治的に“xを評価してからx*xを計算せよ”に変えるともちろん*ひとつです
それは納得いきます
ウォークスルーHaskellにもそうなると書いてあるしHaskell Language Report 2010にもseqで正格評価になると書いてあります
省4
53: 2022/01/17(月)04:24 ID:FNscPcIY(1) AAS
銀の弾丸のHaskellをIT企業が採用したら市場を席捲できるのでは???

実際そうなると思う?
54: 2022/01/17(月)13:17 ID:3dpBVALW(1) AAS
Windows10にVSCode入れて、Haskellを遊ぼうとしたけど上手く入らない。

コマンドラインで細かく入れて遊ぶしかないかな。
55: 2022/01/18(火)00:23 ID:1uCkeDxh(1) AAS
外部リンク:www.haskell.org
>GHCup is an installer for the general purpose language Haskell.
56
(2): 2022/01/27(木)08:50 ID:NJ4yaxSd(1) AAS
外部リンク:qiita.com

コメント欄ひどすぎだろ
@stken2050(これ岡部健)が非道いので皆さん通報してほしい
57: 2022/01/27(木)10:10 ID:orDFdZXN(1) AAS
毛さんは昔から色々酷いが
>>56のコメ欄の流れだけでいうと単に@Zuishinが分が悪いわ
珍妙な独自用語は早めに芽を摘まないといけない
58: 2022/01/27(木)11:59 ID:oUTYjCet(1) AAS
岡部さんこんにちは
59: 2022/01/27(木)12:03 ID:eY59BLQP(1) AAS
Twitterリンク:mutamac

引用
「Linuxの元になったMINIXが復権中。期待。」という自称ギークとの話』の魚拓を取りました 外部リンク[pdf]:nmuta.dip.jp
Twitterリンク:5chan_nel (5ch newer account)
60
(1): 2022/01/27(木)23:00 ID:7u9WcLA6(1) AAS
そうじゃなくて、PHPやHaskellごときが偉そうにすんなって事だろ。
質問者が来たらお茶菓子くらい出せ。
底辺やマイナー言語はそうするべき。
61: 2022/01/28(金)01:07 ID:dNnJMVwD(1) AAS
誰かをディスるよりも、こういう話の方が面白くない?
外部リンク:www.reddit.com
62: 2022/01/28(金)09:50 ID:F+QYYxM3(1) AAS
>>60
そもそも質問者が来たと思ってないんだろう
強いて言うなら「命令者」が来たと思われてるね
63
(1): 2022/02/01(火)14:44 ID:VXi8EI6O(1) AAS
Qiitaの運営どうなってんのこれ

外部リンク:qiita.com
64: 2022/02/01(火)15:19 ID:rr+/bjEX(1) AAS
Twitterリンク:kuratan
Twitterリンク:5chan_nel (5ch newer account)
65: 2022/02/01(火)18:35 ID:e9RXuv9o(1) AAS
>>56
どいつも誰だか知らんしどーでも良いが
見た感じ、@Zuishinの記事は確かにしょぼい記事だが、@stken2050の反論にも無理があるな

@Zuishinに関しては、大きな主張をしている割に根拠がかなりしょぼいせいで、記事として価値が低くなっているように思える

対する@stken2050の反論だが、「排他的ではないので反対ではない!」云々は無理がありすぎ
「反対」という自然言語の単語が元々ガバガバなのは誰だって知ってるんだから、それに対して自分で勝手に厳密な定義を与えて、その定義に基づいて矛盾を指摘したって、そりゃ「日本語わかりますか」言われるわ

さらに@stken2050の反論ではwikipediaと異なる高階関数の定義を使っているが、それならwikipedia以上に信憑性の高いソース出して、英語版wikipediaに書かれている高階関数の定義に疑問を呈するのが筋
省1
66: 2022/02/02(水)12:32 ID:4gWS4lIC(1) AAS
>>63
無事、記事が凍結されたね
67: 2022/02/04(金)08:30 ID:iaw7RH3I(1) AAS
完全に荒らしやろあれ
68: 2022/02/08(火)08:58 ID:t2yWr+Jt(1) AAS
Haskellって日本人に受けそうで実際一時期話題になったけど
結局下火になっちゃったね
なんでだろう
69: 2022/02/08(火)12:34 ID:iTFetD6R(1) AAS
haskellでしばらく何かを学んだら、元いたところに帰っていくんじゃないかな
70
(1): 2022/02/09(水)10:14 ID:9eeUOmy1(1) AAS
型とGCが下火になったから
型無しならPython
GC無しならRustに行く
71: 2022/02/09(水)10:49 ID:Lp+6eS6t(1) AAS
型下火になることなんてある?
72: 2022/02/09(水)13:51 ID:LMpY9ePh(1) AAS
>>70の中では下火になったんだろ
73: 2022/02/09(水)14:32 ID:4IAm5Mq6(1) AAS
両方なしならどこへ行けばいい?
74: 2022/02/09(水)16:30 ID:tjRbJd/i(1) AAS
両方ないならAPIと言語が無関係なクラウドみたいな感じになりそう
75: 2022/02/09(水)19:00 ID:/Rs/AQCx(1) AAS
Cじゃだめなん?
あと、型なしじゃなくて、動的型で良ければ、
Objective-Cがかなり自由度高かった気がする。
76: 2022/02/10(木)14:08 ID:Rx8BtNec(1) AAS
単純に難しいからだろ
元の言語仕様はシンプルなのに、ソフトウェア工学的なノウハウに基づいてOOPと同等以上の実装を実現しようとすると、とたんに大量のGHC拡張と難解な型が出てきてわけわからんくなる
77: 2022/02/10(木)17:05 ID:0/0SR33O(1) AAS
lensの型とか複雑すぎる
78: 2022/02/11(金)01:01 ID:oG7lMZNP(1) AAS
setterの存在自体がマナー違反ということにすればある意味単純なんだよ
マナー違反したせいで複雑すぎるのは自己責任、言語のせいにするなってね
79
(1): 2022/02/12(土)14:38 ID:3EVMkjej(1) AAS
岡部健
80: 2022/02/12(土)14:59 ID:MmDcA0PA(1) AAS
>>79
こいつに“H“はムリ(爆)

“三擦り半“で昇天するよw
81: 2022/02/13(日)02:50 ID:gJE3VDE6(1) AAS
GHC方言とかの知識が豊富な奴ってどちらかといえば反抗的な性格だと思う
それなのに、オリジナルの仕様への忠誠心が高ければ高いほど有能みたいな誤解がある

その上更にいかにも忠誠心なさそうなキャラまで作られてるし
82
(2): 2022/02/14(月)11:54 ID:4AqyxcJv(1/4) AAS
最近数値計算の勉強してるんですけど、よく最近高速フーリエ変換を用いた乗算の高速化なんて話が出てきます
サイズの大きい整数の掛け算とかを高速化する手法で桁数n同士の乗算のコストをn log(n)に抑えるのだとか
これGHCのInteger型の乗算には応用されてますかね?
やっぱりそこまで速さに拘りたいならご自分でのスタンス?
GHCのソースが読めるほどのスキルはないのでよくわからない
そもそもGHCのソースってどこに転がってます?
83
(1): 2022/02/14(月)20:10 ID:TSLH56nb(1) AAS
>>82
ghc haskell ソース でググれば見つかる
84: 2022/02/14(月)20:56 ID:uQiQyHca(1) AAS
ソースを1行も読まなくても分かることがいくつかある
IntとIntegerの二刀流ができるなら三刀流もできること
第二第三の型を追加するだけのためにコンパイラをコンパイルするのは無意味過ぎること
85: 2022/02/14(月)21:36 ID:4AqyxcJv(2/4) AAS
>>82
見つからないorz

>>83
ちょっと数値計算の練習したいんですよ
例えば円周率10万桁とか
さすがに10万桁とかだとghcはデフォルトでは対応してくれないのかなと
仮にできるにしても10万桁×10万桁の計算で桁数^2オーダーで計算したのではその一個の掛け算で何年もかかってしまうことになりかねません
省6
86: 2022/02/14(月)21:36 ID:4AqyxcJv(3/4) AAS
あら、アンカー一個ずれ
87
(1): 2022/02/14(月)21:54 ID:BjFXlOcH(1) AAS
GMP使ってるかもしれないし使ってないかもしれないらしい[1]
GMP使ってるならFFTベースのSchonhage-Strassenが働くしGMP使いたいならライブラリ[2]がある
[1]外部リンク:stackoverflow.com
[2]外部リンク:hackage.haskell.org
88: 2022/02/14(月)23:13 ID:4AqyxcJv(4/4) AAS
>>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より
省11
89
(1): 2022/02/15(火)00:40 ID:2crEr/EW(1) AAS
Haskellの多倍長計算、昔は大変だったけど今はよくなった、みたいな記事が10年前くらいに書かれてた
外部リンク[html]:tanakh.jp
90: 2022/02/15(火)19:39 ID:ujR6VeHM(1) AAS
>>89
おお、先人がいたww
いや〜Haskellって速さ求めるならあんまりいい選択肢ではなさそうですけどやっぱり挑戦してみたくなりますね
その人のページのリンク先がすごく参考になりました
ようやくChudnovskyの公式とかいうのがなんで最速なのかわかりました
収束速度そのものはどう考えてもAGMの方が早いのになんでChudnovskyの方が早いんだと
Binary Splittingという技使ってまとめて計算していく方法があるんですね
省3
91
(1): 2022/03/28(月)00:29 ID:dN2icdd7(1) AAS
Haskell昔は日本でも人気あったのにどうしてこうなった
92
(1): 2022/03/28(月)00:37 ID:NMG6YJEi(1) AAS
人気ないって事?
そりゃそうでしょ?
お世辞にも使いやすいとは言えない
93: 2022/03/28(月)17:03 ID:o+cr0I/L(1) AAS
>>92
使いにくいと感じるところを教えてください
94: 2022/03/28(月)18:04 ID:kSkV8rOb(1) AAS
文字列操作のパッケージを作っている。
1文字づつ評価して処理するのは出来るけど
ループで実現しようとすると、上手くいかない。
[Char]型とString型で混ぜて作ったせいか
ボトムアップ方式で作るのが間違えなのか。

まだまだ初心者の愚痴。
95: 2022/04/07(木)21:21 ID:v9cHeTKb(1) AAS
Stringは[Char]の別名だが
96: 2022/04/08(金)04:13 ID:ZfK1p/yR(1) AAS
Haskell-jp slackってどうなの?
97: 2022/04/08(金)13:18 ID:7u/c8YSR(1) AAS
とりあえず入ってみたら?
98: 2022/05/25(水)23:07 ID:HGLTMsh1(1/2) AAS
>>91
純粋関数型といいつつ実際にはそうではないし
結局はモナドも使わなきゃ実用的なものは作れない
よく例題に上がるようなシンプルな書き方すると遅いし
Lispでも同じようにあった問題で綺麗な書き方よりも早い書き方が重視される
そうこうしているうちにどんどん人は離れていったよ
理念が現実に負けたのだと思う・・
99: 2022/05/25(水)23:31 ID:HGLTMsh1(2/2) AAS
あとそうだ
なによりもデバッグがあまりに困難すぎるし
デバッグのために型制約とか何バカやってんだろな・・って思うことしばしば

作業環境が悪いのがまるで改善されないから嫌になる
100: 2022/05/27(金)23:36 ID:IybSybG6(1) AAS
型はコンパイル時にしか存在しない
モナドクラスもコンパイル時にしか使わない
実行時に使われているのはモナドのインスタンスのみ
そのインスタンスは任意の言語で再発明できる
どの言語でデバッグしても困難は同じ

結局は再発明をやらなきゃ実用的な知識が身につかない
101: 2022/05/27(金)23:58 ID:IeVDSTdQ(1) AAS
今だにprintfデバッグに頼ってるなんてHaskellくらいのものかもね・・
102: 2022/05/28(土)00:21 ID:1xwNIN3l(1) AAS
Cのライブラリに丸投げする効率化を考えれば
デバッグの効率化にはこだわらない方が丸投げしやすい
103: 2022/07/18(月)03:26 ID:zDzunRmU(1) AAS
なんでここまで人気なくなったんだろうな
104: 2022/07/18(月)14:14 ID:IRYfc5Qz(1) AAS
声の大きい人たちが使わなくなっただけでは
105: 2022/07/19(火)17:39 ID:6V/PH7AR(1) AAS
個人が言語を自作できるレベルになってる説
団体は必須ではない
106
(1): 2022/08/07(日)20:06 ID:My+goEll(1) AAS
ハマりました
次のコード通らん理由が分からん

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 ]]
省15
107
(1): 2022/08/08(月)19:26 ID:NwZYLTPj(1) AAS
>>106
リストの長さがマッチしてない
長さが2でないリストをどこで作ったのかはソースを読めば分かる
***は長さが3のリストを返す
108: 2022/08/09(火)10:46 ID:VUIfOlq+(1) AAS
>>107
あ、ホントだ
コピペミスかなんかか
thx
109: 2022/08/11(木)18:04 ID:9dSVJvSP(1) AAS
おまいらこのクソ暑い夏をどうにかするCOOLなコードをHaskellで簡潔に書けんのか?
110: 2022/08/25(木)11:20 ID:97f0Pf6Z(1) AAS
外部リンク[html]:hackage.haskell.org

listen ~(w, a) = (w, (a, w))
この~はどういう文法なの?
1-
あと 584 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s