<?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: Imran Shaikh</title>
    <description>The latest articles on DEV Community by Imran Shaikh (@devimran).</description>
    <link>https://dev.to/devimran</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%2F308353%2F72c254a8-2378-482d-b22b-0b10d7c369b7.jpg</url>
      <title>DEV Community: Imran Shaikh</title>
      <link>https://dev.to/devimran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devimran"/>
    <language>en</language>
    <item>
      <title>Evaluation in Racket</title>
      <dc:creator>Imran Shaikh</dc:creator>
      <pubDate>Mon, 01 Jan 2024 10:16:08 +0000</pubDate>
      <link>https://dev.to/devimran/evaluation-in-racket-4jpj</link>
      <guid>https://dev.to/devimran/evaluation-in-racket-4jpj</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight racket"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This expression is an primitive call or call to a primitive. Because expression starts with a primitive operator.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Operator&lt;/code&gt;: In this primitive call &lt;code&gt;+&lt;/code&gt; is the operator &lt;br&gt;&lt;br&gt;
&lt;code&gt;Operands&lt;/code&gt;: And all the expression followed by the operator are called operands&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules to Evaluate a Primitive Call
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;First reduce all the operands to values.&lt;/li&gt;
&lt;li&gt;Then apply primitive oparation to the values.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Order
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Evaulation happens from &lt;code&gt;left to right&lt;/code&gt; and &lt;code&gt;inside to outside&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step by step Evaluation Example:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight racket"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;; Step 1&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;; Step 2&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;; Step 3&lt;/span&gt;
&lt;span class="mi"&gt;14&lt;/span&gt; &lt;span class="c1"&gt;; Step 4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This example demonstrates the step-by-step evaluation of the expression according to the rules mentioned above. Understanding the order of evaluation is crucial for accurately assessing complex expressions in Racket.&lt;/p&gt;

</description>
      <category>ossu</category>
      <category>evaluation</category>
      <category>racket</category>
      <category>programming</category>
    </item>
    <item>
      <title>Understanding Expressions in Racket</title>
      <dc:creator>Imran Shaikh</dc:creator>
      <pubDate>Mon, 01 Jan 2024 08:39:46 +0000</pubDate>
      <link>https://dev.to/devimran/understanding-expressions-in-racket-o0m</link>
      <guid>https://dev.to/devimran/understanding-expressions-in-racket-o0m</guid>
      <description>&lt;p&gt;An expression in Racket is a combination of values, variables, operators, and function calls that can be evaluated to produce a result. It represents a computation or operation that yields a specific value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Expression
&lt;/h2&gt;

&lt;p&gt;Consider the expression:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight racket"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This expression evaluates to 7, and it is an example of a simple arithmetic operation (addition). The + is a primitive function, and 3 and 4 are the expressions being added.&lt;/p&gt;

&lt;h2&gt;
  
  
  General Structure of an Expression
&lt;/h2&gt;

&lt;p&gt;Expressions in Racket follow a general structure: &lt;br&gt;&lt;br&gt;
&lt;code&gt;(&amp;lt;primitive&amp;gt; &amp;lt;expression&amp;gt;...)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here, &lt;code&gt;&amp;lt;primitive&amp;gt;&lt;/code&gt; represents a primitive function or operator, and &lt;code&gt;&amp;lt;expression&amp;gt;&lt;/code&gt;... denotes one or more expressions that serve as its arguments.&lt;/p&gt;
&lt;h2&gt;
  
  
  Expressions and Values
&lt;/h2&gt;

&lt;p&gt;Expressions can represent various types of values. For instance, simple numeric values are expressions by themselves:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight racket"&gt;&lt;code&gt;&lt;span class="mi"&gt;42&lt;/span&gt; &lt;span class="c1"&gt;; This is an expression representing the number 42&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An expression is a combination of elements that, when evaluated, produces a value.&lt;/li&gt;
&lt;li&gt;Expressions can involve primitive functions, operators, and operands.&lt;/li&gt;
&lt;li&gt;The general structure of an expression is  &lt;code&gt;&amp;lt;expression&amp;gt;&lt;/code&gt;....&lt;/li&gt;
&lt;li&gt;Values, such as numbers, can also be considered expressions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding expressions is fundamental in Racket programming, as they are the building blocks for creating computations and algorithms.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This blog post is a part of my &lt;a href="https://github.com/ossu/computer-science"&gt;OSSU&lt;/a&gt; journey. ossu-post#1 core-cs/systematic-program-design/expressions.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ossu</category>
      <category>racket</category>
      <category>expression</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
