<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ken Okabe</title>
    <description>The latest articles on DEV Community by Ken Okabe (@ken_okabe).</description>
    <link>https://dev.to/ken_okabe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F922040%2F7c428e12-b220-4185-827c-75d2ea971d98.png</url>
      <title>DEV Community: Ken Okabe</title>
      <link>https://dev.to/ken_okabe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ken_okabe"/>
    <language>en</language>
    <item>
      <title>💡Block</title>
      <dc:creator>Ken Okabe</dc:creator>
      <pubDate>Wed, 17 Jan 2024 09:15:35 +0000</pubDate>
      <link>https://dev.to/ken_okabe/block-2nka</link>
      <guid>https://dev.to/ken_okabe/block-2nka</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MgX7Dysr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images4/main/img_1705992520504.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MgX7Dysr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images4/main/img_1705992520504.png" alt="image" width="500" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  &lt;a href="https://dev.to/ken_okabe/unknown-unknowns-the-ones-you-dont-know-you-dont-know-37bc"&gt;Unknown Unknowns "the ones you don’t know you don’t know"&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  &lt;a href="https://dev.to/ken_okabe/functor-and-monad-at-a-glance-22a"&gt;Functor and Monad at a Glance&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  💡&lt;a href="https://dev.to/ken_okabe/block-2nka"&gt;Block&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vOKYt0hS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images/main/img_1684706440396.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vOKYt0hS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images/main/img_1684706440396.png" width="640" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Introduction to outline of functional programming
&lt;/h4&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Functional code is assembled like LEGO blocks&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The basic principle of LEGO blocks is to "connect two &lt;strong&gt;blocks&lt;/strong&gt; together to create a new block"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;blocks&lt;/strong&gt; of &lt;strong&gt;functional code&lt;/strong&gt; are actually &lt;strong&gt;expressions (mathematical expressions)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--akoff38G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images1/main/img_1691695638599.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--akoff38G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images1/main/img_1691695638599.png" width="509" height="502"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;The way LEGO blocks are connected is &lt;strong&gt;"fitting the bumps and holes"&lt;/strong&gt;, which is the only way, but the way &lt;strong&gt;blocks of expressions&lt;/strong&gt; are connected is &lt;strong&gt;infinite&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;When LEGO blocks are connected by &lt;strong&gt;"fitting the bumps and holes"&lt;/strong&gt;, of course the &lt;strong&gt;"shape and size of the bumps and holes"&lt;/strong&gt; must match, and such rules are called &lt;strong&gt;standards&lt;/strong&gt; in the industrial world, and the &lt;strong&gt;USB&lt;/strong&gt; standard is well known&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8muOJvPz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://m.media-amazon.com/images/I/61hXFKt7qTL._AC_SY450_.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8muOJvPz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://m.media-amazon.com/images/I/61hXFKt7qTL._AC_SY450_.jpg" alt="image" width="327" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://amzn.to/4434Vo2"&gt;Amazon affiliate to do UGREEN USB Type C Cable for Smartphone L-Shaped Nylon Braided 3A Fast Charging Quick Charge 3.0/2.0 Compatible 56K Resistor Installed Xperia XZ XZ2, LG G5 G6 V20 etc. Compatible (1m)&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;When two expressions (blocks) are connected by an operator, the operator and the expressions must match the standard&lt;/strong&gt;, which is called &lt;strong&gt;standard&lt;/strong&gt; in the industrial world, but in the world of programming, it corresponds to something called &lt;strong&gt;Type&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HFPL6fN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/note.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HFPL6fN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/note.svg" alt="" width="800" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The similarity between the "standard" of the industrial world and the "type" of the programming world&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What is the "type" of the programming world, or more precisely, the "type" as a mathematical entity? We will dig deeper into this later, but as a rough image for the first entrance, you can understand it as something like the "standard" of the industrial world&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2Gal2uF_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1704442355605.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2Gal2uF_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1704442355605.png" alt="image" width="718" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KRoRpvgm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1704443261596.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KRoRpvgm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1704443261596.png" alt="image" width="733" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ffQR82tM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1704443356988.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ffQR82tM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1704443356988.png" alt="image" width="733" height="1114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fxwaZ76U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/notefooter.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fxwaZ76U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/notefooter.svg" alt="" width="800" height="12"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Since there are infinite ways to connect &lt;strong&gt;blocks of expressions&lt;/strong&gt;, there are also infinite &lt;strong&gt;types&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;Among the infinite ways of connecting &lt;strong&gt;blocks of expressions&lt;/strong&gt;, the &lt;strong&gt;four methods of addition, subtraction, multiplication, and division&lt;/strong&gt; are taught in elementary school arithmetic and are called &lt;strong&gt;arithmetic operations&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EBYbEkOL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images1/main/img_1691694857440.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EBYbEkOL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images1/main/img_1691694857440.png" alt="image" width="162" height="241"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;This way of connecting two expressions (blocks) is called &lt;strong&gt;binary operation&lt;/strong&gt;, and arithmetic operations are members of binary operations&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;(binary) operators&lt;/strong&gt; that connect two expressions (blocks) are  

&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt; +− × ÷~+ - ~ \times ~ \div&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mspace nobreak"&gt; &lt;/span&gt;&lt;span class="mord"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;−&lt;/span&gt;&lt;span class="mspace nobreak"&gt; &lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mord"&gt;×&lt;/span&gt;&lt;span class="mspace nobreak"&gt; &lt;/span&gt;&lt;span class="mord"&gt;÷&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YqXhotPo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images/main/img_1687328316202.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YqXhotPo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images/main/img_1687328316202.png" alt="image" width="280" height="364"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;type&lt;/strong&gt; that matches the &lt;strong&gt;expressions (blocks)&lt;/strong&gt; to be connected is a number&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;1 2 3 4
1 ~ 2 ~ 3 ~ 4

  
  
  &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mspace nobreak"&gt; &lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="mspace nobreak"&gt; &lt;/span&gt;&lt;span class="mord"&gt;3&lt;/span&gt;&lt;span class="mspace nobreak"&gt; &lt;/span&gt;&lt;span class="mord"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A binary operation that &lt;strong&gt;connects two expressions (blocks) 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;11&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 and 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;22&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 with the operator 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;++&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;1+2=3
1 + 2 = 3

  
  
  &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;A binary operation that &lt;strong&gt;connects two expressions (blocks) 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;33&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 and 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;44&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 with the operator 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;×\times&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;×&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;3×4=12
3 \times 4 = 12

  
  
  &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;3&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;×&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;4&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;1+2=31 + 2 = 3&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 is a &lt;strong&gt;new expression (block) that is assembled by connecting two expressions (blocks)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;Therefore, as long as you can connect two expressions (blocks), &lt;strong&gt;it is just a repetition of the same thing&lt;/strong&gt;, and you can freely connect three or more expressions (blocks) by combining the same connection 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;++&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;+&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
 or different connections 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;×\times&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;×&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;(1+2)×4=12
(1 + 2)\times 4 = 12

  
  
  &lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;×&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;4&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Functional programming&lt;/strong&gt; is a method of doing everything &lt;strong&gt;only&lt;/strong&gt; by connecting and assembling blocks like this&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;So in the end? Functional programming is just building mathematical expressions like 
&lt;span class="katex-element"&gt;
  &lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;(1+2)×4=12(1 + 2)\times 4 = 12&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;1&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;2&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;×&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;4&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;
, so it can be said to be &lt;strong&gt;mathematics itself&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Since we have already done this kind of operation in arithmetic and mathematics classes, we have already mastered the basics of functional programming!&lt;/strong&gt; 🥳🎉&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HFPL6fN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/note.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HFPL6fN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/note.svg" alt="" width="800" height="40"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming languages where code is composed of expressions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Relatively new programming languages such as Rust and Verse have a strong functional character, and in principle, code is composed of expressions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OFqXIBIs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701326339175.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OFqXIBIs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701326339175.png" alt="image" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Statements and expressions
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Rust is primarily an expression language. This means that most forms of evaluation produce or cause a value, and evaluation is guided by a unified syntax category called expressions. Each kind of expression can usually be nested within other kinds of expressions, and the rules for evaluating an expression specify both the value it produces and the order in which its subexpressions are themselves evaluated.&lt;/p&gt;

&lt;p&gt;In contrast, statements are primarily used to contain expressions and sequence their evaluation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QenOVm14--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701327585125.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QenOVm14--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701327585125.png" alt="image" width="349" height="819"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ao7lZPvS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701327407248.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ao7lZPvS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701327407248.png" alt="image" width="248" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tIZTnAhY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701327441106.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tIZTnAhY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701327441106.png" alt="image" width="660" height="472"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;As explained in the references of Rust and Verse, which emphasize that &lt;strong&gt;code can be written in expressions&lt;/strong&gt; at the beginning, the content is exactly the same as what was introduced in this chapter, and it is the most basic and fundamental nature of functional code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fxwaZ76U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/notefooter.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fxwaZ76U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/notefooter.svg" alt="" width="800" height="12"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>functional</category>
      <category>math</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Functor and Monad at a Glance</title>
      <dc:creator>Ken Okabe</dc:creator>
      <pubDate>Wed, 17 Jan 2024 09:03:58 +0000</pubDate>
      <link>https://dev.to/ken_okabe/functor-and-monad-at-a-glance-22a</link>
      <guid>https://dev.to/ken_okabe/functor-and-monad-at-a-glance-22a</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6o-Zr1_T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images4/main/img_1705992616748.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6o-Zr1_T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images4/main/img_1705992616748.png" alt="image" width="500" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  &lt;a href="https://dev.to/ken_okabe/unknown-unknowns-the-ones-you-dont-know-you-dont-know-37bc"&gt;Unknown Unknowns "the ones you don’t know you don’t know"&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  &lt;a href="https://dev.to/ken_okabe/functor-and-monad-at-a-glance-22a"&gt;Functor and Monad at a Glance&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  💡&lt;a href="https://dev.to/ken_okabe/block-2nka"&gt;Block&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤩 Understand Functor and Monad at a glance ~ Preview of UNIT3 THEORY’s overview
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ordinary function&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gjuFKGsb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694896818758.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjuFKGsb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694896818758.png%23gh-light-mode-only" alt="image" width="283" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monad function (Kleisli arrow)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uZTMGQVO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694896881397.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uZTMGQVO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694896881397.png%23gh-light-mode-only" alt="image" width="299" height="265"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;(Endo)Functor and Monad are two sides of the same mathematical structure&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hjrh28jt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694896962933.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hjrh28jt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694896962933.png%23gh-light-mode-only" alt="image" width="749" height="290"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;The relationship between $id$ and $ID$ of (Endo)Functor and Monad&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t3XDPvxM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701161800128.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t3XDPvxM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701161800128.png%23gh-light-mode-only" alt="image" width="643" height="399"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VfavAUeH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701161868242.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VfavAUeH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1701161868242.png%23gh-light-mode-only" alt="image" width="749" height="393"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Pipelined functions can be linked (function composition)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C48nCLcH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1695097372602.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C48nCLcH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1695097372602.png%23gh-light-mode-only" alt="image" width="739" height="861"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;In (Endo)Functor, functions are linked and composed in the pipeline for both the contents and the shell of the container&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;In Monad, link for Monad function is Kleisli composition&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QoT1HECz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694899301196.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QoT1HECz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694899301196.png%23gh-light-mode-only" alt="image" width="800" height="963"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;In (Endo)Functor, functions are linked and composed in the pipeline for both the contents and the shell of the container&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jWevPA_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694937849906.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jWevPA_8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694937849906.png%23gh-light-mode-only" alt="image" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uQy6maSN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694937772302.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uQy6maSN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694937772302.png%23gh-light-mode-only" alt="image" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;In Monad, link for Monad function is Kleisli composition&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H1kg4e6c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694937402098.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H1kg4e6c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1694937402098.png%23gh-light-mode-only" alt="image" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fhaWcVpw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1695101924426.png%23gh-light-mode-only" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fhaWcVpw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images2/main/img_1695101924426.png%23gh-light-mode-only" alt="image" width="800" height="923"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>functional</category>
      <category>monad</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Unknown Unknowns "the ones you don’t know you don’t know"</title>
      <dc:creator>Ken Okabe</dc:creator>
      <pubDate>Wed, 17 Jan 2024 08:50:58 +0000</pubDate>
      <link>https://dev.to/ken_okabe/unknown-unknowns-the-ones-you-dont-know-you-dont-know-37bc</link>
      <guid>https://dev.to/ken_okabe/unknown-unknowns-the-ones-you-dont-know-you-dont-know-37bc</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MgX7Dysr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images4/main/img_1705992520504.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MgX7Dysr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images4/main/img_1705992520504.png" alt="image" width="500" height="700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  &lt;a href="https://dev.to/ken_okabe/unknown-unknowns-the-ones-you-dont-know-you-dont-know-37bc"&gt;Unknown Unknowns "the ones you don’t know you don’t know"&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  &lt;a href="https://dev.to/ken_okabe/functor-and-monad-at-a-glance-22a"&gt;Functor and Monad at a Glance&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;li&gt;&lt;h4&gt;
  
  
  💡&lt;a href="https://dev.to/ken_okabe/block-2nka"&gt;Block&lt;/a&gt;
&lt;/h4&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why is Functional Programming Difficult to Understand?
&lt;/h2&gt;

&lt;p&gt;For many programmers, functional programming is a knowledge system that falls into the categories of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unknown Unknowns "the ones you don’t know you don’t know"&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unknown Knowns "the ones you don’t know you know"&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it's rare for these "realizations" to be explained carefully.&lt;/p&gt;




&lt;h2&gt;
  
  
  Many Explanations of Functional Programming Overflowing in the Streets
&lt;/h2&gt;

&lt;p&gt;Functional programming is about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Combining &lt;strong&gt;pure functions&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pure functions&lt;/strong&gt; should not have &lt;strong&gt;side effects&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Variables are &lt;strong&gt;immutable&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Strive for &lt;strong&gt;referential transparency&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are generally the features and specifications listed along with new terms. All of these are  &lt;strong&gt;quite strict constraint rules&lt;/strong&gt; , and there's no doubt that they are requirements that programmers have not been conscious of so far.  &lt;strong&gt;They take away the freedom of coding and can feel like they are tying the hands and feet of the programmer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The true nature of each term's concept is never fully explained to the reader until the very end.  &lt;strong&gt;"What is it really?"&lt;/strong&gt;  Because it's not properly processed, it's often forced upon the reader with new code, saying things like "You can write such beautiful code" and "Did you feel the benefits somehow?"&lt;/p&gt;

&lt;p&gt;In reality, these new terms and concepts have &lt;strong&gt;a simple and robust common point&lt;/strong&gt; , and there's a fundamental concept that should be realized first. That should be thoroughly explained first.&lt;/p&gt;

&lt;p&gt;That is a great process of  &lt;strong&gt;"realization."&lt;/strong&gt;  Ideally, " &lt;strong&gt;realization" is an intellectual exploration and adventure and should be very interesting.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;However, because the primary goal of many explanations in the streets is to cover these listed features and attach seemingly persuasive explanations to each, this most important "realization" is either lightly touched upon as if it were an extra or completely skipped over.&lt;/p&gt;

&lt;p&gt;Even the person explaining may "not really understand" (I think this case is very common when I see it), or even if they do understand, it's troublesome to kindly explain because it requires skill, so it's easy to get away with "I said it for the time being."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Of course, the author does not know all the explanations, but I think most of the explanations fail for this reason.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Knowns | Unknowns - "the ones you know" "the ones you don't know"
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gq_sa6Bv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969791675.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gq_sa6Bv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969791675.png" alt="image" width="703" height="697"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a person, there are &lt;strong&gt;Knowns | Unknowns&lt;/strong&gt; - &lt;strong&gt;"the ones you know" "Things you don't know"&lt;/strong&gt; in the world.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Of course, there are overwhelmingly more "Things you don't know" in the world, and the size of "the ones you know" is greatly exaggerated for the sake of explanation.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nJMTEifk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969750569.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nJMTEifk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969750569.png" alt="image" width="703" height="697"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gradually, the act of expanding the area of &lt;strong&gt;Knowns "the ones you know"&lt;/strong&gt; to replace the area of &lt;strong&gt;Unknowns "Things you don't know"&lt;/strong&gt; becomes the acquisition of knowledge.&lt;/p&gt;

&lt;p&gt;For example, if we limit it to the field of programming and IT,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I want to learn the programming language &lt;strong&gt;Rust&lt;/strong&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want to be able to use &lt;strong&gt;UnrealEngine5&lt;/strong&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I want to know practical techniques for &lt;strong&gt;Docker&lt;/strong&gt;!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It would be something like this.&lt;/p&gt;




&lt;h2&gt;
  
  
  But, you "realized" that it was Unknowns "Things you don't know," right?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--egHrSYLg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700033588167.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--egHrSYLg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700033588167.png" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k-yO-kZe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700033804207.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k-yO-kZe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700033804207.png" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eY7dmMOb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700034037135.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eY7dmMOb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700034037135.png" width="539" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rust, UnrealEngine5, Docker, and others are well-known technologies in the programming and IT world.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GWazCTI0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702977816785.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GWazCTI0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702977816785.png" alt="image" width="688" height="1062"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, &lt;strong&gt;well-known&lt;/strong&gt; means that everyone knows the content of the technology, is familiar with it, and is proficient in it, but rather, the name is well-known, well-recognized, and realized.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZqlnwFQM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969702463.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZqlnwFQM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969702463.png" alt="image" width="703" height="817"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Unknown "Unrealized" Unknown Territory
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v_CdLntN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969558217.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v_CdLntN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969558217.png" alt="image" width="704" height="759"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In other words, whether or not you know the content of the technology, there is an &lt;strong&gt;Unknown "Unrealized" unknown territory&lt;/strong&gt; that is not even well recognized in general, outside the well-known Known area.&lt;/p&gt;




&lt;h2&gt;
  
  
  Changing Unknown "Unrealized" to Known "Realized"
&lt;/h2&gt;

&lt;p&gt;`&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W1WnsKSs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969400184.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W1WnsKSs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969400184.png" alt="image" width="704" height="759"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the "parts" of functional programming are not well-known technologies like Rust and Docker,&lt;/p&gt;

&lt;p&gt;To learn functional programming,&lt;/p&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;

&lt;p&gt;Unknown (Unrealized)&lt;/p&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&gt;

&lt;p&gt;Known (Realized)&lt;/p&gt;

&lt;p&gt;This process = &lt;strong&gt;realization&lt;/strong&gt; is the most important thing.&lt;/p&gt;

&lt;p&gt;However, &lt;strong&gt;many explanations of functional programming overflowing in the streets&lt;/strong&gt; try to explain the new concepts that are necessary for functional programming and probably unknown to the reader, as if they are already well-known in the streets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6wxOgnuj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969477634.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6wxOgnuj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969477634.png" alt="image" width="800" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This approach does not work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a result,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Functional programming has a concept called pure functions."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Pure functions are referentially transparent."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Pure functions do not cause side effects."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's like building something in the air without a foundation, trying to explain an unknown concept with another unknown concept, and it's completely meaningless. The explanation is in normal mode.&lt;/p&gt;

&lt;p&gt;Or, in cases where they instinctively realize that it's not good, they set up a very unique example and try to persuade the reader by writing sample code.&lt;/p&gt;

&lt;p&gt;Basically, it's one of these two choices, and at the bottom line, the true nature of the fundamental concept, "realization," is not touched upon and ends without being explained, and there is definitely no explanation that gives the reader the realization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explaining an unknown word with another unknown word ← Out of the question&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Showing a unique example of sample code and reconstructing an unknown concept in the reader's brain ← There are few geniuses who can do such a thing&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also a "combination of both."&lt;/p&gt;

&lt;p&gt;That is the pattern of &lt;strong&gt;writing Haskell code and calling it an "introduction to functional programming and category theory."&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explaining new concepts of functional programming with the unknown language specifications of an unknown language called Haskell&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Showing sample code of an unknown language called Haskell and reconstructing unknown concepts of functional programming and category theory in the reader's brain&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This "combination of both" is obviously bad, but there is actually a harsh reality in the programming world where people who have become convinced by this approach, or at least can actually write Haskell code themselves, endlessly reproduce the same approach they had to go through.&lt;/p&gt;




&lt;h2&gt;
  
  
  Unknown "Unrealized" Knowns | Unknowns
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W1WnsKSs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969400184.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W1WnsKSs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969400184.png" alt="image" width="704" height="759"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unknown "Unrealized" knowledge includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Knowns "the ones you know"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unknowns "Things you don't know"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are there.&lt;/p&gt;

&lt;p&gt;To clarify this, although it is a problem of the concept diagram of classification, the graph can be rewritten.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ghYpGUDD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969357477.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ghYpGUDD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969357477.png" alt="image" width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, the lower half is usually realized, well-known, Known area.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--onFD9ueh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969339356.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--onFD9ueh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969339356.png" alt="image" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To repeat, if the subject you want to learn is already a well-known technology, such as Rust, UnrealEngine, or Docker, this approach works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;However, this approach does not work in functional programming.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Unknown Knowns "the ones you don’t know you know"
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rqPoXa_e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969303581.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rqPoXa_e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969303581.png" alt="image" width="524" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First of all, it is very important to reconfirm &lt;strong&gt;Known Knowns "the ones you know and realize."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, &lt;strong&gt;"addition," "subtraction," "multiplication," and "division," which we learned in elementary school math at the beginning, should be "very well known" to everyone.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This book actually starts from this level&lt;/strong&gt;, and it is designed that way more strategically than the above policy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After all, learning is nothing but expanding knowledge based on "the ones you know and realize."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What you already know very well, in fact, when compared to functional programming, is this kind of thing, right?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;

&lt;p&gt;Unknown Knowns "the ones you don’t know you know"&lt;/p&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&gt;

&lt;p&gt;Known Knowns "the ones you know and realize"&lt;/p&gt;

&lt;p&gt;This is the process of "realization," and since the work of bringing in new Unknowns "Things you don't know" does not occur, it is very easy and smooth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In other words, "addition," "subtraction," "multiplication," and "division," which everyone who graduated from elementary school "knows very well," are solid knowledge for that person, and there is no need to redo the arithmetic drill again.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is the great intellectual asset that the person had to struggle to acquire during his or her elementary school days.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;However, how does this "arithmetic operation," called "algebraic structure," connect to the concept called functional programming and Monad (monad)? Most people don't know, they are not informed.&lt;/p&gt;

&lt;p&gt;And once you get the "realization," &lt;strong&gt;this "arithmetic operation," which you struggled to acquire, can be used as is, in its entirety, for the knowledge of functional programming.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Therefore, &lt;strong&gt;not making this "realization" realized, not informing, not teaching, not explaining, is outrageous, and it is either the laziness of the explainer or simply that the explainer himself does not understand well, but in fact, the latter case is very common.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this book, this work is consciously and thoroughly attempted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you "do not realize" this, it would be worth reading this book just for that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stepping into the area of Unknown Unknowns "the ones you don’t know you don’t know"
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c-XWJBHs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969264630.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c-XWJBHs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1702969264630.png" alt="image" width="582" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step is to step into the area of Unknown Unknowns "the ones you don’t know you don’t know" based on this Unknown Knowns "the ones you know but don't realize."&lt;/p&gt;

&lt;p&gt;This includes, for example, &lt;strong&gt;the theoretical physics perspective of "the flow of time."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A famous book that introduces the theoretical physics perspective of "handling time" in functional programming is "Structure and Interpretation of Computer Programs" (the original title abbreviation &lt;strong&gt;SICP&lt;/strong&gt; is often used).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mALDNhqW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700194248943.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mALDNhqW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/web-images3/main/img_1700194248943.png" alt="image" width="400" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://amzn.to/3QL29io"&gt;Structure and Interpretation of Computer Programs - 2000/2/1 Gerald Jay Sussman (Author), Julie Sussman (Author), Harold Abelson (Author), &amp;amp; 4 others&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The theoretical physics perspective of "handling time" in functional programming&lt;/strong&gt; is, at least as far as the author remembers, &lt;strong&gt;I have not seen a single explanation except for SICP&lt;/strong&gt;, so it is considered to be an important theme that is still neglected in the world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this book, this work is consciously and thoroughly attempted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you "do not realize" this, it would be worth reading this book just for that.&lt;/p&gt;




&lt;h1&gt;
  
  
  MarkdownNote (VSCode Extension)
&lt;/h1&gt;

&lt;p&gt;In writing this book, I developed and used my own WYSIWYG editor (VSCode extension) to efficiently paste a large number of images and write Markdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=KenOkabe.markdownnote"&gt;MarkdownNote&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9-FLAAKz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/vscode-markdown-note-images/main/showcase.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9-FLAAKz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://raw.githubusercontent.com/ken-okabe/vscode-markdown-note-images/main/showcase.png" alt="image" width="800" height="914"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m_Dwo014--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/ken-okabe/vscode-markdown-note-images/main/demo06.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m_Dwo014--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://raw.githubusercontent.com/ken-okabe/vscode-markdown-note-images/main/demo06.gif" alt="image" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>functional</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
