SlideShare a Scribd company logo
{unctionalStructures
byMarcelloDuarte
@_md
f inPHP
@_md#phpbnl17
Expressinganything
@_md#phpbnl17
@_md#phpbnl17
categorytheory
@_md#phpbnl17
categorytheory
somecoolstructures
somearrows
somelaws
{
@_md#phpbnl17
A B
@_md#phpbnl17
A B
"PHPBenelux" 10
@_md#phpbnl17
A B
"PHPBenelux" 10
@_md#phpbnl17
A B
"PHPBenelux"
f
10
@_md#phpbnl17
B
10
C
true
@_md#phpbnl17
B
10
C
true
@_md#phpbnl17
B
10
C
true
g
@_md#phpbnl17
@_md#phpbnl17
github.com/phunkie/phunkie
@_md#phpbnl17
SEMIGROUPS
@_md#phpbnl17
https://upload.wikimedia.org/wikipedia/commons/c/c2/Falkland_Islands_Penguins_40.jpg
@_md#phpbnl17
combine(1, 2) == 3;
combine("a", "b") == "ab";
combine(true, false) == false;
@_md#phpbnl17
h
@_md#phpbnl17
$f = function(string $a): int {
return strlen($a);
};
@_md#phpbnl17
$f = function(string $a): int {
return strlen($a);
};
$g = function(int $b): bool {
return $b % 2 === 0;
};
@_md#phpbnl17
$f = function(string $a): int {
return strlen($a);
};
$g = function(int $b): bool {
return $b % 2 === 0;
};
$h = combine($f, g);
$h("PHPBenelux") == true;
@_md#phpbnl17
combine($f, g) == compose ($f, $g)
// if $f and $g are functions
@_md#phpbnl17
compose ("strlen", odd, Option, ...)
@_md#phpbnl17
laws
@_md#phpbnl17
combine(combine(1, 2), 3) == combine(1, combine(2, 3))
associativity
@_md#phpbnl17
MONOIDS
@_md#phpbnl17
https://upload.wikimedia.org/wikipedia/commons/c/c2/Falkland_Islands_Penguins_40.jpg
@_md#phpbnl17
$identity = function ($x) {
return $x;
};
A
"PHPBenelux"
i
@_md#phpbnl17
zero(42) == 0;
zero("any string") == "";
zero(true, false) == true;
@_md#phpbnl17
laws
@_md#phpbnl17
combine(combine(1, 2), 3) == combine(1, combine(2, 3))
combine(zero($x), $x) == $x
combine($x, zero($x)) == $x
associativity
(left and right) identity
@_md#phpbnl17
interface Monoid extends Semigroup {

public function zero();
// inherited from Semigroup
public function combine($another);
}
@_md#phpbnl17
interface Monoid extends Semigroup {

public function zero();
// inherited from Semigroup
public function combine($another);
}
class Balance implements Monoid { // ... }
@_md#phpbnl17
$deposit100bucks = function(Balance $b) {
return $b->plus(100);
}



$listOfBalances->foldMap($deposit100bucks);
@_md#phpbnl17
FUNCTORS
@_md#phpbnl17
https://upload.wikimedia.org/wikipedia/commons/3/3b/World_Map_1689.JPG
@_md#phpbnl17
kinds
@_md#phpbnl17
proper
{
@_md#phpbnl17
givemeanumber
@_md#phpbnl17
42givemeanumber
@_md#phpbnl17
givemeaword
@_md#phpbnl17
givemeaword "cabuzle"
@_md#phpbnl17
proper
first-order{
@_md#phpbnl17
givemealist
@_md#phpbnl17
givemealist …
@_md#phpbnl17
givemealist alistofwhat?
@_md#phpbnl17
ImmList(1,2,3)
// List<Int>

ImmList("a thing", "another thing")
// List<String>

@_md#phpbnl17
ImmList(1,2,3)
// List<Int>

ImmList("a thing", "another thing")
// List<String>
@_md#phpbnl17
abstract class Option {}
class Some extends Option {}
class None extends Option {}
@_md#phpbnl17
phunkie > Option(42)
$var0: Option<Int> = Some(42)
phunkie > Option(null)
$var1: None = None




@_md#phpbnl17
phunkie > $f = compose(mayBeRubish, Option)

phunkie > $f(42)
$var0: None = None




@_md#phpbnl17
proper
first-order
higherorder
{
@_md#phpbnl17
function fmap(Mappable $mappable, callable $f) {
return $mappable->map($f);
}
@_md#phpbnl17
$listOfWords = ImmList("guacamole", "nose", "penguin");
$lengths = fmap ("strlen") ($listOfWords);
// List (9, 4, 7)
@_md#phpbnl17
$maybeSomeGuaca = Option("guacamole");
$length = fmap ("strlen") ($maybeSomeGuaca);
// Some (9)
@_md#phpbnl17
$maybeSomeGuaca = Option("guacamole");
$length = fmap ("strlen") ($maybeSomeGuaca);
// Some (9)
$maybeSomeGuaca = Option(null);
$length = fmap ("strlen") ($maybeSomeGuaca);



// None
@_md#phpbnl17
// Already Mappable in Phunkie
ImmList
Option
Function1
Validations (Either)
// Planned
ImmMap
ImmSet
Tuples (inc. Pair)
@_md#phpbnl17
laws
@_md#phpbnl17
$fa == fmap(identity)($fa)
fmap(compose($f, $g))($fa) == fmap($g)(fmap($f)($fa))
covariant identity
covariant composition
@_md#phpbnl17
APPLICATIVE
@_md#phpbnl17
https://upload.wikimedia.org/wikipedia/commons/5/5c/Brick_and_block_laying.jpg
@_md#phpbnl17
interface Apply extends Functor

{
public function apply($ff);

public function map2($fb, callable $f);

}
interface Applicative extends Apply

{

public function pure($a);

}
@_md#phpbnl17
/**
* @param A $a
* @return FirstOrderKind<A>
*/
function pure($a)
@_md#phpbnl17
/**
* @param A $a
* @return FirstOrderKind<A>
*/
function pure($a)
Option()->pure(42);
// Some(42)
@_md#phpbnl17
/**
* @param A $a
* @return FirstOrderKind<A>
*/
function pure($a)
Option()->pure(42);
// Some(42)
ImmList()->pure(42);
// ImmList(42)
@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
$increment = function($x){ return $x + 1;};


@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
Some(1)->apply(Some($increment));
@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
Some(1)->apply(Some($increment));
// Some(2)

@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
Some(1)->apply(Some($increment));
// Some(2)

None()->apply(Some($increment));

@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
Some(1)->apply(Some($increment));
// Some(2)

None()->apply(Some($increment));

// None
@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
Some(1)->apply(Some($increment));
// Some(2)

None()->apply(Some($increment));

// None
ImmList(1,2,3)->apply(ImmList($increment));

@_md#phpbnl17
/**
* @param FirstOrderKind<callable<A,B>> $ff
* @return FirstOrderKind<B>
*/
function apply($ff)
Some(1)->apply(Some($increment));
// Some(2)

None()->apply(Some($increment));

// None
ImmList(1,2,3)->apply(ImmList($increment));

// ImmList(2,3,4)
@_md#phpbnl17
/**
* @param FirstOrderKind<B> $fb
* @param (A, B) => C $
* @return FirstOrderKind<C>
*/
function map2($fb, callable $f)
@_md#phpbnl17
/**
* @param FirstOrderKind<B> $fb
* @param (A, B) => C $
* @return FirstOrderKind<C>
*/
function map2($fb, callable $f)
Some(1)->map2(Some(2), function($x, $y) { return $x + $y; });;
@_md#phpbnl17
/**
* @param FirstOrderKind<B> $fb
* @param (A, B) => C $
* @return FirstOrderKind<C>
*/
function map2($fb, callable $f)
Some(1)->map2(Some(2), function($x, $y) { return $x + $y; });;
@_md#phpbnl17
/**
* @param FirstOrderKind<B> $fb
* @param (A, B) => C $
* @return FirstOrderKind<C>
*/
function map2($fb, callable $f)
Some(1)->map2(Some(2), function($x, $y) { return $x + $y; });;
// Some(3)

@_md#phpbnl17
/**
* @param FirstOrderKind<B> $fb
* @param (A, B) => C $
* @return FirstOrderKind<C>
*/
function map2($fb, callable $f)
Some(1)->map2(Some(2), function($x, $y) { return $x + $y; });;
// Some(3)

ImmList(1,2)->map2(ImmList(4,5),
function($x, $y) { return $x + $y; });

@_md#phpbnl17
/**
* @param FirstOrderKind<B> $fb
* @param (A, B) => C $
* @return FirstOrderKind<C>
*/
function map2($fb, callable $f)
Some(1)->map2(Some(2), function($x, $y) { return $x + $y; });;
// Some(3)

ImmList(1,2)->map2(ImmList(4,5),
function($x, $y) { return $x + $y; });

// ImmList(5,6,6,7)
@_md#phpbnl17
laws
@_md#phpbnl17
$fa->apply($fa->pure(identity)) == $fa
$fa->pure($a)->fa->apply($fa->pure($f)) ==

$fa->pure($f($a))
identity
homomorphism
@_md#phpbnl17
$fa->pure($a)->apply ==

$fab->apply($fa->pure(function($f)use($a){return $f($a)}))
$fa->map($f) == $fa->apply($fa->pure($f))
interchange
map
@_md#phpbnl17
whywouldyoueveruseafunctor?
@_md#phpbnl17
weakertypesaremorepredictable
@_md#phpbnl17
$xs = fmap (ImmList(1,2,3)) ($f);
echo $xs->length;
@_md#phpbnl17
MONADS
@_md#phpbnl17
https://upload.wikimedia.org/wikipedia/commons/b/bd/Golden_tabby_and_white_kitten_n01.jpg
@_md#phpbnl17
interface FlatMap extends Functor

{
public function flatMap(callable $f);

}
interface Monad extends FlatMap

{

public function flatten();

}
@_md#phpbnl17
/**
* @param (A) -> FirstOrderKind<B> $a
* @return FirstOrderKind<B>
*/
function flatMap($a)
@_md#phpbnl17
/**
* @param (A) -> FirstOrderKind<B> $a
* @return FirstOrderKind<B>
*/
function flatMap($a)
Option(42)->flatMap(function($x) { return Some($x + 1); });
@_md#phpbnl17
/**
* @param (A) -> FirstOrderKind<B> $a
* @return FirstOrderKind<B>
*/
function flatMap($a)
Option(42)->flatMap(function($x) { return Some($x + 1); });
@_md#phpbnl17
/**
* @param (A) -> FirstOrderKind<B> $a
* @return FirstOrderKind<B>
*/
function flatMap($a)
Option(42)->flatMap(function($x) { return Some($x + 1); });
@_md#phpbnl17
/**
* @param (A) -> FirstOrderKind<B> $a
* @return FirstOrderKind<B>
*/
function flatMap($a)
Option(42)->flatMap(function($x) { return Some($x + 1); });
// Some(43)
@_md#phpbnl17
/**
* @param (A) -> FirstOrderKind<B> $a
* @return FirstOrderKind<B>
*/
function flatMap($a)
Option(42)->flatMap(function($x) { return Some($x + 1); });
// Some(43)
ImmList(1,2,3)->flatMap(function($x) {
return Option($x % 2 === 0 ? null : $x); });
// ImmList(1,3)
@_md#phpbnl17
/**
* @return FirstOrderKind<B>
*/
function flatten()
Some(Some(42))->flatten();
// Some(42)
@_md#phpbnl17
/**
* @param (A) -> FirstOrderKind<B> $a
* @return FirstOrderKind<B>
*/
function flatMap($a)
Option(42)->flatMap(function($x) { return Some($x + 1); });
// Some(43)
ImmList(1,2,3)->flatMap(function($x) {
return Option($x % 2 === 0 ? null : $x); });
// ImmList(1,3)
@_md#phpbnl17
laws
@_md#phpbnl17
$fa->flatMap($f)->flatMap($g) == $fa->flatMap(function($a) use ($f,$g) {
return $f($a)->flatMap( function($b) use ($g) { return $g($b); } ) ;})
$fa->pure($a)->flatMap($f) == $f($a)
associativity
right and left identity
$fa->flatMap(function($a) use ($fa) { return $fa-
>pure($a); }) == $fa;
@_md#phpbnl17
monadsyntaxsugar
@_md#phpbnl17
function repl($state)

{

return read()->

flatMap(evaluate)->

flatMap(andPrint)->

flatMap(loop)

->run($state);

}
def repl(state) =

for {
(s,input) <- read

(s,result)<- evaluate

s <- andPrint

s <- loop

} yield s

@_md#phpbnl17
monadcomposability
@_md#phpbnl17
f(A $a): M<B>



g(B $b): M<C>
f(a) ~= M<B>

f(a) map g ~= M<M<C>>


f(a) ~= M<B>

f(a) map g ~= M<M<C>>


urgh!
@_md#phpbnl17
butyoucancomposethemonad’sfunctions!


flatten f(a) map g ~= M<C>


@_md#phpbnl17
VALIDATIONS
@_md#phpbnl17
http://www.sbs.com.au/topics/sites/sbs.com.au.topics/files/gettyimages-470309868.jpg
@_md#phpbnl17
abstract class Validation {}
class Success extends Validation {}
class Failure extends Validation {}
@_md#phpbnl17
phunkie > Success(42)
$var0: Validation<E, Int> = Success(42)
phunkie > Failure("nay")
$var0: Validation<String, A> = Failure("nay")




@_md#phpbnl17
phunkie > Either("nay")(42)
$var0: Validation<E, Int> = Success(42)
phunkie > Either("nay")(null)
$var0: Validation<String, A> = Failure("nay")




@_md#phpbnl17
marcelloduarte
@PhunkiePhp
{
@_md#phpbnl17
thanks
{bit.ly/inviqa-contact bit.ly/inviqa-careers
you!
@_md#phpbnl17
credits
https://upload.wikimedia.org/wikipedia/commons/c/c2/Falkland_Islands_Penguins_40.jpg
{https://upload.wikimedia.org/wikipedia/commons/3/3b/World_Map_1689.JPG
https://upload.wikimedia.org/wikipedia/commons/5/5c/Brick_and_block_laying.jpg
https://upload.wikimedia.org/wikipedia/commons/b/bd/Golden_tabby_and_white_kitten_n01.jpg
@_md#phpbnl17
Questions?


joind.in/talk/75f65
?

More Related Content

What's hot (20)

PDF
Learning Perl 6 (NPW 2007)
brian d foy
 
PDF
The Perl6 Type System
abrummett
 
PDF
Code Generation in PHP - PHPConf 2015
Lin Yo-An
 
PDF
OSDC.TW - Gutscript for PHP haters
Lin Yo-An
 
PDF
PHPUnit でよりよくテストを書くために
Yuya Takeyama
 
PDF
I, For One, Welcome Our New Perl6 Overlords
heumann
 
PDF
PHP Enums - PHPCon Japan 2021
Ayesh Karunaratne
 
PDF
Learning Perl 6
brian d foy
 
PDF
Php unit the-mostunknownparts
Bastian Feder
 
PDF
Business Rules with Brick
brian d foy
 
PDF
Xlab #1: Advantages of functional programming in Java 8
XSolve
 
DOC
Jsphp 110312161301-phpapp02
Seri Moth
 
PDF
The Joy of Smartmatch
Andrew Shitov
 
PDF
Diving into HHVM Extensions (php[tek] 2016)
James Titcumb
 
KEY
Unit testing with zend framework PHPBenelux
Michelangelo van Dam
 
PDF
PHP Language Trivia
Nikita Popov
 
PPTX
Oops in php
Gourishankar R Pujar
 
PDF
Unit testing with zend framework tek11
Michelangelo van Dam
 
PDF
November Camp - Spec BDD with PHPSpec 2
Kacper Gunia
 
KEY
Workshop unittesting
Joshua Thijssen
 
Learning Perl 6 (NPW 2007)
brian d foy
 
The Perl6 Type System
abrummett
 
Code Generation in PHP - PHPConf 2015
Lin Yo-An
 
OSDC.TW - Gutscript for PHP haters
Lin Yo-An
 
PHPUnit でよりよくテストを書くために
Yuya Takeyama
 
I, For One, Welcome Our New Perl6 Overlords
heumann
 
PHP Enums - PHPCon Japan 2021
Ayesh Karunaratne
 
Learning Perl 6
brian d foy
 
Php unit the-mostunknownparts
Bastian Feder
 
Business Rules with Brick
brian d foy
 
Xlab #1: Advantages of functional programming in Java 8
XSolve
 
Jsphp 110312161301-phpapp02
Seri Moth
 
The Joy of Smartmatch
Andrew Shitov
 
Diving into HHVM Extensions (php[tek] 2016)
James Titcumb
 
Unit testing with zend framework PHPBenelux
Michelangelo van Dam
 
PHP Language Trivia
Nikita Popov
 
Unit testing with zend framework tek11
Michelangelo van Dam
 
November Camp - Spec BDD with PHPSpec 2
Kacper Gunia
 
Workshop unittesting
Joshua Thijssen
 

Similar to Functional Structures in PHP (20)

PDF
Functional php
Jean Carlo Machado
 
PPTX
PHP in 2018 - Q4 - AFUP Limoges
✅ William Pinaud
 
PPT
Php Reusing Code And Writing Functions
mussawir20
 
PDF
PHP and Rich Internet Applications
elliando dias
 
PDF
Symfony tips and tricks
Mariusz Kozłowski
 
PDF
Functional Programming in PHP
pwmosquito
 
PPT
Go OO! - Real-life Design Patterns in PHP 5
Stephan Schmidt
 
PDF
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Ivan Chepurnyi
 
PDF
Good Evils In Perl
Kang-min Liu
 
PDF
JavaScript for PHP developers
Stoyan Stefanov
 
ODP
Symfony CMF - PHP Conference Brazil 2011
Jacopo Romei
 
PDF
PHP7 - Scalar Type Hints & Return Types
Eric Poe
 
PDF
jQuery: out with the old, in with the new
Remy Sharp
 
PDF
Generating Power with Yield
Jason Myers
 
PDF
Ethiopian multiplication in Perl6
Workhorse Computing
 
PDF
Elements of Functional Programming in PHP
Jarek Jakubowski
 
PPTX
Introducing PHP Latest Updates
Iftekhar Eather
 
KEY
Can't Miss Features of PHP 5.3 and 5.4
Jeff Carouth
 
KEY
Good Evils In Perl (Yapc Asia)
Kang-min Liu
 
PDF
Why async and functional programming in PHP7 suck and how to get overr it?
Lucas Witold Adamus
 
Functional php
Jean Carlo Machado
 
PHP in 2018 - Q4 - AFUP Limoges
✅ William Pinaud
 
Php Reusing Code And Writing Functions
mussawir20
 
PHP and Rich Internet Applications
elliando dias
 
Symfony tips and tricks
Mariusz Kozłowski
 
Functional Programming in PHP
pwmosquito
 
Go OO! - Real-life Design Patterns in PHP 5
Stephan Schmidt
 
Meet Magento Sweden - Magento 2 Layout and Code Compilation for Performance
Ivan Chepurnyi
 
Good Evils In Perl
Kang-min Liu
 
JavaScript for PHP developers
Stoyan Stefanov
 
Symfony CMF - PHP Conference Brazil 2011
Jacopo Romei
 
PHP7 - Scalar Type Hints & Return Types
Eric Poe
 
jQuery: out with the old, in with the new
Remy Sharp
 
Generating Power with Yield
Jason Myers
 
Ethiopian multiplication in Perl6
Workhorse Computing
 
Elements of Functional Programming in PHP
Jarek Jakubowski
 
Introducing PHP Latest Updates
Iftekhar Eather
 
Can't Miss Features of PHP 5.3 and 5.4
Jeff Carouth
 
Good Evils In Perl (Yapc Asia)
Kang-min Liu
 
Why async and functional programming in PHP7 suck and how to get overr it?
Lucas Witold Adamus
 
Ad

More from Marcello Duarte (14)

PDF
Empathy from Agility
Marcello Duarte
 
PDF
Introducing Eager Design
Marcello Duarte
 
PDF
Understanding Craftsmanship SwanseaCon2015
Marcello Duarte
 
PDF
Transitioning to Agile
Marcello Duarte
 
PDF
Understanding craftsmanship
Marcello Duarte
 
PDF
Hexagonal symfony
Marcello Duarte
 
PDF
The framework as an implementation detail
Marcello Duarte
 
PDF
PhpSpec 2.0 ilustrated by examples
Marcello Duarte
 
PDF
Emergent design with phpspec
Marcello Duarte
 
PDF
Pair Programming, TDD and other impractical things
Marcello Duarte
 
PPTX
Deliberate practice
Marcello Duarte
 
PDF
BDD For Zend Framework With PHPSpec
Marcello Duarte
 
KEY
PHPSpec BDD for PHP
Marcello Duarte
 
PDF
PHPSpec BDD Framework
Marcello Duarte
 
Empathy from Agility
Marcello Duarte
 
Introducing Eager Design
Marcello Duarte
 
Understanding Craftsmanship SwanseaCon2015
Marcello Duarte
 
Transitioning to Agile
Marcello Duarte
 
Understanding craftsmanship
Marcello Duarte
 
Hexagonal symfony
Marcello Duarte
 
The framework as an implementation detail
Marcello Duarte
 
PhpSpec 2.0 ilustrated by examples
Marcello Duarte
 
Emergent design with phpspec
Marcello Duarte
 
Pair Programming, TDD and other impractical things
Marcello Duarte
 
Deliberate practice
Marcello Duarte
 
BDD For Zend Framework With PHPSpec
Marcello Duarte
 
PHPSpec BDD for PHP
Marcello Duarte
 
PHPSpec BDD Framework
Marcello Duarte
 
Ad

Recently uploaded (20)

PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PPTX
Tally software_Introduction_Presentation
AditiBansal54083
 
PDF
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PPTX
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
PPTX
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PDF
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
Tally software_Introduction_Presentation
AditiBansal54083
 
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 

Functional Structures in PHP