{"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":"funkcionala-programmesana-javascript-3-dala-functor-monad-varbut","status":"publish","type":"post","link":"https:\/\/thecodest.co\/lv\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/","title":{"rendered":"Funkcion\u0101l\u0101 programm\u0113\u0161ana JavaScript 3. da\u013c\u0101 - Funkcion\u0101lais funkcion\u0101lais programm\u0113\u0161ana un mon\u0101des varb\u016bt"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Ievads<\/h2>\n\n\n\n<p>Bie\u017ei vien ir gr\u016bti uztur\u0113t nemodific\u0113jamu. Iet\u012b\u0161anas modelis <a href=\"https:\/\/thecodest.co\/lv\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">dati<\/a> konteiner\u0101 n\u0101k pal\u012bg\u0101. Tas nodro\u0161ina v\u0113rt\u012bbas t\u0101, lai darbs ar t\u0101m b\u016btu dro\u0161s un nerastos blakuspar\u0101d\u012bbas.<\/p>\n\n\n\n<p>Ja esat \u0161eit jauns, p\u0101rliecinieties, ka p\u0101rbaud\u012bj\u0101t manas p\u0113d\u0113j\u0101s 2 da\u013cas par funkcion\u0101lo programm\u0113\u0161anu par <a href=\"https:\/\/thecodest.co\/lv\/blog\/vibrant-upturn-charting-the-resolute-rise-of-swedish-firms\/\">The Codest<\/a> blogs par:<\/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\">1. da\u013ca - Ievads<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/thecodest.co\/blog\/power-of-functional-programming-in-javascript-part-2-combinators\">2. da\u013ca - Kombinatori<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Funktors<\/h2>\n\n\n\n<p>Tam nav sare\u017e\u0123\u012btas lo\u0123ikas. T\u0101s galvenais uzdevums ir iet\u012bt kontekstu un veikt funkcijas, ko t\u0101 sa\u0146em no \u0101rpuses. Katru reizi, kad main\u0101s v\u0113rt\u012bba, tiek p\u0101rpakots un atdots jauns konteinera gad\u012bjums. Izsaucot <b>karte<\/b> metode, kas veic konkr\u0113tu darb\u012bbu, t\u0101 atgrie\u017e jaunu konteinera gad\u012bjumu ar v\u0113rt\u012bbu, ko atdod nodot\u0101 funkcija, vienlaikus saglab\u0101jot nemodific\u0113\u0161anas principu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deklar\u0101cija<\/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>karte<\/b> - noder\u0113s, ja v\u0113laties main\u012bt konteinera v\u0113rt\u012bbas st\u0101vokli, bet v\u0113l nev\u0113laties to atgriezt.<\/p>\n\n\n\n<p><b>\u0137\u0113de<\/b> - izmanto, ja v\u0113laties nodot v\u0113rt\u012bbu funkcijai, nemainot konteinera st\u0101vokli. Parasti beig\u0101s <b>karte<\/b> zvani.<\/p>\n\n\n\n<p><b>no<\/b> - atgriezt pa\u0161reiz\u0113jo v\u0113rt\u012bbu<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Imperat\u012bvais piem\u0113rs<\/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) \/\/ atgrie\u017e skaitli no 0 l\u012bdz 200\n\nreduce(randomNumber) \/\/ atgrie\u017e (skaitli no 0 l\u012bdz 200) - 1<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deklarat\u012bvs piem\u0113rs<\/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() \/\/ atgrie\u017e skaitli no 0 l\u012bdz 200\nrandomNumber.chain(reduce) \/\/ atgrie\u017e (skaitli no 0 l\u012bdz 200) - 1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Mon\u0101des<\/h2>\n\n\n\n<p>Da\u017ereiz papildus funkcij\u0101m, kas izraisa v\u0113rt\u012bbas jauno st\u0101vokli, ir nepiecie\u0161ama papildu lo\u0123ika, kas ir pasl\u0113pta konteiner\u0101. \u0160aj\u0101 gad\u012bjum\u0101 noder monada, jo t\u0101 ir papla\u0161in\u0101jums <b>funktors<\/b>. T\u0101 var, piem\u0113ram, izlemt, kas notiks, ja v\u0113rt\u012bbai b\u016bs noteikta v\u0113rt\u012bba, vai k\u0101ds ce\u013c\u0161 j\u0101izv\u0113las n\u0101kamaj\u0101m darb\u012bb\u0101m.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mon\u0101des varb\u016bt<\/h2>\n\n\n\n<p>Mon\u0101des varb\u016bt atrisina probl\u0113mu ar v\u0113rt\u012bb\u0101m, kas neatgrie\u017e true. Ja t\u0101 notiek, turpm\u0101kie <b>karte<\/b> izsaukumi tiek ignor\u0113ti, bet tas \u013cauj atgriezt alternat\u012bvu, izsaucot <b>getOr<\/b> metode. Tas \u013cauj izvair\u012bties no if \/ else operatoru izmanto\u0161anas, kas ir popul\u0101ri metod\u0113s. <b>imperat\u012bvs<\/b> programm\u0113\u0161ana. \u0160\u012b mon\u0101de sast\u0101v no trim konteineriem:<\/p>\n\n\n\n<p><b>Nekas<\/b> - darbojas, kad konteiner\u0101 iekr\u012bt v\u0113rt\u012bba, kas nav true, vai <strong>filtrs<\/strong> metode atgrie\u017e false. To izmanto, lai simul\u0113tu funkcijas izpildi. Tas noz\u012bm\u0113, ka \u0161is konteiners sa\u0146em funkciju, bet neizpilda to.<\/p>\n\n\n\n<p><b>Tikai<\/b> - tas ir galvenais konteiners, kas veic visas funkcijas, bet, ja v\u0113rt\u012bba main\u0101s uz nepatiesu v\u0113rt\u012bbu vai <b>filtrs<\/b> metode atgrie\u017e false, t\u0101 to nodos vienumam <b>Nekas<\/b> konteiners.<\/p>\n\n\n\n<p><b>Varb\u016bt<\/b> - Es \u0146emu s\u0101kotn\u0113jo v\u0113rt\u012bbu un izlemju, k\u0101du konteineru izsaukt s\u0101kum\u0101.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deklar\u0101cija<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">const Just = v\u0113rt\u012bba =&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) : Nekas(),\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? nekas()\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=\"tabulas metodes funktors \" title=\"tabulas funktors \"\/><\/figure>\n\n\n\n<p>Tagad izveidosim iepriek\u0161\u0113jo piem\u0113ru par nosac\u012bjumu. Ja max ir liel\u0101ks par nulli, funkcija tiks izpild\u012bta. Pret\u0113j\u0101 gad\u012bjum\u0101 t\u0101 atgriez\u012bs 0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Imperat\u012bvais piem\u0113rs<\/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} cit\u0101di {\nreturn 0\n}\n}\n\nconst bookMiddlePage = 200\n\nconst randomPage = randomInt(10) || bookMiddlePage \/\/ atgrie\u017e nejau\u0161\u012bbas principu\nconst randomPage = randomInt(-10) || bookMiddlePage \/\/ atgrie\u017e 200<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deklarat\u012bvs piem\u0113rs<\/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) \/\/ v\u0113rt\u012bba false ignor\u0113 turpm\u0101kos izsaukumus\n.map(palielin\u0101t)\n.map(multiplyBy(Math.random()))\n.map(Math.floor)\n\nconst bookMiddlePage = 200\n\n\/\/ Tikai konteiners\nconst randomPage = randomIntWrapper(10).getOr(bookMiddlePage) \/\/ atgrie\u017e nejau\u0161o lapu\n\/\/ Nekas konteiners\nconst randomPage = randomIntWrapper(-10).getOr(bookMiddlePage) \/\/ atgrie\u017e 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=\"sadarb\u012bbas baneris\"><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Iepaz\u012bstieties ar m\u016bsu rakstu s\u0113rijas Power of functional programming in JavaScript tre\u0161o da\u013cu. \u0160oreiz m\u016bsu JavaScript eksperts skaidro vair\u0101k par Functor un 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\/lv\/emuars\/funkcionala-programmesana-javascript-3-dala-functor-monad-varbut\/\" \/>\n<meta property=\"og:locale\" content=\"lv_LV\" \/>\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\/lv\/emuars\/funkcionala-programmesana-javascript-3-dala-functor-monad-varbut\/\" \/>\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\":\"lv\",\"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\":\"lv\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/functional-programming-in-javascript-part-3-functor-monad-maybe\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"lv\",\"@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\":\"lv\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"lv\",\"@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\":\"lv\",\"@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\\\/lv\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Funkcion\u0101l\u0101 programm\u0113\u0161ana JavaScript 3. da\u013ca - Funktori un mon\u0101des - The Codest","description":"Iepaz\u012bstieties ar m\u016bsu rakstu s\u0113rijas Power of functional programming in JavaScript tre\u0161o da\u013cu. \u0160oreiz m\u016bsu JavaScript eksperts skaidro vair\u0101k par Functor un 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\/lv\/emuars\/funkcionala-programmesana-javascript-3-dala-functor-monad-varbut\/","og_locale":"lv_LV","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\/lv\/emuars\/funkcionala-programmesana-javascript-3-dala-functor-monad-varbut\/","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":"lv","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":"Funkcion\u0101l\u0101 programm\u0113\u0161ana JavaScript 3. da\u013ca - Funktori un mon\u0101des - 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":"Iepaz\u012bstieties ar m\u016bsu rakstu s\u0113rijas Power of functional programming in JavaScript tre\u0161o da\u013cu. \u0160oreiz m\u016bsu JavaScript eksperts skaidro vair\u0101k par Functor un Monad Maybe.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/#breadcrumb"},"inLanguage":"lv","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/functional-programming-in-javascript-part-3-functor-monad-maybe\/"]}]},{"@type":"ImageObject","inLanguage":"lv","@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":"lv"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"lv","@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":"lv","@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\/lv\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts\/3502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/comments?post=3502"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts\/3502\/revisions"}],"predecessor-version":[{"id":8386,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/posts\/3502\/revisions\/8386"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/media\/3503"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/media?parent=3502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/categories?post=3502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/lv\/wp-json\/wp\/v2\/tags?post=3502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}