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

22: デフォルトの名無しさん [] 2021/12/23(木) 23:57:52.67 ID:MjSWMWRR(1) AAS
ハリウッド映画でよくある、酒場でのウィットに富んだ大人の会話の一種では?
0時を過ぎると、酒瓶を割って拳で語り合う・・・いまその状態では?
夜が明けると、互いを理解し絆が深まる。
そして生涯の友となるのでは?
23: デフォルトの名無しさん [] 2021/12/27(月) 09:38:29.17 ID:hZ17KgJk(1) AAS
外部リンク:ken-okabe
.hatenablog
.com/entry/2021/12/20/134121

『結局は、あろうことか、当時のQiita運営がこういう匿名炎上目的のアカウントの思惑に乗っかる形で、僕の反論コメントを消してしまったので』

と書いてるので、当時nonstarterさんの記事のコメント欄に出没していたのは岡部健本人だったのかな。
ことあるごとに「岡部氏」って別人のように書いてたのにね
24: デフォルトの名無しさん [] 2021/12/28(火) 01:15:18.08 ID:e4meyx5L(1) AAS
高度IT人材、富士通は最大年収3500万円へ

「富士通年収3500万!」日本のIT企業の年収も、高額化してきました

AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ

【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材

来年度から副業解禁 人材多様化へ―大同生命次期社長

副業・兼務の解禁から4年、ロート製薬流で進めるキャリア支援

ロート製薬が副業をいち早く導入した「超人間的」な理由

ロート製薬会長が「副業を受け入れない会社は発展しない」と断言する理由
25: デフォルトの名無しさん [] 2021/12/28(火) 08:27:45.42 ID:FaceSKSV(1) AAS
Twitterリンク:matusita2012
Twitterリンク:5chan_nel (5ch newer account)
26: デフォルトの名無しさん [sage] 2021/12/31(金) 02:20:27.03 ID:aP8qPSMg(1/5) AAS
シンプルなワードカウント書いたけど関数合成でワードカウントが組めません
" 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: デフォルトの名無しさん [sage] 2021/12/31(金) 03:53:55.07 ID:aP8qPSMg(2/5) AAS
自己解決したけどデータが多いとスタックが...
>countword . countchars . map chkspand $ " 1313 13 111 rfr fdf"
>5
5(1): 1 [] 2021/12/19(日) 03:10:48.56 ID:7grgB8Yx(1) AAS
あの伝説の岡部健が復活!!
Twitterリンク:ken74047924

(おまけ情報)
Quoraでも有名だった岡部健、2021年12月にTwitterのアカウントまたまた永久凍結される。
当時のアーカイブは多少ネットに残ってるらしい

Twitterリンク:KenSmooth5
画像リンク

Twitterリンク:5chan_nel (5ch newer account)
Twitterリンク:5chan_nel (5ch newer account)

28: デフォルトの名無しさん [sage] 2021/12/31(金) 14:45:34.52 ID:KqmzC1Ir(1) AAS
リストみたいなただのデータコンストラクタだったら、いくら長くてもスタック関係ないのに
リストをfoldrしたような物が出てくるとスタックでみんな躓く
29
(1): デフォルトの名無しさん [] 2021/12/31(金) 14:58:51.96 ID:bqUePCKa(1/2) AAS
スクラッチで書くなら(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
(3): デフォルトの名無しさん [sage] 2021/12/31(金) 16:30:35.01 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"
5

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

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

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

@ohagiya @kenokabe

と入れると楽しいよな
44: デフォルトの名無しさん [] 2022/01/11(火) 17:47:50.88 ID:rZde0CTm(1) AAS
>>43
ひどすぎるだろこれ
可哀想に
45: デフォルトの名無しさん [] 2022/01/14(金) 10:48:22.13 ID:3PF6dXYX(1) AAS
最新の怪文書も読んだけどさ、毛の壁は毎回毎回威勢だけは良いんだよなw
たとえば「ちくわは民事でもやる!」「ちくわはもう詰み」(9年前)
「ちくわはもう死に体」(7年前)とかさ。
死に体なのに、つい最近もブログで恨み節w
ネズミ一匹、始末できないなんてだらしがないな
46: デフォルトの名無しさん [] 2022/01/15(土) 18:49:30.83 ID:chCIM2fB(1) AAS
質問です
array と List の性能の差がいまいちピンと来ません
何か「この例ではどう考えてもarray、ほらこんなに性能に差が出る」って例ご存知ないですか?
1-
あと 645 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s