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

46: デフォルトの名無しさん [] 2022/01/15(土) 18:49:30.83 ID:chCIM2fB(1) AAS
質問です
array と List の性能の差がいまいちピンと来ません
何か「この例ではどう考えてもarray、ほらこんなに性能に差が出る」って例ご存知ないですか?
47: デフォルトの名無しさん [] 2022/01/16(日) 12:22:44.80 ID:f2QwXzzi(1/4) AAS
質問です
何かの文章で

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
(1): デフォルトの名無しさん [sage] 2022/01/16(日) 13:40:56.61 ID:rC9oNTrC(1) AAS
メモ化は独自実装ではなく仕様

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

http://walk.northcol.org/haskell/eval-strategies/

3 ではなく 1 + 2 でやってました
51
(1): デフォルトの名無しさん [sage] 2022/01/16(日) 18:39:45.50 ID:ZlAL8rfa(1) AAS
seqだと結果はどうなるんですか?
52: デフォルトの名無しさん [] 2022/01/16(日) 18:54:16.95 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で正格評価になると書いてあります
なのでコレは納得いくんですがseqなしの場合の動作が文書と異なるように見えます
もちろん参照透過性があるので一度計算した結果をメモ化して再利用しても同じ答えにならないといけないので答え自体は同じになるわけですけど
コレはたまたまGHCの開発者が優秀でHaskellの標準動作としては保証されない事までやってくれてるだけなのか、標準動作としてメモ化しないといけないことになってるのかどっちだろうと
今のところ今自分が勉強してるプログラムにはseq入れて明治的に正格評価してもらってるんですけど標準でメモ化してくれるなら消せるしスッキリするし、あるいは明示しないと他の処理系だとしてくれないなら残しとかないといけないし
53: デフォルトの名無しさん [] 2022/01/17(月) 04:24:56.47 ID:FNscPcIY(1) AAS
銀の弾丸のHaskellをIT企業が採用したら市場を席捲できるのでは???

実際そうなると思う?
54: デフォルトの名無しさん [sage] 2022/01/17(月) 13:17:04.94 ID:3dpBVALW(1) AAS
Windows10にVSCode入れて、Haskellを遊ぼうとしたけど上手く入らない。

コマンドラインで細かく入れて遊ぶしかないかな。
55: デフォルトの名無しさん [sage] 2022/01/18(火) 00:23:47.53 ID:1uCkeDxh(1) AAS
https://www.haskell.org/ghcup/
>GHCup is an installer for the general purpose language Haskell.
56
(2): デフォルトの名無しさん [] 2022/01/27(木) 08:50:29.18 ID:NJ4yaxSd(1) AAS
https://qiita.com/lucker_summer/items/baa68e681872de44d5f8

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

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

https://qiita.com/lucker_summer/items/baa68e681872de44d5f8#comment-ceab8639f8275f297563
64: デフォルトの名無しさん [] 2022/02/01(火) 15:19:04.39 ID:rr+/bjEX(1) AAS
https://twitter.com/kuratan/status/114732100682391552
https://twitter.com/5chan_nel (5ch newer account)
65: デフォルトの名無しさん [sage] 2022/02/01(火) 18:35:16.11 ID:e9RXuv9o(1) AAS
>>56
どいつも誰だか知らんしどーでも良いが
見た感じ、@Zuishinの記事は確かにしょぼい記事だが、@stken2050の反論にも無理があるな

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

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

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

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

その上更にいかにも忠誠心なさそうなキャラまで作られてるし
82
(2): デフォルトの名無しさん [] 2022/02/14(月) 11:54:21.19 ID:4AqyxcJv(1/4) AAS
最近数値計算の勉強してるんですけど、よく最近高速フーリエ変換を用いた乗算の高速化なんて話が出てきます
サイズの大きい整数の掛け算とかを高速化する手法で桁数n同士の乗算のコストをn log(n)に抑えるのだとか
これGHCのInteger型の乗算には応用されてますかね?
やっぱりそこまで速さに拘りたいならご自分でのスタンス?
GHCのソースが読めるほどのスキルはないのでよくわからない
そもそもGHCのソースってどこに転がってます?
83
(1): デフォルトの名無しさん [sage] 2022/02/14(月) 20:10:36.04 ID:TSLH56nb(1) AAS
>>82
ghc haskell ソース でググれば見つかる
84: デフォルトの名無しさん [sage] 2022/02/14(月) 20:56:01.04 ID:uQiQyHca(1) AAS
ソースを1行も読まなくても分かることがいくつかある
IntとIntegerの二刀流ができるなら三刀流もできること
第二第三の型を追加するだけのためにコンパイラをコンパイルするのは無意味過ぎること
85: デフォルトの名無しさん [] 2022/02/14(月) 21:36:02.36 ID:4AqyxcJv(2/4) AAS
>>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(3/4) AAS
あら、アンカー一個ずれ
87
(1): デフォルトの名無しさん [sage] 2022/02/14(月) 21:54:21.41 ID:BjFXlOcH(1) AAS
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(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より
GMPは、どんなオペランドの大きさでも他の多倍長整数ライブラリよりも高速であることを目標としている。このために、以下の点を重視している。

基本算術型としてフルワードを使う。
オペランドの大きさによってそれぞれ異なるアルゴリズムを使う。非常に大きな数に有効なアルゴリズムは、小さい数では遅いことが多い。

----
要するに自分でわざわざSchonhage-Strassenのアルゴリズム実装しなくてもそもそもintegerで実装済みという事ですね
そうじゃないかと思ったw
そりゃそうでしょうねぇ、こんな優秀なソフトが数値計算理論の最新の成果取り入れてないわけがないw
10万桁とかIntegerで扱えるのかな?
実はData.FixedにあるFixed aで100桁くらいは余裕というのは確認済みなんです
週末にでも桁数増やして実験してみます
ありがとうございました
89
(1): デフォルトの名無しさん [sage] 2022/02/15(火) 00:40:37.96 ID:2crEr/EW(1) AAS
Haskellの多倍長計算、昔は大変だったけど今はよくなった、みたいな記事が10年前くらいに書かれてた
http://tanakh.jp/posts/2012-03-08-pi.html
90: デフォルトの名無しさん [] 2022/02/15(火) 19:39:32.71 ID:ujR6VeHM(1) AAS
>>89
おお、先人がいたww
いや〜Haskellって速さ求めるならあんまりいい選択肢ではなさそうですけどやっぱり挑戦してみたくなりますね
その人のページのリンク先がすごく参考になりました
ようやくChudnovskyの公式とかいうのがなんで最速なのかわかりました
収束速度そのものはどう考えてもAGMの方が早いのになんでChudnovskyの方が早いんだと
Binary Splittingという技使ってまとめて計算していく方法があるんですね
ちょっと感動しました
まぁともかくInteger型の計算で10億桁くらいまで実用的な?速度で計算できるもんなんですね
ボチボチやってみます
91
(1): デフォルトの名無しさん [sage] 2022/03/28(月) 00:29:30.89 ID:dN2icdd7(1) AAS
Haskell昔は日本でも人気あったのにどうしてこうなった
92
(1): デフォルトの名無しさん [sage] 2022/03/28(月) 00:37:16.39 ID:NMG6YJEi(1) AAS
人気ないって事?
そりゃそうでしょ?
お世辞にも使いやすいとは言えない
93: デフォルトの名無しさん [sage] 2022/03/28(月) 17:03:01.17 ID:o+cr0I/L(1) AAS
>>92
使いにくいと感じるところを教えてください
94: デフォルトの名無しさん [sage] 2022/03/28(月) 18:04:03.42 ID:kSkV8rOb(1) AAS
文字列操作のパッケージを作っている。
1文字づつ評価して処理するのは出来るけど
ループで実現しようとすると、上手くいかない。
[Char]型とString型で混ぜて作ったせいか
ボトムアップ方式で作るのが間違えなのか。

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

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

結局は再発明をやらなきゃ実用的な知識が身につかない
101: デフォルトの名無しさん [sage] 2022/05/27(金) 23:58:56.33 ID:IeVDSTdQ(1) AAS
今だにprintfデバッグに頼ってるなんてHaskellくらいのものかもね・・
102: デフォルトの名無しさん [sage] 2022/05/28(土) 00:21:10.26 ID:1xwNIN3l(1) AAS
Cのライブラリに丸投げする効率化を考えれば
デバッグの効率化にはこだわらない方が丸投げしやすい
103: デフォルトの名無しさん [sage] 2022/07/18(月) 03:26:49.61 ID:zDzunRmU(1) AAS
なんでここまで人気なくなったんだろうな
104: デフォルトの名無しさん [sage] 2022/07/18(月) 14:14:58.82 ID:IRYfc5Qz(1) AAS
声の大きい人たちが使わなくなっただけでは
105: デフォルトの名無しさん [sage] 2022/07/19(火) 17:39:52.93 ID:6V/PH7AR(1) AAS
個人が言語を自作できるレベルになってる説
団体は必須ではない
106
(1): デフォルトの名無しさん [sage] 2022/08/07(日) 20:06:46.56 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 ]]

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

listen ~(w, a) = (w, (a, w))
この~はどういう文法なの?
111: デフォルトの名無しさん [sage] 2022/08/25(木) 21:14:39.81 ID:+PRPT5FW(1) AAS
https://www.sampou.org/haskell/tutorial-j/patterns.html#tut-lazy-patterns
112: デフォルトの名無しさん [sage] 2022/08/25(木) 21:15:08.79 ID:3SQ1xNiu(1) AAS
stack でwxHaskell インストールしようとしたんだが、
> stack install wxHaskell
とすると
Unknown package: wxhaskell
とでてインストールできない。
StackだとwxHaskellインストールできないの?んなわけないと思うんだが。
公式見てもstackの場合の方法が書いてない。
113: デフォルトの名無しさん [sage] 2022/08/29(月) 23:25:47.74 ID:mJ1Da6QY(1) AAS
stackage に入っていないからじゃないかな?

最近アップデートされていないし
並行処理も問題ありそうだし…

stack と GUI で検索したらこんな記事があった
https://www.stackbuilders.com/blog/gui-application/
114: デフォルトの名無しさん [sage] 2022/08/30(火) 19:30:33.33 ID:XzDfLd3k(1) AAS
みんな中央集権クラウドに騙されてる
115: デフォルトの名無しさん [sage] 2022/09/10(土) 21:18:15.99 ID:Jyomj+F3(1) AAS
ボトルネックは事実上バグと変わらないから
結局パフォーマンスを考えると
Haskellはバグが混入しやすい言語と言える
しかも入出力は正しいから解決がクッソ厄介で実用性はない
116: デフォルトの名無しさん [sage] 2022/09/10(土) 23:20:56.83 ID:6vG8VA3K(1) AAS
ロマン思考言語_
117: デフォルトの名無しさん [sage] 2022/09/11(日) 00:14:39.94 ID:HO9VQuZG(1) AAS
まあ合ってるな
118: デフォルトの名無しさん [sage] 2022/09/20(火) 01:04:13.74 ID:zJWv8hkC(1) AAS
ghci --show-options | wc -l
Output: 1200
119: デフォルトの名無しさん [sage] 2022/09/24(土) 01:20:51.22 ID:v6+/ywPo(1/3) AAS
書き込んでいた専門家たちが書き込みをやめたので下火になっている感が出ているわけですね。
120: デフォルトの名無しさん [sage] 2022/09/24(土) 02:26:09.94 ID:vtJ0GRzX(1) AAS
イヤ、でも実際した火なんじゃない?
やっぱりHaskellで“性能”と“可読性”の両立を図るのはかなり難しい
やっぱり言語の生い立ちというか、性格というか、性能面、特に速度面の性能面はどうしても優先順位が低い、しかし実務上はもちろんそこは最重要factorだからそこがでないとした火になるのもやむを得ないかと
121: デフォルトの名無しさん [sage] 2022/09/24(土) 03:13:03.66 ID:v6+/ywPo(2/3) AAS
仕組みはわからんが計画的だろ。
言い換えると、騒ぐ奴らがうざいから騒がなくなるまで下火なんだろう。
122: デフォルトの名無しさん [sage] 2022/09/24(土) 03:21:31.25 ID:cIbikbIQ(1) AAS
てか元々世界のメジャーな言語に躍り出ようというつもりなんかHaskellコミュニティにはないのかもね
Haskellコミュニティなんて学者の集合体でしょ?
実務になんか元々興味ないんじゃない?
123: デフォルトの名無しさん [sage] 2022/09/24(土) 17:34:21.27 ID:v6+/ywPo(3/3) AAS
StackでGUIプログラミングしたいのですが、stackでインストールできるライブラリで
おすすめのものはありますか。
124: デフォルトの名無しさん [] 2022/09/27(火) 18:16:48.82 ID:2m9lsdvh(1) AAS
haskellで作ったチェスゲームありますか
コマとボードはきれいなグラフィックで
マウスでコマを動かすチェス
125: デフォルトの名無しさん [] 2022/09/27(火) 19:10:55.70 ID:rbvXlCo3(1) AAS
来年のRustがこの状態。
126: デフォルトの名無しさん [sage] 2022/09/27(火) 19:55:55.43 ID:CVmtKHy4(1) AAS
Haskellに飛びつく層は
Rustには飛びつかんよね
Rustには面白みが無い
127: デフォルトの名無しさん [sage] 2022/09/27(火) 20:30:27.34 ID:Ctbd02WQ(1) AAS
とにもかくにももう少しHaskellは速度性能を出すための方法の標準化について詰めてほしい
Haskell2010の文章のメモ化の部分の詰めがダメすぎる
実情のGHCとかで提供されてるものと差がありすぎて意味がわからん
GHCでの研究成果をもっと標準仕様に取り入れてほしい
何をどうやったら確実にドレコレはメモ化されるかハッキリ文書化してほしい
128: デフォルトの名無しさん [sage] 2022/09/28(水) 02:23:18.14 ID:4krAnsc6(1) AAS
整理する気がないからな
どんどんカオスになって行く
129: デフォルトの名無しさん [sage] 2022/09/29(木) 03:37:20.42 ID:IPtlf3/T(1) AAS
いまだにGHCというとGuarded Horn Clausesの方のGHCを先に思い出す
130: デフォルトの名無しさん [sage] 2022/10/01(土) 19:53:52.72 ID:7gwAD0df(1) AAS
1番実用的な関数型言語やその影響が強い言語って何になるの?
131: デフォルトの名無しさん [sage] 2022/10/01(土) 20:00:27.14 ID:IQLzQmPp(1) AAS
Cじゃね
132: デフォルトの名無しさん [sage] 2022/10/01(土) 22:58:35.36 ID:76wmMtDf(1) AAS
標準規格を一番忠実に実装した奴が優勝みたいな考え方は全然数学的ではない
133: デフォルトの名無しさん [sage] 2022/10/03(月) 18:02:59.08 ID:LGdcguEE(1) AAS
lisp系やocamlとか。
134: デフォルトの名無しさん [sage] 2022/10/04(火) 08:48:04.42 ID:S20URLlI(1) AAS
ルールがない状態からルールが守られている状態へ誘導するか
何もしてないのに持続するルールを拾い集めるかの違い
135: デフォルトの名無しさん [] 2022/10/07(金) 20:15:05.17 ID:xpYSJYo6(1) AAS
F#では。
136: デフォルトの名無しさん [] 2022/10/07(金) 20:28:34.11 ID:lAeL408c(1) AAS
Erlang
137: デフォルトの名無しさん [sage] 2022/10/14(金) 22:28:23.68 ID:GVf4qcGD(1) AAS
ラムダや <- や case で束縛される変数の値は二回以上計算されない
seqは計算のタイミングを変える効果しかない

難しいのは = で定義される名前だが
= の右辺で頑張ってseqを使っても報われない
138
(2): デフォルトの名無しさん [sage] 2022/10/14(金) 23:54:06.57 ID:91YiMGAd(1) AAS
でもhaskell 2010 reportには評価順を変える方法はseqしか規定されていない
GHQなどの実際の処理系でそれ以外のタイミングでメモ化されたりするのはあくまで処理系の独自仕様でしかない
ある処理系でメモ化されて早かったプログラムが別の処理系で同じ速度で処理してくれる保証などどこにもない
139: デフォルトの名無しさん [sage] 2022/10/15(土) 08:05:01.19 ID:/BlEbfcm(1/3) AAS
>>138
もしかして、個人の感想のようなものを悪と思ってるのかね
そして客観的事実 (ようするに絶対正しい事実) と称するものが正義だと

個人の感想を排除するべきという思想はどこにも規定されてないでしょ
140: デフォルトの名無しさん [sage] 2022/10/15(土) 09:49:59.76 ID:fUoifk8c(1/2) AAS
メモ化に関しては俺も>>138と同じような感想持ってるな
141: デフォルトの名無しさん [sage] 2022/10/15(土) 10:11:19.74 ID:/BlEbfcm(2/3) AAS
ある人の感想が別の人の感想と同じになる保証はどこにもない
保証がなくても特に問題ないと判明したならそれでいい
142
(1): デフォルトの名無しさん [sage] 2022/10/15(土) 10:19:45.48 ID:+yYiQ+MP(1) AAS
一番嫌なのはネットに転がってるすごいスッキリしたプログラムがあって「おお、すげぇ」と思っても結局それはGHCのメモ化の恩恵でしかなくHaskell本来のそれではないので別の処理系では通用しないものであったりする事
事実上GHCが標準なのでGHCで早ければ「早いプログラムが書けない事はない」のではあるけど、じゃあGHCはどんな時は気をきかせてメモ化してくれるのか、どんな時はその事を利用して早い、しかし短い、わかりやすいプログラムを書けるのかはHaskell 2010 reportではなくGHCの方の仕様書を読むか、実験してみるかしかない、しかし前者はそもそもGHCの仕様書そのものどこにあるかわからないんだけど見つけてもおそらくメモ化の理論は相当に難しい論文レベルの話、さりとて実験で詰めていくのはデバッグと同じレベルのかなり苦痛な作業で、しかも完成したものは大概速さのために可読性をかなり犠牲にしないといけないものになる、当然可搬性も落ちてる
GHCがやってくれてる事全てでなくてもいいけどネットによく転がってるフィボナッチ数列とか素数生成とかのGHCの良きに計らってくれる機能を利用したスッキリした、けど早いプログラムくらいまでは標準化して全ての処理系で動くようにしてほしいけどね
143: デフォルトの名無しさん [sage] 2022/10/15(土) 11:46:05.26 ID:fUoifk8c(2/2) AAS
まあ実際のところメモ化を考え出したら
Lispと同じように可読性を犠牲にした速度重視のコードしか生まれないので・・
メモ化は考えないのが筋だけどそうすると実用性は皆無であってつまり
144: デフォルトの名無しさん [sage] 2022/10/15(土) 15:59:55.52 ID:/BlEbfcm(3/3) AAS
LispとHaskellの違いで重要なのは
モジュールの定義をインタラクティブにやらないこと
ghci起動時に全てのモジュールが定義され最後に
mainや他の式を評価・実行するところだけがインタラクティブ

そもそもmodule Main whereとかいうのは式ではない
式ではないから評価順序という考え方がそこでは通用しない
145: デフォルトの名無しさん [sage] 2022/11/03(木) 00:12:52.63 ID:A4mGU1Ql(1/2) AAS
GHCがデファクトだしこだわりがなければ他のコンパイラを使うこともないでしょ
とはいえ関数型言語って速度を重視するタスクには向かないでしょ
速さを求めるのが間違い
1-
あと 543 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.032s