<?php define("_", 0); class Currying{ private $arg1; public function __construct($arg1){ $this->func_a[0] = $arg1; $this->func_a[_] = function($arg2){ return $this->func_a[0] + $arg2; }; } } $Currying = new Currying(1); var_dump($Currying->func_a[_](2)); print "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \n"; $currying = function($arg1){ class Currying{ private $arg1; public function __construct($arg1){ $this->arg1 = $arg1; } function func_b(){ return function($arg2){ return $this->arg1 + $arg2; }; } } $Currying = new Currying($arg1); return $Currying->func_b(); }; $currying = $currying(1); var_dump($currying(2));