diff options
-rw-r--r-- | docs/index.xml | 8 | ||||
-rw-r--r-- | docs/posts/auto-currying_rust_functions/index.html | 6 | ||||
-rw-r--r-- | posts/auto-currying_rust_functions.md | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/docs/index.xml b/docs/index.xml index 7a4d4e0..dce3d00 100644 --- a/docs/index.xml +++ b/docs/index.xml | |||
@@ -90,9 +90,9 @@ We have placed <code>?</code>s in place of return types. Let’s try to fix that | |||
90 | A function cannot access it’s environment. Our solution will not work. <code>add_curried3</code> attempts to access <code>x</code>, which is not allowed! A closure<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a> however, can. If we are returning a closure, our return type must be <code>impl Fn</code>, and not <code>fn</code>. The difference between the <code>Fn</code> trait and function pointers is beyond the scope of this post.</p> | 90 | A function cannot access it’s environment. Our solution will not work. <code>add_curried3</code> attempts to access <code>x</code>, which is not allowed! A closure<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a> however, can. If we are returning a closure, our return type must be <code>impl Fn</code>, and not <code>fn</code>. The difference between the <code>Fn</code> trait and function pointers is beyond the scope of this post.</p> |
91 | <h3 id="refinement">Refinement</h3> | 91 | <h3 id="refinement">Refinement</h3> |
92 | <p>Armed with knowledge, we refine our expected output, this time, employing closures:</p> | 92 | <p>Armed with knowledge, we refine our expected output, this time, employing closures:</p> |
93 | <pre><code>fn add(x: u32) -> impl Fn(u32) -> impl Fn(u32) -> u32 { | 93 | <div class="sourceCode" id="cb8"><pre class="sourceCode rust"><code class="sourceCode rust"><span id="cb8-1"><a href="#cb8-1"></a><span class="kw">fn</span> add(x<span class="op">:</span> <span class="dt">u32</span>) <span class="op">-></span> <span class="kw">impl</span> <span class="bu">Fn</span>(<span class="dt">u32</span>) <span class="op">-></span> <span class="kw">impl</span> <span class="bu">Fn</span>(<span class="dt">u32</span>) <span class="op">-></span> <span class="dt">u32</span> <span class="op">{</span></span> |
94 | return move |y| move |z| x + y + z; | 94 | <span id="cb8-2"><a href="#cb8-2"></a> <span class="kw">return</span> <span class="kw">move</span> <span class="op">|</span>y<span class="op">|</span> <span class="kw">move</span> <span class="op">|</span>z<span class="op">|</span> x <span class="op">+</span> y <span class="op">+</span> z<span class="op">;</span></span> |
95 | }</code></pre> | 95 | <span id="cb8-3"><a href="#cb8-3"></a><span class="op">}</span></span></code></pre></div> |
96 | <p>Alas, that does not compile either! It errors out with the following message:</p> | 96 | <p>Alas, that does not compile either! It errors out with the following message:</p> |
97 | <pre><code>error[E0562]: `impl Trait` not allowed outside of function | 97 | <pre><code>error[E0562]: `impl Trait` not allowed outside of function |
98 | and inherent method return types | 98 | and inherent method return types |
@@ -500,7 +500,7 @@ test tests::works ... ok</code></pre> | |||
500 | </ol> | 500 | </ol> |
501 | </section></description> | 501 | </section></description> |
502 | <link>https://peppe.rs/posts/auto-currying_rust_functions/</link> | 502 | <link>https://peppe.rs/posts/auto-currying_rust_functions/</link> |
503 | <pubDate>Sat, 09 May 2020 06:07:00 +0000</pubDate> | 503 | <pubDate>Sat, 09 May 2020 06:12:00 +0000</pubDate> |
504 | <guid>https://peppe.rs/posts/auto-currying_rust_functions/</guid> | 504 | <guid>https://peppe.rs/posts/auto-currying_rust_functions/</guid> |
505 | </item> | 505 | </item> |
506 | <item> | 506 | <item> |
diff --git a/docs/posts/auto-currying_rust_functions/index.html b/docs/posts/auto-currying_rust_functions/index.html index a8b7055..2ed5419 100644 --- a/docs/posts/auto-currying_rust_functions/index.html +++ b/docs/posts/auto-currying_rust_functions/index.html | |||
@@ -115,9 +115,9 @@ We have placed <code>?</code>s in place of return types. Let’s try to fix that | |||
115 | A function cannot access it’s environment. Our solution will not work. <code>add_curried3</code> attempts to access <code>x</code>, which is not allowed! A closure<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a> however, can. If we are returning a closure, our return type must be <code>impl Fn</code>, and not <code>fn</code>. The difference between the <code>Fn</code> trait and function pointers is beyond the scope of this post.</p> | 115 | A function cannot access it’s environment. Our solution will not work. <code>add_curried3</code> attempts to access <code>x</code>, which is not allowed! A closure<a href="#fn1" class="footnote-ref" id="fnref1" role="doc-noteref"><sup>1</sup></a> however, can. If we are returning a closure, our return type must be <code>impl Fn</code>, and not <code>fn</code>. The difference between the <code>Fn</code> trait and function pointers is beyond the scope of this post.</p> |
116 | <h3 id="refinement">Refinement</h3> | 116 | <h3 id="refinement">Refinement</h3> |
117 | <p>Armed with knowledge, we refine our expected output, this time, employing closures:</p> | 117 | <p>Armed with knowledge, we refine our expected output, this time, employing closures:</p> |
118 | <pre><code>fn add(x: u32) -> impl Fn(u32) -> impl Fn(u32) -> u32 { | 118 | <div class="sourceCode" id="cb8"><pre class="sourceCode rust"><code class="sourceCode rust"><span id="cb8-1"><a href="#cb8-1"></a><span class="kw">fn</span> add(x<span class="op">:</span> <span class="dt">u32</span>) <span class="op">-></span> <span class="kw">impl</span> <span class="bu">Fn</span>(<span class="dt">u32</span>) <span class="op">-></span> <span class="kw">impl</span> <span class="bu">Fn</span>(<span class="dt">u32</span>) <span class="op">-></span> <span class="dt">u32</span> <span class="op">{</span></span> |
119 | return move |y| move |z| x + y + z; | 119 | <span id="cb8-2"><a href="#cb8-2"></a> <span class="kw">return</span> <span class="kw">move</span> <span class="op">|</span>y<span class="op">|</span> <span class="kw">move</span> <span class="op">|</span>z<span class="op">|</span> x <span class="op">+</span> y <span class="op">+</span> z<span class="op">;</span></span> |
120 | }</code></pre> | 120 | <span id="cb8-3"><a href="#cb8-3"></a><span class="op">}</span></span></code></pre></div> |
121 | <p>Alas, that does not compile either! It errors out with the following message:</p> | 121 | <p>Alas, that does not compile either! It errors out with the following message:</p> |
122 | <pre><code>error[E0562]: `impl Trait` not allowed outside of function | 122 | <pre><code>error[E0562]: `impl Trait` not allowed outside of function |
123 | and inherent method return types | 123 | and inherent method return types |
diff --git a/posts/auto-currying_rust_functions.md b/posts/auto-currying_rust_functions.md index 170fd31..8f60216 100644 --- a/posts/auto-currying_rust_functions.md +++ b/posts/auto-currying_rust_functions.md | |||
@@ -150,7 +150,7 @@ function pointers is beyond the scope of this post. | |||
150 | Armed with knowledge, we refine our expected output, this | 150 | Armed with knowledge, we refine our expected output, this |
151 | time, employing closures: | 151 | time, employing closures: |
152 | 152 | ||
153 | ``` | 153 | ```rust |
154 | fn add(x: u32) -> impl Fn(u32) -> impl Fn(u32) -> u32 { | 154 | fn add(x: u32) -> impl Fn(u32) -> impl Fn(u32) -> u32 { |
155 | return move |y| move |z| x + y + z; | 155 | return move |y| move |z| x + y + z; |
156 | } | 156 | } |