関数型プログラミング言語Haskell Part34 (667レス)
上下前次1-新
抽出解除 レス栞
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"
89(1): 2022/02/15(火)00:40:37.96 ID:2crEr/EW(1) AAS
Haskellの多倍長計算、昔は大変だったけど今はよくなった、みたいな記事が10年前くらいに書かれてた
外部リンク[html]:tanakh.jp
238: 2023/09/17(日)23:47:13.96 ID:70jB6wMR(1) AAS
初心者は++を使うけどなれたら<>を使ってる人が多い気がする
SemiGroupであれさえすれば使える<>を使った方が汎用的にかけるからかな
303(1): 2024/07/26(金)05:41:42.96 ID:JmafwQnp(1/3) AAS
>>302
それはそうで、IOモナドは他の言語例えばC言語系列だとhoge();の";"部分を数学的に表現しただけだから。
見た目だけなら
x = x + 1;
printf("%d\n", x);
を
return (x + 1) >>= \x -> print x
do形式に直して
x <- return (x + 1)
print x
ただ、x <- の部分は同名の別の変数をシャドーイングしてるので、厳密にメモリの動作まで合わせるならIORefを使う。
Haskellから見たらメモリもIO処理(ファイル処理含む)も等しく外部への入出力という扱い。
だから、実用としては意味が無い。
一見複数行に見えるコードがその気になれば全部一行に出来るという感動はあるが、それだけだ。
Haskellを仲立ちにして数学とプログラミング言語の関係を研究したりには便利。
逆に自力でIOモナドをPythonなどの適当な言語で実装して全てのコードを関数っぽく書ける。
(Pythonだと演算子の自作が出来ないのでf = (>>=)みたいな事になる)
Haskellは便利だから使うものじゃない。
美しいから使うものだ。
あ、でも腐っても最新版は実行速度が結構上がってる(C#/Java並み)ので、選択肢から外される理由も減ってきた気がする。
332(2): 2024/08/28(水)21:41:00.96 ID:HNkudrYA(1) AAS
Youtubeでしばらくの間丁寧にHaskellを解説していた人が
ある日「やってらんね、俺はもうHaskellでプログラミングしない」と宣言してHaskellから離れたのを見て
所詮その程度の言語なんだなとガッカリした
364: 2024/09/28(土)11:30:45.96 ID:D4fCa7Ze(1) AAS
米田の何ちゃらの辺りで心が折れて終了
515: 2024/10/05(土)00:27:27.96 ID:aeHKoAMv(1/3) AAS
集合と写像の区別がついてないんだから、何を準備しようが時間の無駄
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.226s*