sergiors / prelude

Functional library for PHP
MIT License
48 stars 3 forks source link
functional-programming monad php

Prelude

Scrutinizer Code Quality Code Coverage Build Status

Install

composer require sergiors/prelude "dev-master"

How to use

use function Prelude\cond;
use function Prelude\equals;
use function Prelude\always;

$fn = cond([
    [equals(0), always('water freezes at 0°C')],
    [equals(100), always('water boils at 100°C')],
    [always(true), function ($temp) {
        return 'nothing special happens at '.$temp.'°C';
    }]
]);

echo $fn(0); // => water freezes at 0°C
echo $fn(50); // => nothing special happens at 50°C
echo $fn(100); // => water boils at 100°C
use function Prelude\has;

$hasName = has('name');
echo $hasName(['name' => 'Jimi']); // => true
echo $hasName([]); // => false
use const Prelude\id;
use const Prelude\isEmpty;
use function Prelude\ifElse;
use function Prelude\always;

$fn = ifElse(isEmpty)
    (always(true))
    (always(false));
echo $fn([]); // => true
echo $fn(null); // => true
echo $fn(false); // => true
echo $fn('James'); // => false
use function Prelude\head;

echo head([1, 2, 3]); // => 1
use function Prelude\tail;

echo tail([1, 2, 3]); // => [2, 3]

API

Full API Documentation

Thanks

Marcelo Camargo

License

MIT