Entradas

Mostrando las entradas etiquetadas como functions

Sabes programar en javascript...Y?

"Puedo escribir las funciones menos tristes esta noche." picanteverde Despues de tanto tiempo sin traerles nada divertido al blog, he decidido volver porque por suerte ahora tengo un trabajo donde puedo aprender cosas nuevas para traer por aca. Hoy vamos a hablar de Y combinator (me encantaría escribir este post en ingles pero lo voy a hacer en castellano para contribuir un poco a la poquisima cantidad de articulos (de buen javascript) en este idioma). Qué es el combinador Y? Ademas de ser una empresa de Capital de riesgo de inversión y un operador matemático (por dios que estas leyendo) tambien conocido como Fixed Point Combinator es uno de los artilugios más fascinantes de la ciencia de la computación y es muy simple de explicar (eso es mentira). El Combinador Y es una funcion de alto orden que calcula el punto fijo (fixed point) de otra funcion. Si no entendiste nada vamos por partes. El punto fijo (fixed point) de una función f es un valor x tal que: f(x)=x Por ejemplo...

currying functions

Currando funciones en javascript ja, esto es un tema avanzado asi que a todos los que se aburren mucho con mis otros post les comento que este les va a encantar. que son las curried functions. Simple son funciones que si reciben menos paramtros de los que deberian recibir simplemente se compilan a si mismas con los parametros que recibieron y devuelven una función que solo necesita un parametro para terminar su ejecución. Veamos un ejemplo simple supongamos que la funcion myFunc suma dos parametros alert(myFunc(2,2)); // devuelve 4 var adds4 = myFunc(4); // adds4, es ahora una función, // que le suma 4, a lo que reciba de argumento. alert(adds4(5)); // devuelve 9. bien ahora veamos como implementar esta funcion function add(a, b) { if (arguments.length return add; } else if (arguments.length return function(c) { return a + c } } else { return a + b; } } No es mucho mas complicada, pero t...

Como programar en Javascript

Javascript es un lenguaje funcional esto implica que sus construcciones de codigo son simplemente funciones. Pero no implica que solamente se pueda programar en formato funcional ya que podemos aplicar muchos paradigmas. Como por Ejemplo el paradigma orientado a objetos. Como dijimos antes EN JAVA SCRIPT TODO ES UN OBJETO, inclusive las funciones, pero no existen las clases, y esto nos presenta una dificultad como trabajar con el paradigma orientado a objetos. supongamos que necesitamos crear una persona con dos miembros, un nombre y un apellido, y un metodo hablar que nos alertará el nombre y el apellido. veamos como hacer esto function persona (pNombre, pApellido){ this.nombre = pNombre; this.apellido= pApellido; } persona.prototype.hablar = function (){ alert(this.apellido + ", " + this.nombre); } var a = new persona("picante","verde"); a.hablar(); funcamentalmente entendamos una cosa, function persona (pNombre, pApellido){ ... } es un ataj...

Funciones Lambda

Despues de mi post de closures sentí que debería haber explicado un poco de funciones lambda antes y su funcionalidad, el nombre lambda viene del calculo lambda que es una teoría matematica tan complicada que excede el alcance de este post, este blog y este autor asi que les dejo la tarea de investigación a ustedes. Basicamente son funciones sin nombre, pero en javascript esto tiene mucha mayor profundidad, ya que lo que sucede en realidad es que EN JAVASCRIPT TODO ES UN OBJETO y me gustaría que eso quede claro por eso lo voy a repetir EN JAVASCRIPT TODO ES UN OBJETO , entonces hasta las funciones son objetos. Por tanto es indistinto escribir cualquiera de las dos declaraciones de funciones siguientes. function FuncX(){ return "x"; } var FuncY = function (){ return "y"; } de esta forma podemos ver que podemos asignar una funcion a una variable y siempre que declaramos funciones implicitamente estamos declarando variables con el nombre de la funcion. para ...

Closures

Las closures son una parte vital del paradigma de Programación Funcional asi que vamos a darle una pequeña mirada a este concepto para aclarar las cosas un poco. Una closure es cuando definimos una funcion esta tiene acceso a las variables del entorno donde fue definida. Aun si la ejecución de ese entorno finalizó. Veamos un ejemplo porque estoy seguro que nadie entendio nada ja. function outer(c, d) { var e = c * d; function inner(a, b) { return (e * a) + b; } return inner(2, 1); } como pueden ver en este simple ejemplo definimos una función dentro de otra sin embargo podemos ver que la funcion inner tiene acceso a la variable e que fue definida fuera de la funcion. entonces si llamamos la funcion outer(3,2) // returns 13 ahora veamos a que me refiero con que no importa si la funcion outter ya finalizó su ejecución. function crearFuncion(c){ var a=3; var b=4; var func = function(x){ return a*b*c*x; } return f...

Beyond JS

Ahora que ya he dedicado mi (segundo) primer Post del blog a Douglas quisiera comentarles sobre esta libreria muy poco conocida que encontré en la red, se llama Beyond JS y aunque no es una libreria que utilizaría dia a dia realmente me dejó pensando. aqui un Ejemplo de su utilización para que se deleiten document.body.onmousemove = Function.from("star", "moveTo").delay(1000).using( "+".using( Function.from(event, ×), "*".using("radius", Function.from(Math, "sin", "angle"))), "+".using( Function.from(event, "y"), "*".using("radius", Function.from(Math, "cos", "angle"))) ).curry({ radius: 30, angle: function() {return (new Date)/50;}.asValue() Como pueden ver hace arto uso de function Chaining (que conocí gracias a jquery ) y además obtiene las referencias a funciones a las funciones mediante el Function.from el resto la verdad que requiere...