{"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":"functional-forritun-i-javascript-hluti-3-functor-monad-maybe","status":"publish","type":"post","link":"https:\/\/thecodest.co\/is\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/","title":{"rendered":"Functional forritun \u00ed JavaScript, hluti 3 \u2013 Functor og Monad Maybe"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Inngangur<\/h2>\n\n\n\n<p>Oft er erfitt a\u00f0 vi\u00f0halda \u00f3breytanlegu \u00e1standi. Mynstur umb\u00fa\u00f0arinnar <a href=\"https:\/\/thecodest.co\/is\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">g\u00f6gn<\/a> \u00cdl\u00e1ti\u00f0 kemur til bjargar. \u00dea\u00f0 tryggir gildin svo me\u00f0h\u00f6ndlun \u00feeirra s\u00e9 \u00f6rugg og aukaverkanir \u00fatiloka\u00f0ar.<\/p>\n\n\n\n<p>Ef \u00fe\u00fa ert n\u00fdr h\u00e9r skaltu ganga \u00far skugga um a\u00f0 sko\u00f0a s\u00ed\u00f0ustu tvo hluta m\u00edna um virkniforritun \u00e1 <a href=\"https:\/\/thecodest.co\/is\/blog\/vibrant-upturn-charting-the-resolute-rise-of-swedish-firms\/\">The Codest<\/a> Blogg um:<\/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\">Kafli 1 \u2013 Inngangur<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/thecodest.co\/blog\/power-of-functional-programming-in-javascript-part-2-combinators\">2. hluti \u2013 Samsetjendur<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Funktor<\/h2>\n\n\n\n<p>\u00dea\u00f0 hefur enga fl\u00f3kna r\u00f6kfr\u00e6\u00f0i. A\u00f0alverkefni \u00feess er a\u00f0 umlykja samhengi og framkv\u00e6ma \u00fe\u00e6r a\u00f0ger\u00f0ir sem \u00fea\u00f0 f\u00e6r fr\u00e1 utana\u00f0komandi \u00e1 \u00fev\u00ed. \u00cd hvert sinn sem gildi\u00f0 breytist er n\u00fd eining af \u00edl\u00e1ti endurpakku\u00f0 og skilu\u00f0. \u00deegar kalla\u00f0 er \u00e1 <b>kort<\/b> a\u00f0fer\u00f0 sem framkv\u00e6mir tiltekna a\u00f0ger\u00f0 skilar n\u00fdrri \u00edl\u00e1tseiningu me\u00f0 gildinu sem skila\u00f0 var af f\u00e6r\u00f0u falli, \u00e1 sama t\u00edma og \u00f3breytanleikareglunni er haldi\u00f0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Yfirl\u00fdsing<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const Functor = value =&gt; ({\n map: fn =&gt; Functor(fn(value)),\n chain: fn =&gt; fn(value),\n of: () =&gt; value\n });<\/code>Hlj\u00f3\u00f0skrift<\/pre>\n\n\n\n<p><b>kort<\/b> \u2013 gagnlegt \u00feegar \u00fe\u00fa vilt breyta \u00e1standi gildis \u00ed \u00edl\u00e1ti en vilt ekki skila \u00fev\u00ed enn\u00fe\u00e1.<\/p>\n\n\n\n<p><b>ke\u00f0ja<\/b> \u2013 nota\u00f0 \u00feegar \u00fe\u00fa vilt senda gildi \u00ed fall \u00e1n \u00feess a\u00f0 breyta \u00e1standi \u00edl\u00e1tsins. Venjulega \u00ed lokin af <b>kort<\/b> s\u00edmt\u00f6l.<\/p>\n\n\n\n<p><b>af<\/b> \u2013 skila n\u00faverandi gildi<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hvortv\u00edsunard\u00e6mi<\/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) \/\/ skilar t\u00f6lunni \u00e1 bilinu 0 til 200\n\ndecrease(randomNumber) \/\/ skilar (t\u00f6lu \u00e1 bilinu 0 til 200) - 1<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Yfirl\u00fdsingard\u00e6mi<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const randomIntWrapper = (max) =&gt;\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() \/\/ skilar t\u00f6lunni \u00e1 milli 0 og 200\nrandomNumber.chain(decrease) \/\/ skilar (t\u00f6lu \u00e1 milli 0 og 200) - 1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Monad\u00ed<\/h2>\n\n\n\n<p>Stundum, auk \u00feeirra a\u00f0ger\u00f0a sem kveikja \u00e1 n\u00fdju \u00e1standi gildisins, \u00fearftu vi\u00f0b\u00f3tar r\u00f6khugsun falna \u00ed \u00edl\u00e1tinu. H\u00e9r kemur monad s\u00e9r vel, \u00fear sem \u00fea\u00f0 er vi\u00f0b\u00f3t vi\u00f0 <b>fall<\/b>. \u00dea\u00f0 getur til d\u00e6mis \u00e1kve\u00f0i\u00f0 hva\u00f0 eigi a\u00f0 gerast \u00feegar gildi\u00f0 er \u00e1kve\u00f0i\u00f0 e\u00f0a hva\u00f0a lei\u00f0 n\u00e6stu a\u00f0ger\u00f0ir skuli fara.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Monad Kannski<\/h2>\n\n\n\n<p>Monad leysir kannski vandam\u00e1li\u00f0 me\u00f0 gildi sem skila ekki s\u00f6nnu. \u00deegar \u00feetta gerist, n\u00e6stu <b>kort<\/b> \u00c1k\u00f6ll eru hunsu\u00f0, en \u00fea\u00f0 gerir \u00fe\u00e9r kleift a\u00f0 skila vali me\u00f0 \u00fev\u00ed a\u00f0 hringja \u00ed <b>f\u00e1 e\u00f0a<\/b> a\u00f0fer\u00f0. H\u00fan gerir \u00fe\u00e9r kleift a\u00f0 for\u00f0ast notkun if\/else-skilyr\u00f0a, sem eru vins\u00e6l \u00ed <b>bo\u00f0h\u00e1ttur<\/b> forritun. \u00deessi monad samanstendur af \u00feremur \u00edl\u00e1tum:<\/p>\n\n\n\n<p><b>Ekkert<\/b> \u2013 keyrir \u00feegar gildi sem er ekki satt lendir \u00ed \u00edl\u00e1tinu e\u00f0a <strong>s\u00edu<\/strong> A\u00f0fer\u00f0in skilar false. H\u00fan er notu\u00f0 til a\u00f0 herma eftir keyrslu falls. \u00deetta \u00fe\u00fd\u00f0ir a\u00f0 \u00feessi \u00edhlutur f\u00e6r falli\u00f0 en keyrir \u00fea\u00f0 ekki.<\/p>\n\n\n\n<p><b>Bara<\/b> \u2013 \u00feetta er a\u00f0al\u00edl\u00e1ti\u00f0 sem sinnir \u00f6llum a\u00f0ger\u00f0um, en ef gildi\u00f0 breytist \u00ed falskt gildi e\u00f0a <b>s\u00edu<\/b> a\u00f0fer\u00f0in skilar false, h\u00fan mun senda \u00fea\u00f0 til <b>Ekkert<\/b> \u00edl\u00e1t.<\/p>\n\n\n\n<p><b>Kannski<\/b> \u2013 \u00c9g tek upphafsgildi\u00f0 og \u00e1kve\u00f0 hva\u00f0a \u00edl\u00e1t \u00e9g kalla \u00e1 \u00ed upphafi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Yfirl\u00fdsing<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const Just = value =&gt; ({\nmap: fn =&gt; Maybe(fn(value)),\nchain: fn =&gt; fn(value),\nof: () =&gt; value,\ngetOr: () =&gt; value,\nfilter: fn =&gt; fn(value) ? Just(value) : Nothing(),\ntype: 'just'\n});\n\nconst Nothing = () =&gt; ({\nmap: fn =&gt; Nothing(),\nchain: fn =&gt; fn(),\nof: () =&gt; Nothing(),\ngetOr: substitute =&gt; substitute,\nfilter: () =&gt; Nothing(),\ntype: 'nothing'\n});\n\nconst Maybe = value =&gt;\nvalue === null || value === undefined || value.type === 'nothing'?\n Nothing()\n: Just(value)<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/table.png\" alt=\"fallbili\u00f0fer\u00f0ir bor\u00f0s \" title=\"bor\u00f0virkni \"\/><\/figure>\n\n\n\n<p>N\u00fa skulum vi\u00f0 byggja \u00e1 fyrri d\u00e6minu um skilyr\u00f0i\u00f0. Ef max er st\u00e6rra en n\u00fall, ver\u00f0ur falli\u00f0 keyrt. Annars skilar \u00fea\u00f0 0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hvortv\u00edsunard\u00e6mi<\/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} else {\nreturn 0\n}\n}\n\nconst bookMiddlePage = 200\n\nconst randomPage = randomInt(10) || bookMiddlePage \/\/ skilar handah\u00f3fskenndu\nconst randomPage = randomInt(-10) || bookMiddlePage \/\/ skilar 200<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Yfirl\u00fdsingard\u00e6mi<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const randomIntWrapper = (max) =&gt;\nMaybe(max)\n.filter(max =&gt; max &gt; 0) \/\/ false-gildi hunsar frekari k\u00f6ll\n.map(increase)\n.map(multiplyBy(Math.random()))\n.map(Math.floor)\n\nconst bookMiddlePage = 200\n\n\/\/ Einungis \u00edl\u00e1ti\nconst randomPage = randomIntWrapper(10).getOr(bookMiddlePage) \/\/ skilar handah\u00f3fskennt\n\/\/ T\u00f3mt \u00edl\u00e1ti\nconst randomPage = randomIntWrapper(-10).getOr(bookMiddlePage) \/\/ skilar 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=\"samstarfsf\u00e1ninn\"><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Sko\u00f0a\u00f0u \u00feri\u00f0ja hluta greinaser\u00edunnar okkar \"Power of functional programming in JavaScript\". A\u00f0 \u00feessu sinni \u00fatsk\u00fdrir s\u00e9rfr\u00e6\u00f0ingur okkar \u00ed JavaScript n\u00e1nar um 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\/is\/blogg\/functional-forritun-i-javascript-hluti-3-functor-monad-maybe\/\" \/>\n<meta property=\"og:locale\" content=\"is_IS\" \/>\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\/is\/blogg\/functional-forritun-i-javascript-hluti-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\":\"is\",\"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\":\"is\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"is\",\"@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\":\"is\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"is\",\"@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\":\"is\",\"@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\\\/is\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Functional forritun \u00ed JavaScript, hluti 3 \u2013 Functor og Monad Maybe \u2013 The Codest","description":"Sko\u00f0a\u00f0u \u00feri\u00f0ja hluta greinaser\u00edunnar okkar \"Power of functional programming in JavaScript\". A\u00f0 \u00feessu sinni \u00fatsk\u00fdrir s\u00e9rfr\u00e6\u00f0ingur okkar \u00ed JavaScript n\u00e1nar um 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\/is\/blogg\/functional-forritun-i-javascript-hluti-3-functor-monad-maybe\/","og_locale":"is_IS","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\/is\/blogg\/functional-forritun-i-javascript-hluti-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":"is","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 forritun \u00ed JavaScript, hluti 3 \u2013 Functor og Monad Maybe \u2013 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":"Sko\u00f0a\u00f0u \u00feri\u00f0ja hluta greinaser\u00edunnar okkar \"Power of functional programming in JavaScript\". A\u00f0 \u00feessu sinni \u00fatsk\u00fdrir s\u00e9rfr\u00e6\u00f0ingur okkar \u00ed JavaScript n\u00e1nar um Functor og Monad Maybe.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#breadcrumb"},"inLanguage":"is","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/"]}]},{"@type":"ImageObject","inLanguage":"is","@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":"is"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"is","@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":"is","@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\/is\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts\/3502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/comments?post=3502"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts\/3502\/revisions"}],"predecessor-version":[{"id":8386,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/posts\/3502\/revisions\/8386"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/media\/3503"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/media?parent=3502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/categories?post=3502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/is\/wp-json\/wp\/v2\/tags?post=3502"}],"curies":[{"name":"vp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}