"name": "widmogrod/php-functional",
"description": "Functors, Applicative and Monads are fascinating concept. Purpose of this library is to explore them in OOP PHP world.",
"require": {
- "php": ">=7.1"
+ "php": ">=7.1",
+ "functional-php/fantasy-land": "^1"
},
"require-dev": {
"phpunit/phpunit": "^6",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "content-hash": "d3bba8e335a995bd53543036052e37ba",
- "packages": [],
+ "content-hash": "722371fce21dbeed7ea53b65ff26950a",
+ "packages": [
+ {
+ "name": "functional-php/fantasy-land",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/functional-php/fantasy-land.git",
+ "reference": "c855c856e70db81032a8a4fd17bd74a58d26a279"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/functional-php/fantasy-land/zipball/c855c856e70db81032a8a4fd17bd74a58d26a279",
+ "reference": "c855c856e70db81032a8a4fd17bd74a58d26a279",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2",
+ "giorgiosironi/eris": "^0.9",
+ "phpunit/phpunit": "^5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "FunctionalPHP\\": "./src"
+ },
+ "files": [
+ "src/FantasyLand/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Gabriel Habryn",
+ "email": "widmogrod+github@gmail.com"
+ }
+ ],
+ "description": "Specification for interoperability of common algebraic structures in PHP",
+ "time": "2018-02-18T14:54:04+00:00"
+ }
+ ],
"packages-dev": [
{
"name": "composer/semver",
namespace example;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Monad\Free\MonadFree;
use Widmogrod\Monad\Free\Pure;
use Widmogrod\Monad\State;
namespace example;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Monad\Free\MonadFree;
use Widmogrod\Monad\Free\Pure;
use Widmogrod\Monad\Identity;
namespace example2;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Functional as f;
use Widmogrod\Monad\Free as ff;
use Widmogrod\Monad\Free\MonadFree;
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Applicative extends
- Apply,
- Pointed
-{
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Apply extends Functor
-{
- /**
- * @param Apply $b
- *
- * @return self
- */
- public function ap(self $b): self;
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Chain extends Apply
-{
- /**
- * bind :: Monad m => (a -> m b) -> m b
- *
- * @return mixed|\Closure
- *
- * @param callable $function
- *
- * @return self
- */
- public function bind(callable $function);
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Comonad extends
- Functor,
- Extend
-{
- public function extract();
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Extend
-{
- /**
- * @param callable $function
- *
- * @return self
- */
- public function extend(callable $function);
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Foldable
-{
- /**
- * reduce :: (b -> a -> b) -> b -> b
- *
- * @param callable $function Binary function ($accumulator, $value)
- * @param mixed $accumulator Value to witch reduce
- *
- * @return mixed Same type as $accumulator
- */
- public function reduce(callable $function, $accumulator);
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Functor
-{
- /**
- * map :: Functor f => (a -> b) -> f b
- *
- * @param callable $function
- *
- * @return self
- */
- public function map(callable $function): self;
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Monad extends
- Applicative,
- Chain
-{
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Monoid extends Semigroup
-{
- /**
- * @return Monoid
- */
- public static function mempty();
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Pointed
-{
- /**
- * Put $value in default minimal context.
- *
- * @param mixed $value
- *
- * @return mixed
- */
- public static function of($value);
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Semigroup
-{
- /**
- * Return result of applying one semigroup with another.
- *
- * @param Semigroup $value
- *
- * @return self
- */
- public function concat(self $value): self;
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Setoid
-{
- /**
- * @param Setoid|mixed $other
- *
- * @return bool
- */
- public function equals($other): bool;
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\FantasyLand;
-
-interface Traversable extends Functor
-{
- /**
- * traverse :: Applicative f => (a -> f b) -> f (t b)
- *
- * Where the `a` is value inside of container.
- *
- * @param callable $fn (a -> f b)
- *
- * @return Applicative f (t b)
- */
- public function traverse(callable $fn);
-}
namespace Widmogrod\Functional;
use Widmogrod\Common\ValueOfInterface;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Foldable;
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\FantasyLand\Monad;
-use Widmogrod\FantasyLand\Traversable;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Foldable;
+use FunctionalPHP\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Monad;
+use FunctionalPHP\FantasyLand\Traversable;
use Widmogrod\Primitive\Listt;
use Widmogrod\Primitive\ListtCons;
namespace Widmogrod\Functional;
-use Widmogrod\FantasyLand\Foldable;
+use FunctionalPHP\FantasyLand\Foldable;
use Widmogrod\Primitive\Listt;
use Widmogrod\Primitive\ListtCons;
use Widmogrod\Useful\SnapshotIterator;
namespace Widmogrod\Functional;
-use Widmogrod\FantasyLand\Monoid;
-use Widmogrod\FantasyLand\Semigroup;
+use FunctionalPHP\FantasyLand\Monoid;
+use FunctionalPHP\FantasyLand\Semigroup;
const emptyM = 'Widmogrod\Functional\emptyM';
namespace Widmogrod\Functional;
-use Widmogrod\FantasyLand\Setoid;
+use FunctionalPHP\FantasyLand\Setoid;
const equal = 'Widmogrod\Functional\equal';
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\Helpful;
-
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\Functional as f;
-
-class ApplicativeLaws
-{
- /**
- * Generic test to verify if a type obey the applicative laws.
- *
- * @param callable $assertEqual Asserting function (Applicative $a1, Applicative $a2, $message)
- * @param callable $pure Applicative "constructor"
- * @param Applicative $u Applicative f => f (a -> b)
- * @param Applicative $v Applicative f => f (a -> b)
- * @param Applicative $w Applicative f => f (a -> b)
- * @param callable $f (a -> b)
- * @param mixed $x Value to put into a applicative
- */
- public static function test(
- callable $assertEqual,
- callable $pure,
- Applicative $u,
- Applicative $v,
- Applicative $w,
- callable $f,
- $x
- ) {
- // identity: pure id <*> v = v
- $assertEqual(
- $pure(f\identity)->ap($v),
- $v,
- 'identity'
- );
-
- // homomorphism: pure f <*> pure x = pure (f x)
- $assertEqual(
- $pure($f)->ap($pure($x)),
- $pure($f($x)),
- 'homomorphism'
- );
-
- // interchange: u <*> pure x = pure ($ x) <*> u
- $assertEqual(
- $u->ap($pure($x)),
- $pure(f\applicator($x))->ap($u),
- 'interchange'
- );
-
- // composition: pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
- $compose = f\curryN(2, f\compose);
- $assertEqual(
- $pure($compose)->ap($u)->ap($v)->ap($w),
- $u->ap($v->ap($w)),
- 'composition'
- );
- }
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\Helpful;
-
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\Functional as f;
-
-class FunctorLaws
-{
- /**
- * Generic test to verify if a type obey the functor laws.
- *
- * @param callable $assertEqual Asserting function (Functor $f1, Functor $f2, $message)
- * @param callable $f (a -> b)
- * @param callable $g (a -> b)
- * @param Functor $x f a
- */
- public static function test(
- callable $assertEqual,
- callable $f,
- callable $g,
- Functor $x
- ) {
- // identity: fmap id == id
- $assertEqual(
- f\map(f\identity, $x),
- $x,
- 'identity'
- );
-
- // composition: fmap (f . g) == fmap f . fmap g
- $assertEqual(
- f\map(f\compose($f, $g), $x),
- f\compose(f\map($f), f\map($g))($x),
- 'composition'
- );
- }
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\Helpful;
-
-use Widmogrod\Functional as f;
-
-class MonadLaws
-{
- /**
- * Generic test to verify if a type obey the monad laws.
- *
- * @param callable $assertEqual Asserting function (Monad $m1, Monad $m2, $message)
- * @param callable $return Monad "constructor"
- * @param callable $f Monadic function
- * @param callable $g Monadic function
- * @param mixed $x Value to put into a monad
- */
- public static function test(
- callable $assertEqual,
- callable $return,
- callable $f,
- callable $g,
- $x
- ) {
- // Make reading bellow tests easier
- $m = $return($x);
-
- // left identity: (return x) >>= f ≡ f x
- $assertEqual(f\bind($f, $return($x)), $f($x), 'left identity');
-
- // right identity: m >>= return ≡ m
- $assertEqual(f\bind($return, $m), $m, 'right identity');
-
- // associativity: (m >>= f) >>= g ≡ m >>= ( \x -> (f x >>= g) )
- $assertEqual(
- f\bind($g, f\bind($f, $m)),
- f\bind(function ($x) use ($f, $g) {
- return f\bind($g, $f($x));
- }, $m),
- 'associativity'
- );
- }
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\Helpful;
-
-use Widmogrod\FantasyLand\Monoid;
-use Widmogrod\Functional as f;
-
-class MonoidLaws
-{
- /**
- * Generic test to verify if a type obey the monodic laws.
- *
- * @param callable $assertEqual Asserting function (Monoid $m1, Monoid $m2, $message)
- * @param Monoid $x
- * @param Monoid $y
- * @param Monoid $z
- */
- public static function test(
- callable $assertEqual,
- Monoid $x,
- Monoid $y,
- Monoid $z
- ) {
- $assertEqual(
- f\concatM($x, f\emptyM($x)),
- $x,
- 'Right identity'
- );
- $assertEqual(
- f\concatM(f\emptyM($x), $x),
- $x,
- 'Left identity'
- );
-
- $assertEqual(
- f\concatM($x, f\concatM($y, $z)),
- f\concatM(f\concatM($x, $y), $z),
- 'Associativity'
- );
- }
-}
+++ /dev/null
-<?php
-
-declare(strict_types=1);
-
-namespace Widmogrod\Helpful;
-
-use Widmogrod\FantasyLand\Setoid;
-use Widmogrod\Functional as f;
-
-class SetoidLaws
-{
- /**
- * @param callable $assertEqual
- * @param Setoid $a
- * @param Setoid $b
- * @param Setoid $c
- */
- public static function test(
- callable $assertEqual,
- Setoid $a,
- Setoid $b,
- Setoid $c
- ) {
- $assertEqual(
- f\equal($a, $a),
- true,
- 'reflexivity'
- );
-
- $assertEqual(
- f\equal($a, $b),
- f\equal($b, $a),
- 'symmetry'
- );
-
- $assertEqual(
- f\equal($a, $b) && f\equal($b, $c),
- f\equal($a, $c),
- 'transitivity'
- );
- }
-}
declare(strict_types=1);
namespace Widmogrod\Monad\Control\Doo\Algebra;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Useful\PatternMatcher;
/**
namespace Widmogrod\Monad\Control\Doo\Algebra;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Functor;
use function Widmogrod\Functional\compose;
class In implements DooF
declare(strict_types=1);
namespace Widmogrod\Monad\Control\Doo\Algebra;
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\FantasyLand\Monad;
+use FunctionalPHP\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Monad;
use Widmogrod\Monad\Free\MonadFree;
class Let implements DooF
namespace Widmogrod\Monad\Control\Doo;
-use Widmogrod\FantasyLand\Monad;
+use FunctionalPHP\FantasyLand\Monad;
use Widmogrod\Monad\Free\MonadFree;
use Widmogrod\Monad\Free\Pure;
use function Widmogrod\Monad\Free\liftF;
declare(strict_types=1);
namespace Widmogrod\Monad\Control\Doo;
-use Widmogrod\FantasyLand\Monad;
+use FunctionalPHP\FantasyLand\Monad;
use Widmogrod\Monad\Control\Doo\Algebra\DooF;
use Widmogrod\Monad\Control\Doo\Algebra\In;
use Widmogrod\Monad\Control\Doo\Algebra\Let;
namespace Widmogrod\Monad\Either;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
interface Either extends
FantasyLand\Monad,
namespace Widmogrod\Monad\Either;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Left implements Either
{
namespace Widmogrod\Monad\Either;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Right implements Either
{
namespace Widmogrod\Monad\Free;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
use function Widmogrod\Functional\bind;
/**
namespace Widmogrod\Monad\Free;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
interface MonadFree extends FantasyLand\Monad
{
namespace Widmogrod\Monad\Free;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Pure implements MonadFree
{
namespace Widmogrod\Monad\Free;
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\FantasyLand\Monad;
+use FunctionalPHP\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Monad;
use function Widmogrod\Functional\curryN;
/**
namespace Widmogrod\Monad;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class IO implements
FantasyLand\Monad,
namespace Widmogrod\Monad;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Identity implements
FantasyLand\Monad,
namespace Widmogrod\Monad\Maybe;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
use Widmogrod\Primitive\TypeMismatchError;
class Just implements Maybe
namespace Widmogrod\Monad\Maybe;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
interface Maybe extends
FantasyLand\Monad,
namespace Widmogrod\Monad\Maybe;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Nothing implements Maybe
{
namespace Widmogrod\Monad;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Reader implements FantasyLand\Monad
{
namespace Widmogrod\Monad;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class State implements FantasyLand\Monad
{
namespace Widmogrod\Monad;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
use Widmogrod\Primitive\Stringg as S;
class Writer implements FantasyLand\Monad
namespace Widmogrod\Monad\Writer;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
use Widmogrod\Monad as M;
const pure = 'Widmogrod\Monad\Writer\pure';
namespace Widmogrod\Primitive;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
/**
* data List a = Nil | Cons a (List a)
namespace Widmogrod\Primitive;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
use Widmogrod\Functional as f;
class ListtCons implements Listt, \IteratorAggregate
namespace Widmogrod\Primitive;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class ListtNil implements Listt
{
namespace Widmogrod\Primitive;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Num implements
FantasyLand\Pointed,
namespace Widmogrod\Primitive;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Product extends Num implements
FantasyLand\Monoid,
namespace Widmogrod\Primitive;
use Widmogrod\Common;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Stringg implements
FantasyLand\Pointed,
namespace Widmogrod\Primitive;
-use Widmogrod\FantasyLand;
+use FunctionalPHP\FantasyLand;
class Sum extends Num implements
FantasyLand\Monoid,
namespace test\Functional;
-use Widmogrod\FantasyLand\Monad;
+use FunctionalPHP\FantasyLand\Monad;
use Widmogrod\Monad\Identity;
use Widmogrod\Monad\State;
use const Widmogrod\Functional\identity;
namespace test\Functional;
-use Widmogrod\FantasyLand\Foldable;
+use FunctionalPHP\FantasyLand\Foldable;
use function Widmogrod\Functional\fromIterable;
use function Widmogrod\Functional\fromNil;
use function Widmogrod\Functional\length;
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Functional as f;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
use Widmogrod\Monad\Either;
use Widmogrod\Monad\Either\Left;
use Widmogrod\Monad\Either\Right;
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
use Widmogrod\Monad\Free\MonadFree;
use Widmogrod\Monad\Free\Pure;
use Widmogrod\Monad\Identity;
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Functional as f;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
use Widmogrod\Monad\IO;
class IOTest extends \PHPUnit\Framework\TestCase
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Functional as f;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
use Widmogrod\Monad\Identity;
class IdentityTest extends \PHPUnit\Framework\TestCase
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Functional as f;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
-use Widmogrod\Helpful\MonoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonoidLaws;
use Widmogrod\Monad\Maybe;
use Widmogrod\Monad\Maybe\Just;
use Widmogrod\Monad\Maybe\Nothing;
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
use Widmogrod\Monad\Reader;
class ReaderTest extends \PHPUnit\Framework\TestCase
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
use Widmogrod\Functional as f;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
use Widmogrod\Monad\State;
class StateTest extends \PHPUnit\Framework\TestCase
namespace test\Monad;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
use Widmogrod\Monad\Writer;
class WriterTest extends \PHPUnit\Framework\TestCase
namespace test\Monad;
use Eris\TestTrait;
-use Widmogrod\FantasyLand\Applicative;
-use Widmogrod\FantasyLand\Functor;
-use Widmogrod\FantasyLand\Monoid;
+use FunctionalPHP\FantasyLand\Applicative;
+use FunctionalPHP\FantasyLand\Functor;
+use FunctionalPHP\FantasyLand\Monoid;
use Widmogrod\Functional as f;
-use Widmogrod\Helpful\ApplicativeLaws;
-use Widmogrod\Helpful\FunctorLaws;
-use Widmogrod\Helpful\MonadLaws;
-use Widmogrod\Helpful\MonoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\ApplicativeLaws;
+use FunctionalPHP\FantasyLand\Helpful\FunctorLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonadLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonoidLaws;
use const Widmogrod\Functional\fromValue;
use function Eris\Generator\choose;
use function Eris\Generator\vector;
use Eris\TestTrait;
use Eris\Generator;
-use Widmogrod\Helpful\SetoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\SetoidLaws;
use Widmogrod\Primitive\Num;
class NumTest extends \PHPUnit\Framework\TestCase
use Eris\Generator;
use Eris\TestTrait;
-use Widmogrod\Helpful\MonoidLaws;
-use Widmogrod\Helpful\SetoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\SetoidLaws;
use Widmogrod\Primitive\Product;
use Widmogrod\Primitive\Stringg;
use Eris\Generator;
use Eris\TestTrait;
-use Widmogrod\Helpful\MonoidLaws;
-use Widmogrod\Helpful\SetoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\SetoidLaws;
use Widmogrod\Primitive\Product;
use Widmogrod\Primitive\Stringg;
use Eris\TestTrait;
use Eris\Generator;
-use Widmogrod\Helpful\MonoidLaws;
-use Widmogrod\Helpful\SetoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\MonoidLaws;
+use FunctionalPHP\FantasyLand\Helpful\SetoidLaws;
use Widmogrod\Primitive\Product;
use Widmogrod\Primitive\Sum;