Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Haskell初心者がHaskellの楽しさについて語る
Search
Yuto Takamune
February 22, 2023
Programming
0
210
Haskell初心者がHaskellの楽しさについて語る
Yuto Takamune
February 22, 2023
Tweet
Share
More Decks by Yuto Takamune
See All by Yuto Takamune
GPT-3.5 Turbo をファインチューニングして自分のクローンを作った話
shinbunbun_
1
340
RustのLINEBot SDKを自作した話
shinbunbun_
0
2k
セキュリティキャンプ2023 Y3分散合意ゼミ 最終発表
shinbunbun_
0
4.2k
NixOSでもご自宅k8sがしたい!
shinbunbun_
2
4.3k
カーネルレベルでTwitterを禁止しよう
shinbunbun_
0
280
CRDTで始めるコンフリクトしないデータ同期
shinbunbun_
0
570
Rustで楕円曲線暗号の署名アルゴリズムをフルスクラッチ実装してみた話
shinbunbun_
0
1.9k
IEEE802.1X認証を導入してみた
shinbunbun_
0
300
UBICの食材管理APIを作った話
shinbunbun_
0
230
Other Decks in Programming
See All in Programming
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
140
マスタデータ問題、マイクロサービスでどう解くか
kts
0
100
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
7.2k
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
830
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
130
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
130
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
3
740
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
250
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.6k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
390
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
We Have a Design System, Now What?
morganepeng
54
7.9k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
Haskell初心者がHaskellの楽 しさについて語る Zli 追い出しLT2023 s1290035 しんぶんぶん
Haskellって...気持ち良くないですか?
なぜHaskellをやろうと思ったのか • Answer: Rustをもっと深く理解したかったから • Rustの型クラス(Trait)はHaskellに影響を受けている • HaskellをやればRustをもっと理解できるのでは...!?という思いと、純粋関数型 言語に慣れたくてやってみた
AOJのITP1を何問か解いてみた
2_C
Javaで書くと...
Haskellで書くと...
気持ち良い〜〜〜〜〜〜!!!!!
解説 • 1~3行目: モジュールのインポート • 6行目: 標準入力 ◦ getLineで読み込まれた入力を wordsを使って空白区切りでリストにし、
map (read :: String -> Int) でリストの中身をStringからIntに変換 • 7行目: 加工して出力 ◦ sort sでリストを昇順ソート ◦ それをmap showに渡してリストの中身を Stringに変換 ◦ それをunwordsに渡して空白区切りの文字列に変換 ◦ それをputStrLnに渡して出力
2_D
Javaで書くと...
Haskellで書くと...
全体的にスッキリ
3_A
Javaで書くと...
Haskellで書くと...
ん??なんで再帰???
Haskellのループは基本再帰らしい • Haskellにfor文とかwhile文はない • ループ処理を書きたい時は再帰関数を使う • flip fixを使うと手続型っぽい書き方もできるらしい ◦ https://qiita.com/lotz/items/0894079a44e87dc8b73e
いよいよ今日一気持ち良い問題
6_B
まつもと先輩がC++で書くと...
ちゃんと綺麗なコード
これをHaskellで書くとなんと...
Haskellで書くと...
main関数はなんと3行!
コード解説 • 1~4行目: モジュールのimport • 7行目: 入力を全てssに読み込み • 8行目: コアロジック全て
◦ lines ssで入力を改行区切りでリストにする ・・・① ◦ (++) <$> ["S ", "H ", "C ", "D "] <*> map show [1 .. 13] :: [String])で、S1, S2, … D13までのリスト を作成・・・② ◦ //で①と②の差分リストを作成 ◦ そのリストをunlinesに食わせて改行区切りの文字列に変換 ◦ putStrに食わせて出力
気持ち良すぎだろ!!!!!
今後の展望 • すごいH本がまだ2章残ってるので読み切る • HaskellでLispインタプリンタを作る • モナディックパーサーで何か作る • OCamlを履修する(Rustのために) 次回はこのどれかのLTを話す(予定)
みんなもHaskell、やろう!