Skip to content
Utility library for functional programming in Lua
Branch: master
Clone or download
Latest commit 7b23a5f Apr 1, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Added mapi (Fixes #68) Apr 1, 2019
rockspec Added 2.1.0 rockspec Sep 12, 2018
spec Added mapi (Fixes #68) Apr 1, 2019
.gitignore Removed Telescope, added Busted, cleanup Aug 23, 2018
.luacov Updates and fixes Aug 23, 2018
.travis.yml Changed Telescope to busted Aug 22, 2018
CHANGELOG.md Added mapi (Fixes #68) Apr 1, 2019
LICENSE Updated LICENSE Aug 22, 2018
README.md Fixed README Sep 12, 2018
moses.lua Added mapi (Fixes #68) Apr 1, 2019
moses_min.lua Added mapi (Fixes #68) Apr 1, 2019

README.md

Build Status Latest Stable License Lua

A Lua utility-belt library for functional programming.

Examples

How can I get the sum of all integers between 1 and 100 ?

local sum = M.sum(M.range(100))
print(sum) -- 5050

Say I am looking for the length of the longest word in some array ?

local words = {'some','words','of','different','lengths'}
print(M.max(words, M.op.length)) -- 9 letters

What is the sum of all fibonacci numbers for n below or equal 25 ?

local function fib(n) return n < 2 and n or fib(n - 1) + fib(n - 2) end
local fibsum = M.sum(M.map(M.range(25), fib))
print(fibsum) -- 196417

Or let us do the same, opbject-oriented style with chaining :

local function fib(n) return n < 2 and n or fib(n - 1) + fib(n - 2) end
local fibsum = M.chain(M.range(25)):map(fib):sum():value()
print(fibsum) -- 196417

Or even shorter :

local fibsum = M(M.range(25)):map(fib):sum():value()
print(fibsum) -- 196417

Feel free to download and try it on your own!

Download

Archive

Bash

git clone git://github.com/Yonaba/Moses.git

LuaRocks

luarocks install moses

MoonRocks

moonrocks install moses

Usage

local M = require "moses"

Note: the full source moses.lua is quite heavy (~92 kiB, 3115 LOC). You can alternatively use the minified version (~35 kiB, 561 LOC).

Tutorial

Find a complete set of code examples in tutorial.md.

Documentation

Credits and Acknowledgement

Specification

Run spec tests from Lua using busted with the following command from the root folder:

busted

License

This work is under MIT-LICENSE
Copyright (c) 2012-2018 Roland Yonaba.
See LICENSE.

You can’t perform that action at this time.