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
48
let_s_use_Eff.pdf
ma2k8
PRO
November 08, 2018
Tweet
Share
More Decks by ma2k8
See All by ma2k8
アルプの 認証/認可分離戦略と手法
ma2k8
PRO
2
600
AuthzCtx - Alp社内共有会
ma2k8
PRO
0
36
アルプのEff独自エフェクト集 / Alp-original ’Eff’ pearls
ma2k8
PRO
1
850
Scalebaseバックエンド構成について/the backend design of Scalebase
ma2k8
PRO
0
5.3k
SQL Meisterへの道 ~更新編~ / sql-meister-CUD
ma2k8
PRO
0
1.7k
SQL Meisterへの道 ~基礎〜参照編~ / sql-meister-R
ma2k8
PRO
0
2k
Authz
ma2k8
PRO
0
290
CQRS+ESをKinesis,Spark,RDB,S3でやってみた
ma2k8
PRO
0
3k
The advantage of using ’Eff’ in Scala Project
ma2k8
PRO
2
12k
Other Decks in Technology
See All in Technology
立ち止まっても、寄り道しても / even if I stop, even if I take a detour
katoaz
0
1k
NGINXENG JP#2 - 3-NGINX Plus・プロダクトのアップデート
hiropo20
0
250
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
3
16k
API連携に伴う規制と対応 / Regulations and responses to API linkage
moneyforward
0
170
OpenShiftクラスターのアップグレード自動化への挑戦! / OpenShift Cluster Upgrade Automation
skitamura7446
0
210
Logbii(ログビー) 会社紹介
logbii
0
180
マイクロサービス宣言から8年 振り返りとこれから / Eight Years After the Microservices Declaration A Look Back and A Look Ahead
eisuke
2
320
NGINXENG JP#2 - 4-NGINX-エンジニアリング勉強会
hiropo20
0
130
230125 古いタブレットの活用 かーでぃさん
comucal
PRO
0
17k
PCI DSS に準拠したシステム開発
yutadayo
0
310
メドレー エンジニア採用資料/ Medley Engineer Guide
medley
3
5.1k
目指せCoverage100%! AutoScale環境におけるSavings Plans購入戦略 / JAWS-UG_SRE_Coverage
taishin
0
520
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
34
1.5k
Adopting Sorbet at Scale
ufuk
65
7.8k
What the flash - Photography Introduction
edds
64
10k
VelocityConf: Rendering Performance Case Studies
addyosmani
317
22k
Git: the NoSQL Database
bkeepers
PRO
419
60k
Build The Right Thing And Hit Your Dates
maggiecrowley
22
1.4k
Build your cross-platform service in a week with App Engine
jlugia
221
17k
How to name files
jennybc
47
73k
Fireside Chat
paigeccino
16
1.9k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
101
6.2k
WebSockets: Embracing the real-time Web
robhawkes
58
6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
31
20k
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ͰΔͷͰ͏ͪΐ͍͓ͪΛ