[過去ログ] 関数型プログラミング言語Haskell Part33 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
12: 2020/02/11(火)18:22:03.26 ID:RQLUpvMq(1) AAS
畳み込み計算(foldじゃなくてconvolutionの方)とかやりたいときにあると便利かも?
20
(2): 2020/02/13(木)02:31:41.26 ID:7PHqZJTi(1/2) AAS
>>17
短さはともかく解りやすさは一概には言えないと思う。こんなのはどうかな
l = take 3 . unfoldr (Just . splitAt 4) $ [1..12]
diagonals l = map catMaybes . transpose $ zipWith (<>) (inits . repeat $ Nothing) (map (map Just) l)

> プログラミング言語は問題を解くための道具だが、Haskellの場合、
> プログラミング言語自体が解くための問題になっている感じ。
これは言い得ていると思う。Haskell の色んな所に入り込んだ抽象化のおかげで、
従来、アプリを作る末端のプログラマーが各々処理していた仕事が、ライブラリやコンパイラ側に吸い上げられる。
だから全体としての仕事の総量は少なくなる。でもそのかわり、ある程度書けるためにはベースの抽象に慣れる必要がある。
fmapってなに/モナドってなに/Foldableってなに/Lazyってなに... 学習コストは他の言語に比べてずっと高い。

>19
> Haskellの書き方極めればC言語に匹敵する速度が出せる
可能だよ
外部リンク:chrispenner.ca
96
(1): 2020/03/27(金)20:47:16.26 ID:oRj/lH5B(1) AAS
IOモナドに副作用を追いやれることがどれくらい良いことなのかを議論するのは悪くないと思うけど、
副作用が無いなんて嘘付き!とかそもそもプログラムってのは副作用の塊だ!っていうのは誤解か誤読かフカシに騙されたかのどれかなので楽しくない話になる、と思う
170: 2020/04/03(金)23:36:38.26 ID:Wo72KAYJ(1) AAS
学術的に進化してもらって
実用的な部分をメジャー言語が取り込んでくれればおk
346: 2020/05/29(金)11:35:07.26 ID:OBuVVMWP(1) AAS
>>338
Haskellに対して懐疑的だった初学者がParsec使ってパーサー書いてみた感じだと

長所
バグ皆無のパーサーをBNFを書き写すように簡潔に書ける
(自分はCやrubyでは書けなかった)
問題に応じて言語内言語を作れるので、コードの量を極めて少なくできる
短所
yaccやbisonより学ぶのにかなり時間がかかりそう
言語内言語を作れてしまうので、ぱっと見ただけではコードを理解できない
(数式を理解するには記号の意味を理解している必要があるのと同じ)

yaccやbisonを使った経験は無い
だが、Haskellの方が応用が利き問題の解決の仕方が美しいので学びたいとは思わなくなった

解決したい具体的な問題があり、自分が学んできた言語だとコードが大きく複雑になりそうで、新しい概念を学ぶ余裕と覚悟があるなら良いと思う
ただ便利そうなのを探してるとか興味があるってだけだと挫折するかも
Haskellを参考にしたより新しい言語を学ぶ方がスマートかもしれない
自分みたいにHaskellに懐疑的で徹底的に学んで悪口書いてやろうと思っているならマジお勧めwww
381
(1): 2020/08/16(日)21:18:57.26 ID:EuDMb00g(1) AAS
Haskellはある日突然に誕生したわけではなく、
その前身のMirandaとKRCという関数型言語から
多くの特質を受け継いでいます
これら言語に関してはW*k*p*d*aで簡潔に解説されてるので、
まずそちらを一読したのちに参考文献に当たるべきでしょう
以下ではW*k*p*d*aで欠けている日本語の文献を紹介します

Miranda
[1] 第7章 Miranda, p139-163,
 新しいプログラミング・パラダイム, 共立出版, 1989年
 外部リンク:www.am*z*n.c*.j*/dp/4320024931
 Mirandaに関する包括的な解説
[2] 関数プログラミング, 近代科学社, 1991年
 外部リンク:www.am*z*n.c*.j*/dp/4764901811
 Mirandaを用いた関数型プログラミングの入門書
 モナドを含む圏論の応用/発展が誕生する以前の時代に書かれた貴重な教科書

KRC
[3] 4. 関数型言語 KRC, p36-47,
 新世代プログラミング, 共立出版, 1986年
 外部リンク:www.am*z*n.c*.j*/dp/4320022599
[4] 6.2 KRC (Kent Recursive Caluculator), p132-142,
 プログラミング言語の新潮流, 共立出版, 1988年
 外部リンク:www.am*z*n.c*.j*/dp/4320023773
 [3], [4] ともKRCに関する包括的な解説
 KRCはすでにインデントベースの構文/純粋関数型/ パターンマッチ/リスト内包表記
 といった特質を備えた動的型付け関数型言語でした
387: 2020/08/17(月)19:03:19.26 ID:CFLjXFs2(3/4) AAS
>>386
ありがとうございます。
エラーメッセージは以下です。

Prelude> :r
[1 of 1] Compiling Main ( baby.hs, interpreted )

baby.hs:153:1: error:
parse error (possibly incorrect indentation or mismatched brackets)
|
153 | quicksort :: (Ord a) => [a] -> [a]
| ^
Failed, no modules loaded.
522: 2020/10/14(水)04:31:41.26 ID:+VLXbnA3(1) AAS
>>20
ワードカウントのロジックが不思議ちゃんだと思ったけどワードと空白の関係が
"abc dd "みたいな行儀が良い書式じゃないとだめなんだな
" "一文字スペースでワード数が1になってしまうみたいな
countFile :: String -> (Int, Int, Int)
countFile s =
let (cs, ws, ls, _) = foldl' go (0, 0, 0, False) s
in (cs, ws, ls)
where
go :: (Int, Int, Int, Bool) -> Char -> (Int, Int, Int, Bool)
go (cs, ws, ls, wasSpace) c =
let addLine | c == '\n' = 1
| otherwise = 0
addWord | wasSpace = 0
| isSpace c = 1
| otherwise = 0
in (cs + 1, ws + addWord, ls + addLine, isSpace c)
808
(2): 2021/04/07(水)18:16:48.26 AAS
はわわ。。。通りました
下手にimport書いたせいで通らなくなるとかあるんですね
蛇足importと名付けて教訓にします。ありがとうございました
923: 2021/10/17(日)18:41:32.26 ID:DQz0YbVB(1/2) AAS
なんjでめんだこって言う女装子がhaskell勉強していてdao of functional programmingっていう海外の人が書いた文献がわかりやすいってことでそれ読んでいるらしいが
ここの人にもそれ読んでいる人いる?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.039s