Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Haskell 始めました
Search
Yutaka Kinjo
March 02, 2014
Technology
1
370
Haskell 始めました
株式会社OCC 金城裕
社内勉強会用
Yutaka Kinjo
March 02, 2014
Tweet
Share
More Decks by Yutaka Kinjo
See All by Yutaka Kinjo
エンディングまで連れて行くプレイ体験 - unity 1 week 共有会 #7
yutakakinjyo
0
170
調査対象■■■山脈 - unity1week online 共有会 #2 -
yutakakinjyo
0
890
無限跳躍 - unity1week online 共有会 -
yutakakinjyo
2
810
Structure of English
yutakakinjyo
1
120
才能がなくても確実に学習するためのオレオレ学習法
yutakakinjyo
2
1.8k
自動化勉強会 vol.1
yutakakinjyo
1
73
github導入した話.pdf
yutakakinjyo
1
220
Other Decks in Technology
See All in Technology
生産性向上チームの紹介
cybozuinsideout
PRO
1
870
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
510
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
2
240
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.7k
Databricks における 『MLOps』
databricksjapan
2
170
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
2
6.2k
現代CSSフレームワークの内部実装とその仕組み
poteboy
8
3.6k
JAWS-UG Bedrock Claude Night
yamahiro
3
580
ServiceNow Knowledge Learning Rise up
manarobot
0
210
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
290
web-application-security
matsuihidetoshi
0
160
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
0
160
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
Designing Experiences People Love
moore
136
23k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
Building a Scalable Design System with Sketch
lauravandoore
456
32k
We Have a Design System, Now What?
morganepeng
43
6.7k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
227
16k
Thoughts on Productivity
jonyablonski
58
3.8k
Atom: Resistance is Futile
akmur
259
25k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Build your cross-platform service in a week with App Engine
jlugia
225
17k
Transcript
HASKELL࢝Ί·ͨ͠ גࣜձࣾ OCC Yutaka Kinjo
֓ཁ abstract
•Haskell ͱ •७ਮؔܕݴޠ •cɺjavaɺrubyͳͲͱ͍ͩͿҧ͏ •(ͳʹ͔ɺՄೳੑΛײ͡Δ!!)
•ͨͿΜɺࣾͰৄ͍͠ਓ͍ͳ͍ •Haskell ͷϓϩάϥϛϯάύϥμΠϜڵຯਂ ͍ •ৄ͘͠ͳ͓ͬͯ͘ͱཱͯΔ͔ •ͪΐͬͱͬͯΈͯɺ໘ന͔ͬͨ
͜ΕͰษڧͪ͏
֊ͷܭࢉ factorial
fac 0 = 1 fac n = n * fac(n-1)
main = print (fac 42) 1405006117752879898543142606244511569936384000000000 $ ghc fac.hs $ ./fac
fac 0 = 1 fac n = n * fac(n-1)
main = print (fac 42) 引数のパターン を記述できる fac n = if n == 0 then 1 else n * fac(n-1) if文かかなくてもいい
FizzBuzz
None
ແݶϦετ Infinite list
list = [1,2,3,4] inf_list = [1..]
ԆධՁ lazy evaluation
inf_list = [1..] take 3 inf_list [1,2,3]
inf_list = [1..] take 52 inf_list [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, 22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,3 9,40,41,42,43,44,45,46,47,48,49,50,51,52]
ΧϦʔԽ currying
•Haskell ͷ࣮ؔ 1 ͭͷҾ͔͠औΒͳ͍ • ෳͷҾΛͱΔ࣮ؔΧϦʔԽ͞Ε͍ͯΔ
max 1 2 > 2 ෳͷҾΛͱΔؔΧϦʔԽ͞Ε͍ͯΔ
(max 1) 2 > 2 ͜͏͡Ό!!
1と引数を比べる関数になる (max 1) 2
これは関数 (max 1)
部分適応された関数 (max 1) デフォルトですでに 1が設定された max
関数名をつけれる let maxOne = (max 1) maxOne 2 > 2
ちょっといじる let maxOne = (max 1.0) maxOne 0.5 > 1.0
࣮༻ྫ application
•৽మॅۚιϦϡʔγϣϯζ • ࣌ՁձܭύοέʔδʮBancMeasureʯ •GREE • ͷKVSσʔλϕʔεͷཧ • ը૾αʔόͷϑϩϯτΤϯυ
·ͱΊ summary
• ؒҧͬͯͨΒ͝ΊΜͳ͍͞ • for จ ࠶ؼͰফ͑ͨ • if จ ύλʔϯϚονͰফ͑ͨ
• ͳΜ͔ɺΧϦʔԽมଶ • ࣮༻ྫ࣮͋Δ • ূ໌ͱ͔Ͱ͖ͦ͏ • (ͳʹ͔ɺՄೳੑΛײ͡Δ!!)
ࢀߟ reference
• http://maoe.hatenadiary.jp/entry/2013/12/12/195322 • http://itpro.nikkeibp.co.jp/article/COLUMN/20130112/449224/ • ॻ੶ : ͍͢͝Haskell ͨͷֶ͘͠΅͏