{"id":3502,"date":"2022-06-21T14:00:00","date_gmt":"2022-06-21T14:00:00","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/"},"modified":"2026-03-11T05:59:01","modified_gmt":"2026-03-11T05:59:01","slug":"funktionel-programmering-i-javascript-del-3-functor-monad-maybe","status":"publish","type":"post","link":"https:\/\/thecodest.co\/da\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/","title":{"rendered":"Funktionel programmering i JavaScript Del 3 - Functor &amp; Monad Maybe"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Introduktion<\/h2>\n\n\n\n<p>Ofte er det sv\u00e6rt at bevare det uforanderlige. M\u00f8nsteret med indpakning <a href=\"https:\/\/thecodest.co\/da\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> i en container kommer til unds\u00e6tning. Den sikrer v\u00e6rdierne, s\u00e5 det er sikkert at h\u00e5ndtere dem uden at f\u00e5 bivirkninger.<\/p>\n\n\n\n<p>Hvis du er ny her, skal du s\u00f8rge for at tjekke mine sidste to dele om funktionel programmering p\u00e5 <a href=\"https:\/\/thecodest.co\/da\/blog\/vibrant-upturn-charting-the-resolute-rise-of-swedish-firms\/\">Codest<\/a> blogge om:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/thecodest.co\/blog\/power-of-functional-programming-in-javascript-part-1-introduction\">Del 1 - Introduktion<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/thecodest.co\/blog\/power-of-functional-programming-in-javascript-part-2-combinators\">Del 2 - Kombinatorer<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Funktor<\/h2>\n\n\n\n<p>Den har ingen kompleks logik. Dens hovedopgave er at pakke konteksten ind og udf\u00f8re de funktioner, den modtager udefra, p\u00e5 dem. Hver gang v\u00e6rdien \u00e6ndres, pakkes en ny containerinstans ind igen og returneres. N\u00e5r man kalder <b>kort<\/b> metode, som kr\u00e6ver en bestemt handling, returnerer den en ny containerinstans med den v\u00e6rdi, der returneres af den afleverede funktion, samtidig med at princippet om, at den ikke kan \u00e6ndres, opretholdes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Erkl\u00e6ring<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\"><code> const Functor = value =&gt; ({\n     map: fn =&gt; Functor(fn(value)),\n     chain: fn =&gt; fn(value),\n     of: () =&gt; value\n });<\/code><\/code>.<\/pre>\n\n\n\n<p><b>kort<\/b> - nyttig, n\u00e5r du vil \u00e6ndre tilstanden for en v\u00e6rdi i en container, men ikke vil returnere den endnu.<\/p>\n\n\n\n<p><b>k\u00e6de<\/b> - bruges, hvis man vil sende en v\u00e6rdi til en funktion uden at \u00e6ndre containerens tilstand. Normalt i slutningen af <b>kort<\/b> opkald.<\/p>\n\n\n\n<p><b>af<\/b> - Returner den aktuelle v\u00e6rdi<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Imperativt eksempel<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const randomInt = (max) =&gt; Math.floor(Math.random() * (max + 1))\n\nconst randomNumber = randomInt(200) \/\/ returnerer tal mellem 0 og 200\n\ndecrease(randomNumber) \/\/ returnerer (tal mellem 0 og 200) - 1<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deklarativt eksempel<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const tilf\u00e6ldigIntWrapper = (max) =&gt; (max)\nFunctor(max)\n.map(increase) \/\/ max + 1\n.map(multiplyBy(Math.random())) \/\/ Math.random() * (max + 1)\n.map(Math.floor) \/\/ Math.floor(Math.random() * (max + 1))\n\nconst randomNumber = randomIntWrapper(200)\n\nrandomNumber.of() \/\/ returnerer tal mellem 0 og 200\nrandomNumber.chain(decrease) \/\/ returnerer (tal mellem 0 og 200) - 1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Monade<\/h2>\n\n\n\n<p>Ud over de funktioner, der udl\u00f8ser den nye tilstand af v\u00e6rdien, har du nogle gange brug for yderligere logik skjult i containeren. Det er her, monad er praktisk, da det er en udvidelse af <b>Funktor<\/b>. Den kan f.eks. beslutte, hvad der skal ske, n\u00e5r v\u00e6rdien har en bestemt v\u00e6rdi, eller hvilken vej de n\u00e6ste handlinger skal g\u00e5.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monade M\u00e5ske<\/h2>\n\n\n\n<p>Monad maybe l\u00f8ser problemet med v\u00e6rdier, der ikke returnerer true. N\u00e5r dette sker, vil efterf\u00f8lgende <b>kort<\/b> ignoreres, men det giver dig mulighed for at returnere et alternativ ved at kalde <b>getOr<\/b> metode. Det giver dig mulighed for at undg\u00e5 brugen af if\/ else-operatorer, som er popul\u00e6re i <b>tvingende n\u00f8dvendigt<\/b> programmering. Denne monade best\u00e5r af tre containere:<\/p>\n\n\n\n<p><b>Ingenting<\/b> - k\u00f8rer, n\u00e5r en v\u00e6rdi, der ikke er sand, falder ind i beholderen eller <strong>filter<\/strong> metoden returnerer falsk. Den bruges til at simulere udf\u00f8relsen af en funktion. Det betyder, at denne container modtager funktionen, men ikke udf\u00f8rer den.<\/p>\n\n\n\n<p><b>Bare<\/b> - dette er hovedbeholderen, der udf\u00f8rer alle funktionerne, men hvis v\u00e6rdien \u00e6ndres til en falsk v\u00e6rdi eller <b>filter<\/b> metoden returnerer false, vil den sende den videre til <b>Ingenting<\/b> container.<\/p>\n\n\n\n<p><b>M\u00e5ske<\/b> - Jeg tager startv\u00e6rdien og beslutter, hvilken container der skal kaldes i starten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Erkl\u00e6ring<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const Just = v\u00e6rdi =&gt; ({\nmap: fn =&gt; Maybe(fn(value)),\nchain: fn =&gt; fn(value),\nof: () =&gt; value,\ngetOr: () =&gt; value,\nfilter: fn =&gt; fn(v\u00e6rdi) ? Just(v\u00e6rdi) : Intet(),\ntype: 'bare'\n});\n\nconst Nothing = () =&gt; ({\nmap: fn =&gt; Nothing(),\nchain: fn =&gt; fn(),\nof: () =&gt; Nothing(),\ngetOr: substitute =&gt; substitute,\nfilter: () =&gt; Nothing(),\ntype: 'intet'\n});\n\nconst Maybe = v\u00e6rdi =&gt;\nvalue === null || value === undefined || value.type === 'nothing'\n? Intet()\n: Just(v\u00e6rdi)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/table.png\" alt=\"tabel metoder functor \" title=\"tabel-funktor \"\/><\/figure>\n\n\n\n<p>Lad os nu bygge det tidligere eksempel om betingelsen. Hvis max er st\u00f8rre end nul, vil funktionen blive udf\u00f8rt. Ellers vil den returnere 0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Imperativt eksempel<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const randomInt = (max) =&gt; {\nif(max &gt; 0) {\nreturn Math.floor(Math.random() * (max + 1))\n} ellers {\nreturnerer 0\n}\n}\n\nconst bookMiddlePage = 200\n\nconst randomPage = randomInt(10) || bookMiddlePage \/\/ returnerer tilf\u00e6ldigt\nconst randomPage = randomInt(-10) || bookMiddlePage \/\/ returnerer 200<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deklarativt eksempel<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const randomIntWrapper = (max) =&gt; (max)\nM\u00e5ske(max)\n.filter(max =&gt; max &gt; 0) \/\/ v\u00e6rdien false ignorerer yderligere kald\n.map(for\u00f8gelse)\n.map(multiplyBy(Math.random()))\n.map(Math.floor)\n\nconst bookMiddlePage = 200\n\n\/\/ Bare container\nconst randomPage = randomIntWrapper(10).getOr(bookMiddlePage) \/\/ returnerer tilf\u00e6ldigt\n\/\/ Intet beholder\nconst randomPage = randomIntWrapper(-10).getOr(bookMiddlePage) \/\/ returnerer 200<\/code><\/pre>\n\n\n\n<p><br><a href=\"https:\/\/thecodest.co\/contact\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/interested_in_cooperation_.png\" alt=\"Samarbejdsbanner\"><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Se tredje del af vores artikelserie Power of functional programming in JavaScript. Denne gang forklarer vores JavaScript-ekspert mere om Functor og Monad Maybe.<\/p>","protected":false},"author":2,"featured_media":3503,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3502","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Functional programming in JavaScript Part 3 - Functor &amp; Monad Maybe - The Codest<\/title>\n<meta name=\"description\" content=\"Check the third part of our Power of functional programming in JavaScript article series. This time our JavaScript expert explains more about Functor and Monad Maybe.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/da\/blog\/funktionel-programmering-i-javascript-del-3-functor-monad-maybe\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Functional programming in JavaScript Part 3 - Functor &amp; Monad Maybe\" \/>\n<meta property=\"og:description\" content=\"Check the third part of our Power of functional programming in JavaScript article series. This time our JavaScript expert explains more about Functor and Monad Maybe.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/da\/blog\/funktionel-programmering-i-javascript-del-3-functor-monad-maybe\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-21T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-11T05:59:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Functional programming in JavaScript Part 3 &#8211; Functor &#038; Monad Maybe\",\"datePublished\":\"2022-06-21T14:00:00+00:00\",\"dateModified\":\"2026-03-11T05:59:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/\"},\"wordCount\":437,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/\",\"name\":\"Functional programming in JavaScript Part 3 - Functor & Monad Maybe - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png\",\"datePublished\":\"2022-06-21T14:00:00+00:00\",\"dateModified\":\"2026-03-11T05:59:01+00:00\",\"description\":\"Check the third part of our Power of functional programming in JavaScript article series. This time our JavaScript expert explains more about Functor and Monad Maybe.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Functional programming in JavaScript Part 3 &#8211; Functor &#038; Monad Maybe\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/da\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Funktionel programmering i JavaScript Del 3 - Functor &amp; Monad Maybe - The Codest","description":"Se tredje del af vores artikelserie Power of functional programming in JavaScript. Denne gang forklarer vores JavaScript-ekspert mere om Functor og Monad Maybe.","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:\/\/thecodest.co\/da\/blog\/funktionel-programmering-i-javascript-del-3-functor-monad-maybe\/","og_locale":"da_DK","og_type":"article","og_title":"Functional programming in JavaScript Part 3 - Functor & Monad Maybe","og_description":"Check the third part of our Power of functional programming in JavaScript article series. This time our JavaScript expert explains more about Functor and Monad Maybe.","og_url":"https:\/\/thecodest.co\/da\/blog\/funktionel-programmering-i-javascript-del-3-functor-monad-maybe\/","og_site_name":"The Codest","article_published_time":"2022-06-21T14:00:00+00:00","article_modified_time":"2026-03-11T05:59:01+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Functional programming in JavaScript Part 3 &#8211; Functor &#038; Monad Maybe","datePublished":"2022-06-21T14:00:00+00:00","dateModified":"2026-03-11T05:59:01+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/"},"wordCount":437,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png","articleSection":["Software Development"],"inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/","url":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/","name":"Funktionel programmering i JavaScript Del 3 - Functor &amp; Monad Maybe - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png","datePublished":"2022-06-21T14:00:00+00:00","dateModified":"2026-03-11T05:59:01+00:00","description":"Se tredje del af vores artikelserie Power of functional programming in JavaScript. Denne gang forklarer vores JavaScript-ekspert mere om Functor og Monad Maybe.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/power_of_functional_programming_in_javascript_part_3_-_functor_-_monad_maybe.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Functional programming in JavaScript Part 3 &#8211; Functor &#038; Monad Maybe"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/da\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/comments?post=3502"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3502\/revisions"}],"predecessor-version":[{"id":8386,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3502\/revisions\/8386"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media\/3503"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media?parent=3502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/categories?post=3502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/tags?post=3502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}