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
let_s_use_Eff.pdf
Search
machu
PRO
November 08, 2018
Technology
1
54
let_s_use_Eff.pdf
machu
PRO
November 08, 2018
Tweet
Share
More Decks by machu
See All by machu
NBAチームから学ぶ強いチームの作り方
machuz
PRO
0
29
Authorization to implement with Extensible Effect
machuz
PRO
0
340
アルプの 認証/認可分離戦略と手法
machuz
PRO
3
690
AuthzCtx - Alp社内共有会
machuz
PRO
0
64
アルプのEff独自エフェクト集 / Alp-original ’Eff’ pearls
machuz
PRO
1
1.6k
Scalebaseバックエンド構成について/the backend design of Scalebase
machuz
PRO
0
6k
SQL Meisterへの道 ~更新編~ / sql-meister-CUD
machuz
PRO
0
2.1k
SQL Meisterへの道 ~基礎〜参照編~ / sql-meister-R
machuz
PRO
0
2.4k
Authz
machuz
PRO
0
300
Other Decks in Technology
See All in Technology
Agile in Automotive Industry, puzzles and lights.
hiranabe
3
1.3k
SORACOMで実現するIoTのマルチクラウド対応 - IoTでのクリーンアーキテクチャの実現 -
kenichirokimura
0
380
サプライチェーン攻撃に備える
ryunen344
0
270
LLVM/ASMを使った有限体の高速実装
herumi
0
120
あなたの知らないiOS開発の世界
recruitengineers
PRO
3
170
PdMはどのように全てのスピードを上げられるか ~ 非連続進化のための具体的な取り組み ~
sansantech
PRO
4
1.2k
たった1人からはじめる【Agile Community of Practice】~ソース原理とFearless Changeを添えて~
ktc_corporate_it
1
440
不動産tech Product Night#2_AIことはじめ_GA橋本
takehikohashimoto
0
180
Developer Experienceを向上させる基盤づくりの取り組み事例集
coconala_engineer
0
140
四国のあのイベントの〇〇システムを45日間で構築した話 / cloudohenro2024_tachibana
biatunky
0
330
DuckDB雑紹介(1.1対応版)@DuckDB座談会
ktz
6
1.4k
やってやろうじゃないかメカアジャイル! / Let's do it, mechanical agile!
psj59129
1
600
Featured
See All Featured
The Invisible Customer
myddelton
119
13k
Designing Experiences People Love
moore
138
23k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
354
29k
Debugging Ruby Performance
tmm1
72
12k
Clear Off the Table
cherdarchuk
91
320k
It's Worth the Effort
3n
182
27k
Designing with Data
zakiwarfel
98
5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
0
97
Principles of Awesome APIs and How to Build Them.
keavy
125
16k
Mobile First: as difficult as doing things right
swwweet
221
8.8k
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ͰΔͷͰ͏ͪΐ͍͓ͪΛ