{"id":20413,"date":"2022-11-09T15:38:50","date_gmt":"2022-11-09T10:08:50","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/"},"modified":"2022-11-09T15:38:50","modified_gmt":"2022-11-09T10:08:50","slug":"solved-what-is-the-equivalence-in-scheme-for-if-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/","title":{"rendered":"[Solved] What is the equivalence in scheme for &#8216;if&#8217;? [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-20180918\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"20180918\" data-parentid=\"20179892\" data-score=\"3\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>It depends. You really should try to narrow you question further with an actual problem in scheme since the answer will depend on what you are trying to do.<\/p>\n<p>In idiomatic Scheme most should be done without side effects so you have<\/p>\n<pre><code>(if predicate-expression\n    consequent-expression\n    alternative-expression) ;; alternative is optional but should be used anyway.\n<\/code><\/pre>\n<p>But with your code you have more than one thing in the branches, something like:<\/p>\n<pre><code>int test (condition)\n{\n    if (condition)\n    {\n        function1();\n        return function2();\n    }\n    else\n    {\n        function3();\n        return function4();\n    }\n}\n<\/code><\/pre>\n<p>Here, in order for <code>function1<\/code> and <code>function3<\/code> to do anything useful it has to mutate, read or write something, also called a side effect. You should try to avoid that so in Scheme you either use a <code>let<\/code> to store a temporary variable, do the call so when it returns it is used like this:<\/p>\n<pre><code>(define (test condition)\n  (if condition\n      (let ((tmp (function3)))\n        (function4 tmp))\n      (function4 (function3))))\n<\/code><\/pre>\n<p>Now. You will eventually need side effects for a few procedures and then you need to use <code>begin<\/code> or use <code>cond<\/code> which has explicit begin.<\/p>\n<pre><code>(if predicate-expression\n    (begin \n       consequent-side-effect-expression\n       consequent-tail-expression)\n    (begin\n       alternative-side-effect-expression \n       alternative-tail-expression))\n<\/code><\/pre>\n<p>Now <code>begin<\/code> joins together several expressions into one and the result of a begin block is it&#8217;s last expression, thus you can even use it in the predicate. Cond has an explicit begin in every consequent so I often switch from <code>if<\/code> to <code>cond<\/code> when I either need more than one consequent or a begin:<\/p>\n<pre><code>(cond (predicate-expression  consequent-side-effect-expression \n                             consequent-tail-expression)\n\n      (predicate2-expression consequent2-tail-expression2)\n\n      (else alternative-side-effect-expression \n            alternative-tail-expression))\n<\/code><\/pre>\n<p>Often when there is side effects you not always need the alternative. Eg. you are actually not interested in what the <code>if<\/code> returns because it may not be in tail position either. In these cases you have in the <code>(rnrs control (6))<\/code> library <code>when<\/code> and <code>unless<\/code> with explicit begin:<\/p>\n<pre><code>(when expression\n      consequent-side-effect-expression\n      ...\n      consequent-tail-expression)\n\n(unless expression\n        consequent-side-effect-expression\n        ...\n        consequent-tail-expression)\n<\/code><\/pre>\n<p>A <code>let<\/code> or a <code>procedure<\/code> also has explicit begin:<\/p>\n<pre><code>(let ()\n  (display \"hello\") ; displays \"hello\"\n  5)                ; returns 5\n\n(define (test x)\n  (display x)       ; display x\n  (+ x 5))          ; return x+5\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved What is the equivalence in scheme for &#8216;if&#8217;? [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] It depends. You really should try to narrow you question further with an actual problem in scheme since the answer will depend on what you are trying to do. In idiomatic Scheme most should be done without side effects so you have (if predicate-expression consequent-expression alternative-expression) ;; alternative is optional but should be used &#8230; <a title=\"[Solved] What is the equivalence in scheme for &#8216;if&#8217;? [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\" aria-label=\"More on [Solved] What is the equivalence in scheme for &#8216;if&#8217;? [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[639,984],"class_list":["post-20413","post","type-post","status-publish","format-standard","hentry","category-solved","tag-if-statement","tag-scheme"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] What is the equivalence in scheme for &#039;if&#039;? [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] What is the equivalence in scheme for &#039;if&#039;? [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] It depends. You really should try to narrow you question further with an actual problem in scheme since the answer will depend on what you are trying to do. In idiomatic Scheme most should be done without side effects so you have (if predicate-expression consequent-expression alternative-expression) ;; alternative is optional but should be used ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-09T10:08:50+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] What is the equivalence in scheme for &#8216;if&#8217;? [closed]\",\"datePublished\":\"2022-11-09T10:08:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\"},\"wordCount\":257,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"if-statement\",\"scheme\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\",\"name\":\"[Solved] What is the equivalence in scheme for 'if'? [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-09T10:08:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] What is the equivalence in scheme for &#8216;if&#8217;? [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] What is the equivalence in scheme for 'if'? [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] What is the equivalence in scheme for 'if'? [closed] - JassWeb","og_description":"[ad_1] It depends. You really should try to narrow you question further with an actual problem in scheme since the answer will depend on what you are trying to do. In idiomatic Scheme most should be done without side effects so you have (if predicate-expression consequent-expression alternative-expression) ;; alternative is optional but should be used ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/","og_site_name":"JassWeb","article_published_time":"2022-11-09T10:08:50+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] What is the equivalence in scheme for &#8216;if&#8217;? [closed]","datePublished":"2022-11-09T10:08:50+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/"},"wordCount":257,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["if-statement","scheme"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/","name":"[Solved] What is the equivalence in scheme for 'if'? [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-09T10:08:50+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-the-equivalence-in-scheme-for-if-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] What is the equivalence in scheme for &#8216;if&#8217;? [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/20413","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=20413"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/20413\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=20413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=20413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=20413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}