Skip to content

Commit

Permalink
Deploying to gh-pages from @ 1ad44f2 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
kubukoz committed Mar 5, 2024
1 parent 88fbd01 commit 223d96e
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions flavors-of-shared-state/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -224,10 +224,10 @@ <h2 id="isolated-state-with-iolocal"><a class="zola-anchor" href="#isolated-stat
<p>Cats Effect provides an <code>IOLocal</code>. It does exactly what we want! Let's implement the counter with it:</p>
<pre data-lang="scala" class="language-scala z-code"><code class="language-scala" data-lang="scala"><span class="z-source z-scala"><span class="z-meta z-import z-scala"><span class="z-keyword z-other z-import z-scala">import</span> cats<span class="z-punctuation z-accessor z-dot z-scala">.</span>effect<span class="z-punctuation z-accessor z-dot z-scala">.</span>IOLocal</span>
</span><span class="z-source z-scala">
</span><span class="z-source z-scala"><span class="z-storage z-type z-stable z-scala">val</span> <span class="z-variable z-other z-constant z-scala">localCounter</span><span class="z-punctuation z-ascription z-scala">:</span> <span class="z-support z-class z-scala">IO</span><span class="z-punctuation z-definition z-generic z-begin z-scala">[</span><span class="z-support z-class z-scala">Counter</span><span class="z-punctuation z-definition z-generic z-end z-scala">]</span> <span class="z-keyword z-operator z-assignment z-scala">=</span> <span class="z-support z-constant z-scala">IOLocal</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-constant z-numeric z-integer z-decimal z-scala">0</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-accessor z-scala">.</span>map <span class="z-meta z-block z-scala"><span class="z-punctuation z-section z-block z-begin z-scala">{</span> <span class="z-variable z-parameter z-scala">ref</span> <span class="z-storage z-type z-function z-arrow z-lambda z-scala">=&gt;</span>
</span><span class="z-source z-scala"><span class="z-storage z-type z-stable z-scala">val</span> <span class="z-variable z-other z-constant z-scala">localCounter</span><span class="z-punctuation z-ascription z-scala">:</span> <span class="z-support z-class z-scala">IO</span><span class="z-punctuation z-definition z-generic z-begin z-scala">[</span><span class="z-support z-class z-scala">Counter</span><span class="z-punctuation z-definition z-generic z-end z-scala">]</span> <span class="z-keyword z-operator z-assignment z-scala">=</span> <span class="z-support z-constant z-scala">IOLocal</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-constant z-numeric z-integer z-decimal z-scala">0</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-accessor z-scala">.</span>map <span class="z-meta z-block z-scala"><span class="z-punctuation z-section z-block z-begin z-scala">{</span> <span class="z-variable z-parameter z-scala">local</span> <span class="z-storage z-type z-function z-arrow z-lambda z-scala">=&gt;</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> makeCounter<span class="z-punctuation z-section z-group z-begin z-scala">(</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> ref<span class="z-punctuation z-accessor z-scala">.</span>update<span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-variable z-language z-underscore z-scala">_</span> + <span class="z-constant z-numeric z-integer z-decimal z-scala">1</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-separator z-scala">,</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> ref<span class="z-punctuation z-accessor z-scala">.</span>get
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> local<span class="z-punctuation z-accessor z-scala">.</span>update<span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-variable z-language z-underscore z-scala">_</span> + <span class="z-constant z-numeric z-integer z-decimal z-scala">1</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-separator z-scala">,</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> local<span class="z-punctuation z-accessor z-scala">.</span>get
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> <span class="z-punctuation z-section z-group z-end z-scala">)</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"><span class="z-punctuation z-section z-block z-end z-scala">}</span></span>
</span></code></pre>
Expand All @@ -239,13 +239,13 @@ <h2 id="isolated-state-with-iolocal"><a class="zola-anchor" href="#isolated-stat
</span><span class="z-source z-scala">
</span><span class="z-source z-scala"><span class="z-meta z-class z-identifier z-scala"><span class="z-storage z-type z-class z-scala">case </span><span class="z-storage z-type z-class z-scala">class</span><span class="z-entity z-name z-class z-scala"> CounterWithReset</span></span><span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-variable z-parameter z-scala">c</span><span class="z-punctuation z-ascription z-scala">:</span> <span class="z-support z-class z-scala">Counter</span><span class="z-punctuation z-separator z-scala">,</span> <span class="z-variable z-parameter z-scala">withFreshCounter</span><span class="z-punctuation z-ascription z-scala">:</span> <span class="z-support z-class z-scala">IO</span> <span class="z-support z-type z-scala">~&gt;</span> <span class="z-support z-class z-scala">IO</span><span class="z-punctuation z-section z-group z-end z-scala">)</span>
</span><span class="z-source z-scala">
</span><span class="z-source z-scala"><span class="z-storage z-type z-stable z-scala">val</span> <span class="z-variable z-other z-constant z-scala">localCounterR</span><span class="z-punctuation z-ascription z-scala">:</span> <span class="z-support z-class z-scala">IO</span><span class="z-punctuation z-definition z-generic z-begin z-scala">[</span><span class="z-support z-class z-scala">CounterWithReset</span><span class="z-punctuation z-definition z-generic z-end z-scala">]</span> <span class="z-keyword z-operator z-assignment z-scala">=</span> <span class="z-support z-constant z-scala">IOLocal</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-constant z-numeric z-integer z-decimal z-scala">0</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-accessor z-scala">.</span>map <span class="z-meta z-block z-scala"><span class="z-punctuation z-section z-block z-begin z-scala">{</span> <span class="z-variable z-parameter z-scala">ref</span> <span class="z-storage z-type z-function z-arrow z-lambda z-scala">=&gt;</span>
</span><span class="z-source z-scala"><span class="z-storage z-type z-stable z-scala">val</span> <span class="z-variable z-other z-constant z-scala">localCounterR</span><span class="z-punctuation z-ascription z-scala">:</span> <span class="z-support z-class z-scala">IO</span><span class="z-punctuation z-definition z-generic z-begin z-scala">[</span><span class="z-support z-class z-scala">CounterWithReset</span><span class="z-punctuation z-definition z-generic z-end z-scala">]</span> <span class="z-keyword z-operator z-assignment z-scala">=</span> <span class="z-support z-constant z-scala">IOLocal</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-constant z-numeric z-integer z-decimal z-scala">0</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-accessor z-scala">.</span>map <span class="z-meta z-block z-scala"><span class="z-punctuation z-section z-block z-begin z-scala">{</span> <span class="z-variable z-parameter z-scala">local</span> <span class="z-storage z-type z-function z-arrow z-lambda z-scala">=&gt;</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> <span class="z-storage z-type z-stable z-scala">val</span> <span class="z-variable z-other z-constant z-scala">c</span> <span class="z-keyword z-operator z-assignment z-scala">=</span> makeCounter<span class="z-punctuation z-section z-group z-begin z-scala">(</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> ref<span class="z-punctuation z-accessor z-scala">.</span>update<span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-variable z-language z-underscore z-scala">_</span> + <span class="z-constant z-numeric z-integer z-decimal z-scala">1</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-separator z-scala">,</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> ref<span class="z-punctuation z-accessor z-scala">.</span>get
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> local<span class="z-punctuation z-accessor z-scala">.</span>update<span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-variable z-language z-underscore z-scala">_</span> + <span class="z-constant z-numeric z-integer z-decimal z-scala">1</span><span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-separator z-scala">,</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> local<span class="z-punctuation z-accessor z-scala">.</span>get
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> <span class="z-punctuation z-section z-group z-end z-scala">)</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala">
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> <span class="z-support z-constant z-scala">CounterWithReset</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span>c<span class="z-punctuation z-separator z-scala">,</span> <span class="z-support z-constant z-scala">Resource</span><span class="z-punctuation z-accessor z-scala">.</span>make<span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-support z-constant z-scala">IO</span><span class="z-punctuation z-accessor z-scala">.</span>unit<span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-variable z-language z-underscore z-scala">_</span> <span class="z-storage z-type z-function z-arrow z-lambda z-scala">=&gt;</span> ref<span class="z-punctuation z-accessor z-scala">.</span>reset<span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-accessor z-scala">.</span>surroundK<span class="z-punctuation z-section z-group z-end z-scala">)</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"> <span class="z-support z-constant z-scala">CounterWithReset</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span>c<span class="z-punctuation z-separator z-scala">,</span> <span class="z-support z-constant z-scala">Resource</span><span class="z-punctuation z-accessor z-scala">.</span>make<span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-support z-constant z-scala">IO</span><span class="z-punctuation z-accessor z-scala">.</span>unit<span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-section z-group z-begin z-scala">(</span><span class="z-variable z-language z-underscore z-scala">_</span> <span class="z-storage z-type z-function z-arrow z-lambda z-scala">=&gt;</span> local<span class="z-punctuation z-accessor z-scala">.</span>reset<span class="z-punctuation z-section z-group z-end z-scala">)</span><span class="z-punctuation z-accessor z-scala">.</span>surroundK<span class="z-punctuation z-section z-group z-end z-scala">)</span>
</span></span><span class="z-source z-scala"><span class="z-meta z-block z-scala"><span class="z-punctuation z-section z-block z-end z-scala">}</span></span>
</span></code></pre>
<p>We'll also need to enhance our router so that it actually resets the local. Let's make another middleware:</p>
Expand Down

0 comments on commit 223d96e

Please sign in to comment.