Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
let_s_use_Eff.pdf
ma2k8
PRO
November 08, 2018
Technology
1
38
let_s_use_Eff.pdf
ma2k8
PRO
November 08, 2018
Tweet
Share
More Decks by ma2k8
See All by ma2k8
アルプの 認証/認可分離戦略と手法
ma2k8
PRO
2
440
AuthzCtx - Alp社内共有会
ma2k8
PRO
0
21
アルプのEff独自エフェクト集 / Alp-original ’Eff’ pearls
ma2k8
PRO
1
530
Scalebaseバックエンド構成について/the backend design of Scalebase
ma2k8
PRO
0
4.1k
SQL Meisterへの道 ~更新編~ / sql-meister-CUD
ma2k8
PRO
0
1.5k
SQL Meisterへの道 ~基礎〜参照編~ / sql-meister-R
ma2k8
PRO
0
1.7k
Authz
ma2k8
PRO
0
260
CQRS+ESをKinesis,Spark,RDB,S3でやってみた
ma2k8
PRO
0
2.8k
The advantage of using ’Eff’ in Scala Project
ma2k8
PRO
2
11k
Other Decks in Technology
See All in Technology
SlackBotで あらゆる業務を自動化。問い合わせ〜DevOpsまで #CODT2022
kogatakanori
0
790
ラブグラフ紹介資料 〜プロダクト解体新書〜 / Lovegraph Product Deck
lovegraph
0
220
QiitaConference2022
fuwasegu
0
160
プロダクトってなに? マネジメントってなんなの? ゼロからプロダクトマネジメントを 明らかにするぞ / what is product management
moriyuya
0
110
Azure Arc Virtual MachineとAzure Arc Resource Bridge / VM provisioning through Azure portal on Azure Stack HCI (preview)
sashizaki
0
120
PUTとPOSTどっち使う?
hankehly
0
180
ひとりでも安定して 組織を変える活動を続けていくための ストレスマネジメント
pastelinc
0
830
MRTK3 - DataBinding and Theming 入門
futo23
0
180
約6年間運用したシステムをKubernetesに完全移行するまで/Kubernetes Novice Tokyo
isaoshimizu
5
810
雑な攻撃からELBを守る一工夫 +おまけ / Know-how to protect servers from miscellaneous attacks
hiroga
0
490
スタートアップと技術選定と AWS
track3jyo
PRO
2
330
WACATE 2022 夏 ワークショップの目的
imtnd
0
120
Featured
See All Featured
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Six Lessons from altMBA
skipperchong
14
1.4k
Thoughts on Productivity
jonyablonski
43
2.3k
The Pragmatic Product Professional
lauravandoore
19
3k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
10k
What the flash - Photography Introduction
edds
62
10k
Become a Pro
speakerdeck
PRO
3
840
Testing 201, or: Great Expectations
jmmastey
21
5.4k
Art, The Web, and Tiny UX
lynnandtonic
280
17k
BBQ
matthewcrist
74
7.9k
Streamline your AJAX requests with AmplifyJS and jQuery
dougneiner
126
8.5k
A Tale of Four Properties
chriscoyier
149
21k
Transcript
let's use Eff ~first step~
ࠓ ΄Μͷ͞ΘΓ͚ͩͰ͢
༻ޠͷઆ໌ • Monad Transformer • Extensible effect (use FreeMonad) •
˒Freer effects (use FreerMonad, Efficient Freer) • ࠓճಋೖ͢ΔͷFreer effectsɻ͜·͍ผͰࢿྉ࡞ͬͯ෦ձͰͰ͠·͢ɻ
effͰͳʹ͕͍ͨ͠ͷ͔ • DSLΛ࡞ͬͯͦΕΛ߹͍ͨ͠ɻ • DSLӳޠαϓϦDSLతͳ୯ҐͰ࡞ΔͱυϝΠϯ͕Ͱ͔͗ͯ͋͢·Γҙຯ͕ͳ͍ • ࡉ͔͍୯ҐͰDSLΛ࡞ΓɺͦΕΛUseCaseͰ߹͢ΕυϝΠϯ͕Β·ͳ͍ • DSLΛ࡞Δ·Ͱͳ͍ࡉ͔ͳEffect߹͍ͨ͠ •
zipkinͰͷτϨʔεॲཧͷϕϯνϚʔΫɺΞϓϦέʔγϣϯίʔυͷมߋ͕ඞཁͳٕज़Ҋ݅Λ͢ ҆͘શʹߦ͏͜ͱ͕Ͱ͖Δɻ • ※͜͜Ͱ͍͏DSLશͯEDSLͰ͢ɻ
Ͳ͏มΘΔͷ͔ SecondaryAdapter UseCase Domain Application ※ґଘੑٯసޙͷਤͰ͢ ·ͣ͜͜ʹDSL,InterpreterΛ ಋೖ͢Δɻ Lib ͍·Θ͠Մೳͳ෦͜͜
ίʔυͷΠϝʔδ
DSL • ͜Μͳײ͡ͷܕ(ADT)͕Ͱ͖·͢ɻ • store,find,delete,exists,clearMonad Stackૢ࡞ΛੵΉεϚʔτίϯετϥΫλͰ͢ɻҰݟͦ͠͏Ͱ͕͏ͱ͖؆୯ͳͷͰ҆͝৺Λ(ޙड़)
Interpreter • ఆٛͨ͠ADTΛύλʔϯϚονͯ͠ॲཧΛ͢Δɻ • ͜͜Ͱ৭ΜͳEffectΛ߹͢Δ͜ͱ͕Ͱ͖Δɻ
࣮ߦ • InterpreterͷςετΛషͬͯΈΔ • ͜ͷςετ௨Γ·͢ɻ • CacheIOͷதͰwriter,reader,either,taskΛ߹͍ͯ͠Δͷ ʹɺprogramͰ΄ͱΜͲҙࣝ͠ͳ͍ͰOK • ࣮ߦ࣌ʹͲͷEffectΛ͍ࠞͥͯΔ͔͚ͩڭ͑ͯ͋͛ͳ͍ͱ͍
͚ͳ͍͕ɺࡉ͔͘ҙࣝ͠ͳ͍ͰॅΉΑ͏ʹ͢Δ༧ఆ (CacheIO,TwilioIOͷελοΫΛ͕ͬͪΌΜͯ͜͠Θͨͩ͢ ͚ɺ͘Β͍ͷཻɻ
͏গ͠༡ΜͰΈΑ͏ • ಠࣗఆٛͷDSLͱผͰtaskܕͱUnitܕࠞͥͯΈΔɻ • ͜Εී௨ʹ௨Δɻ • ܕ߹ΘͤήʔϜ͕ͷ͘͢͝γϯϓϧʹͳ͍ͬͯΔͷ͕͓Θ͔Γ͍͚ͨͩΔͩΖ͏͔ɾɾɾɾɾ • sequenceEff.SequenceAͰ༻ҙ͞Ε͍ͯΔɻࠓͬͯΔͷΧόʔ͍ͯ͠Δɻ
Γ࡞ۀήʔ͜ͳͤ PRͰΔͷͰ͏ͪΐ͍͓ͪΛ