haskellcamargo / php-maybe-monad
PHP 实现的 Haskell 的 Maybe monad
Requires (Dev)
- phpunit/phpunit: ^4.7
This package is not auto-updated.
Last update: 2024-09-18 09:51:33 UTC
README
处理可能失败的计算。Haskell 的 Data.Maybe
模块的 PHP 版本,适用于 PHP > 5.4。
安装
您可以通过 Composer 进行安装。
composer require haskellcamargo/php-maybe-monad
示例
use HaskellCamargo\Maybe; Maybe\Maybe(@$_GET["username"])->bind(function($user)) { echo "Welcome, $user. You're logged in!"; }); $userAge = Maybe\Maybe(null)->fromMaybe(0); // => 0 $userAge = Maybe\Maybe(19)->fromMaybe(0); // => 19
文档
Maybe
类型封装了一个可选值。类型为 Maybe a
的值要么包含类型为 a 的值(表示为 Just a
),要么为空(表示为 Nothing
)。使用 Maybe
是处理错误或异常情况的好方法,而无需求助于像 Exception
这样的极端措施。Maybe
类型也是一个 monad。它是一种简单的错误 monad,其中所有错误都由 Nothing
表示。可以使用 Either
类型构建更丰富的错误 monad。
bind :: (Maybe a, callable) -> Maybe b
等同于 Haskell 的 >>=
操作符。其第一个参数是一个 monadic 类型的值,第二个参数是一个将第一个参数的底层类型映射到另一个 monadic 类型的函数,其结果是那个其他 monadic 类型。
$age = Maybe\Maybe(null)->bind(function($x) { return 10; }); // => Nothing $age = Maybe\Maybe(10) ->bind(function($x) { return $x + 10; // => Just(20); }) ->bind(function($x) { return $x + 20; // => Just(40); })->fromJust(); // => 40
fromJust :: Maybe a -> a
从 Just
中提取元素并返回一个错误,如果其参数是 Nothing
。
Maybe\Maybe("Foo")->fromJust(); // => "Foo" Maybe\Maybe(null)->fromJust(); // => Exception: Cannot cal fromJust() on Nothing
fromMaybe :: (Maybe a, a) -> a
接受一个 Maybe
值和一个默认值。如果 Maybe
是 Nothing
,则返回默认值;否则,返回 Maybe
中包含的值。
Maybe\Maybe(10)->fromMaybe(5); // => 10 Maybe\Maybe(null)->fromMaybe(5); // => 5
isJust :: Maybe a -> boolean
如果其参数是 Just _
的形式,则返回 true。
Maybe\Maybe(10)->isJust(); // => true Maybe\Maybe(null)->isJust(); // => false
isNothing :: Maybe a -> boolean
如果其参数是 Nothing
的形式,则返回 true。
Maybe\Maybe(10)->isNothing(); // => false Maybe\Maybe(null)->isNothing(); // => true
maybe :: (Maybe a, b, callable) -> b
接受一个默认值、一个函数和当然,一个 Maybe
值。如果 Maybe
值是 Nothing
,则函数返回默认值。否则,将函数应用于 Just
内部的值并返回结果。
$just = Maybe\Maybe(10); $nothing = Maybe\Maybe(null); $just->maybe(40, function($num) { return $num + 15; }); // => 25 $nothing->maybe(40, function($num) { return $num + 15; }); // => 40
toList :: Maybe a -> array
如果给定 Nothing
,则返回一个空列表;如果没有给定 Nothing
,则返回一个单元素列表。
Maybe\Maybe(10)->toList(); // => [10] Maybe\Maybe(null)->toList(); // => []
由 Marcelo Camargo 和 Reinaldo Rauch 用 ❤️ 制作
许可证
MIT