{"id":4285,"date":"2020-11-17T09:21:35","date_gmt":"2020-11-17T08:21:35","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=4285"},"modified":"2023-05-12T10:11:48","modified_gmt":"2023-05-12T09:11:48","slug":"lua-map-filter-reduce","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/lua-map-filter-reduce\/","title":{"rendered":"Lua map\/filter\/reduce"},"content":{"rendered":"\n<p><a href=\"https:\/\/devforum.roblox.com\/t\/functional-shenanigans-map-filter-partition-reduce-two-ways\/199027\">https:\/\/devforum.roblox.com\/t\/functional-shenanigans-map-filter-partition-reduce-two-ways\/199027<\/a><\/p>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"lua\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">function map(sequence, transformation)\n    local newlist = {}\n    for i, v in pairs(sequence) do\n        newlist[i] = transformation(v)\n    end\n    return newlist\nend\n\nfunction filter(sequence, predicate)\n    local newlist = { }\n    for k, v in pairs(sequence) do\n        if predicate(v) then\n            table.insert(newlist, v)\n        end\n    end\nend\n\nfunction ifilter(sequence, predicate)\n    local newlist = { }\n    for i, v in ipairs(sequence) do\n        if predicate(v) then\n            table.insert(newlist, v)\n        end\n    end\nend\n\nfunction filter2(sequence, predicate)\n    local newlist = { }\n    for k, v in pairs(sequence) do\n        if predicate(v) then\n            newlist[k] = v\n        end\n    end\nend\n\nfunction reduce(sequence, operator)\n    if #sequence == 0 then\n        return nil\n    end\n    local out = nil\n    for i=1,#sequence do\n        out = operator(out, sequence[i])\n    end\n    return out\nend\n\nfunction partition(sequence, predicate)\n    local left = {}\n    local right = {}\n    for i, v in ipairs(sequence) do\n        if (predicate(v)) then\n            table.insert(left, v)\n        else\n            table.insert(right,v)\n        end\n    end\n    return left, right\nend<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/devforum.roblox.com\/t\/functional-shenanigans-map-filter-partition-reduce-two-ways\/199027<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4285","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/4285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=4285"}],"version-history":[{"count":5,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/4285\/revisions"}],"predecessor-version":[{"id":7759,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/4285\/revisions\/7759"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=4285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=4285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=4285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}