rfc:currying

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
rfc:currying [2011/06/07 11:46]
lstrojny 0.9.1
rfc:currying [2011/06/07 11:51]
lstrojny formatting
Line 137: Line 137:
 </​code>​ </​code>​
  
-There are a few concerns to implement it that way: +=== Pitfalls and criticism === 
-  ​* ​How is performance affected because of the heavy use of Closure objects? I don’t know yet, any guesses? +== Performance == 
-  ​* ​Error messages could be misleading. E.g. not passing an argument to ''​$func()''​ would result in a warning for a missing argument when calling ''​$func()''​ without any mention of ''​strpos()''​. One way to overcome this problem would be to have ''​class CurriedFunction extends Closure''​. This subclass would contain additional properties for a nicer the error message. It would even be possible to override error handling for ''​CurriedFunction::​__invoke()''​ to make it more specific. +How is performance affected because of the heavy use of Closure objects? I don’t know yet, any guesses? 
-    * Bad error message: ''​Missing argument 1 for {closure}(),​ called in <​file>​ on line <​line>​ and defined in <​file>​ on line <​line>''​ + 
-    * Better error message: ''​Missing argument 1 for curried strpos(..., "​f"​),​ called in <​file>​ on line <​line>​ and defined in <​file>​ on line <​line>''​+== Error Handling == 
 +Error messages could be misleading. E.g. not passing an argument to ''​$func()''​ would result in a warning for a missing argument when calling ''​$func()''​ without any mention of ''​strpos()''​. One way to overcome this problem would be to have ''​class CurriedFunction extends Closure''​. This subclass would contain additional properties for a nicer the error message. It would even be possible to override error handling for ''​CurriedFunction::​__invoke()''​ to make it more specific. 
 + 
 +  ​* Bad error message: ''​Missing argument 1 for {closure}(),​ called in <​file>​ on line <​line>​ and defined in <​file>​ on line <​line>''​ 
 +  * Better error message: ''​Missing argument 1 for curried strpos(..., "​f"​),​ called in <​file>​ on line <​line>​ and defined in <​file>​ on line <​line>''​ 
 + 
 +Error handling for curried functions should be a little more strict in terms of "too many parameters"​. If somebody passed more parameters than defined in the curry statement, a warning should be thrown stating, that the additional parameters are ignored.
  
 ==== Notes  ==== ==== Notes  ====
rfc/currying.txt · Last modified: 2017/09/22 13:28 (external edit)