ramda-php

所属分类:工具库
开发工具:PHP
文件大小:0KB
下载次数:0
上传日期:2017-09-04 17:26:28
上 传 者sh-1993
说明:  函数编程库的PHP实现,相当于ramda.js。,
(A PHP implementation of functional programming library equivalent to ramda.js.,)

文件列表:
LICENSE.txt (1077, 2017-09-04)
composer.json (200, 2017-09-04)
phpunit.xml (620, 2017-09-04)
ramda.php (36360, 2017-09-04)
tests/ (0, 2017-09-04)
tests/ArrayTest.php (10992, 2017-09-04)
tests/CalculateTest.php (5313, 2017-09-04)
tests/CurryTest.php (1705, 2017-09-04)
tests/ExampleTest.php (8273, 2017-09-04)
tests/OtherTest.php (4056, 2017-09-04)
tests/StringTest.php (1045, 2017-09-04)
tests/WhereTest.php (2176, 2017-09-04)
tests/autoload.php (9, 2017-09-04)

# ramda-php This is a PHP implementation of ramda.js - a functional programming library. (http://ramdajs.com/) So far only the curry functions and part of the functions implemented. The library is capable of doing the what's in the ramda.js examples. ### Implemented Methods - [x] add - [ ] addIndex - [x] adjust - [x] all - [ ] allPass - [ ] allUniq - [x] always - [x] and - [x] any - [x] anyPass - [x] ap - [ ] aperture - [x] append - [x] apply - [ ] applySpec - [x] assoc - [ ] assocPath - [ ] binary - [ ] bind - [x] both - [ ] call - [x] chain - [ ] clamp - [ ] clone - [x] comparator - [ ] complement - [x] compose - [ ] composeK - [ ] composeP - [x] concat - [x] cond - [ ] construct - [ ] constructN - [x] contains - [ ] converge - [ ] countBy - [x] curry - [x] curryN - [x] dec - [x] defaultTo - [ ] difference - [ ] differenceWith - [ ] dissoc - [ ] dissocPath - [x] divide - [ ] drop - [ ] dropLast - [ ] dropLastWhile - [ ] dropRepeats - [ ] dropRepeatsWith - [ ] dropWhile - [x] either - [ ] empty - [ ] eqBy - [ ] eqProps - [x] equals - [ ] evolve - [x] filter - [ ] find - [ ] findIndex - [ ] findLast - [ ] findLastIndex - [x] flatten - [ ] flip - [x] forEach - [ ] fromPairs - [x] groupBy - [x] gt - [x] gte - [x] has - [ ] hasIn - [x] head - [x] identical - [x] identity - [ ] ifElse - [x] inc - [ ] indexBy - [x] indexOf - [x] init - [ ] insert - [ ] insertAll - [ ] internal - [ ] intersection - [ ] intersectionWith - [ ] intersperse - [ ] into - [ ] invert - [ ] invertObj - [ ] invoker - [ ] is - [ ] isArrayLike - [ ] isEmpty - [ ] isNil - [x] join - [ ] juxt - [x] keys - [ ] keysIn - [x] last - [ ] lastIndexOf - [ ] length - [ ] lens - [ ] lensIndex - [ ] lensPath - [ ] lensProp - [ ] lift - [ ] liftN - [x] lt - [x] lte - [x] map - [ ] mapAccum - [ ] mapAccumRight - [ ] mapObjIndexed - [ ] match - [ ] mathMod - [x] max - [ ] maxBy - [ ] mean - [ ] median - [ ] memoize - [ ] merge - [ ] mergeAll - [ ] mergeWith - [ ] mergeWithKey - [x] min - [ ] minBy - [x] modulo - [ ] multiply - [ ] nAry - [x] negate - [ ] none - [x] not - [x] nth - [ ] nthArg - [ ] objOf - [x] of - [ ] omit - [x] once - [x] or - [ ] over - [x] pair - [ ] partial - [ ] partialRight - [x] partition - [ ] path - [ ] pathEq - [ ] pathOr - [ ] pathSatisfies - [x] pick - [x] pickAll - [ ] pickBy - [x] pipe - [ ] pipeK - [ ] pipeP - [ ] pluck - [x] prepend - [ ] product - [x] project - [x] prop - [x] propEq - [ ] propIs - [x] propOr - [x] propSatisfies - [ ] props - [x] range - [x] reduce - [ ] reduceBy - [ ] reduceRight - [ ] reduced - [x] reject - [x] remove - [ ] repeat - [ ] replace - [x] reverse - [ ] scan - [ ] sequence - [ ] set - [x] slice - [x] sort - [x] sortBy - [ ] split - [ ] splitAt - [ ] splitEvery - [ ] splitWhen - [x] subtract - [x] sum - [ ] symmetricDifference - [ ] symmetricDifferenceWith - [x] tail - [x] take - [ ] takeLast - [ ] takeLastWhile - [ ] takeWhile - [x] tap - [x] test - [x] times - [x] toLower - [ ] toPairs - [ ] toPairsIn - [ ] toString - [x] toUpper - [ ] transduce - [ ] transpose - [ ] traverse - [ ] trim - [ ] tryCatch - [ ] type - [ ] unapply - [ ] unary - [ ] uncurryN - [ ] unfold - [ ] union - [ ] unionWith - [ ] uniq - [ ] uniqBy - [ ] uniqWith - [ ] unless - [ ] unnest - [ ] update - [x] useWith - [x] values - [ ] valuesIn - [ ] view - [ ] when - [x] where - [x] whereEq - [ ] without - [ ] wrap - [x] xprod - [x] zip - [ ] zipObj - [ ] zipWith ### Introduced Methods R::$flatten1 - flatten in non-recursive way (for 1 depth only). ### How to Use Compose functions: ``` require_once 'ramda.php'; $getIncompleteTaskSummaries = function($membername) { return (R::$compose)( (R::$sortBy)((R::$prop)('dueDate')), (R::$map)((R::$pick)(['id', 'dueDate', 'title', 'priority'])), (R::$reject)((R::$propEq)('complete', true)), (R::$filter)((R::$propEq)('username', $membername)), (R::$prop)('tasks')); }; ``` Use the function on data: ``` $data = [ 'result' => "SUCCESS", 'interfaceVersion' => "1.0.3", 'requested' => "10/17/2013 15:31:20", 'lastUpdated' => "10/16/2013 10:52:39", 'tasks' => [ ['id' => 104, 'complete' => false, 'priority' => "high", 'dueDate' => "2013-11-29", 'username' => "Scott", 'title' => "Do something", 'created' => "9/22/2013"], ['id' => 105, 'complete' => false, 'priority' => "medium", 'dueDate' => "2013-11-22", 'username' => "Lena", 'title' => "Do something else", 'created' => "9/22/2013"], ['id' => 107, 'complete' => false, 'priority' => "high", 'dueDate' => "2013-11-22", 'username' => "Mike", 'title' => "Fix the foo", 'created' => "9/22/2013"], ['id' => 108, 'complete' => false, 'priority' => "low", 'dueDate' => "2013-11-15", 'username' => "Punam", 'title' => "Adjust the bar", 'created' => "9/25/2013"], ['id' => 110, 'complete' => false, 'priority' => "medium", 'dueDate' => "2013-11-15", 'username' => "Scott", 'title' => "Rename everything", 'created' => "10/2/2013"], ['id' => 112, 'complete' => true, 'priority' => "high", 'dueDate' => "2013-11-27", 'username' => "Lena", 'title' => "Alter all quuxes", 'created' => "10/5/2013"], ['id' => 122, 'complete' => false, 'priority' => "high", 'dueDate' => "2013-11-01", 'username' => "Mike", 'title' => "Fix the bar", 'created' => "9/22/2013"], ['id' => 123, 'complete' => true, 'priority' => "high", 'dueDate' => "2013-11-22", 'username' => "Mike", 'title' => "Fix the foobar", 'created' => "9/22/2013"], ] ]; $tasks = $getIncompleteTaskSummaries("Mike")($data); print_r($tasks); ``` Outputs: ``` ( [0] => Array ( [id] => 122 [dueDate] => 2013-11-01 [title] => Fix the bar [priority] => high ) [1] => Array ( [id] => 107 [dueDate] => 2013-11-22 [title] => Fix the foo [priority] => high ) ) ``` Note: as a defect of PHP compiler, static method ```R::$add(1,2)``` wouldn't compile. To get around, place the static method inside parenthesis ```(R::$add)(1,2)``` Curry functions: (Note: ```R::$_``` is the placeholder parameter.) ``` $f3 = function($a, $b, $c) { return $a*2+$b*3+$c*4; }; $c = R::curry($f3); $cc = $c(R::$_,2,R::$_); print_r($cc(1,3)); ``` Outputs: ``` 20 ``` (More examples can be found in the /tests folder.)

近期下载者

相关文件


收藏者