Skip to content
forked from ramda/ramda

ūüźŹ Practical functional Javascript

License

Notifications You must be signed in to change notification settings

RafaCalderonR/ramda

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ramda

Una biblioteca funcional practica para desarrolladores Javascript.

Build Status npm module dependencies Gitter

¬ŅPor qu√© Ramda?

Ya hay varias bibliotecas excelentes con un sabor funcional. Por lo general, est√°n destinadas a ser herramientas de uso general, adecuadas para trabajar en m√ļltiples paradigmas.Ramda tiene un objetivo m√°s centrado. Queriamos una biblioteca dise√Īada especificamente para un estilo de programaci√≥n funcional, una que nunca mute los datos del usuario.

¬ŅCual es la diferencia?

Las principales características distintivas de Ramda son:

  • Ramda enfatiza el estilo funcional m√°s puro. Inmutabilidad y funciones sin efectos secundarios son el coraz√≥n de su filosof√≠a. Esto te ayudara a hacer el trabajo de manera simple y elegante

  • Las funciones Ramda implementan autom√°ticamente el Currying. Esto te permitir√° crear f√°cilmente nuevas funciones a partir de las antiguas al no tener la necesidad de proporcionar parametros finales.

  • Los par√°metros para las funciones de Ramda est√°n organizados para que sea conveniente para el currying, los datos generalmente se suministra en √ļltimo lugar.

Los dos √ļltimos puntos juntos hacen que sea muy f√°cil construir funciones como secuencia de funciones m√°s simples, cada una de las cuales transforma los datos y los pasa al siguiente. Ramda esta dise√Īado para admitir este estilo de codificaci√≥n.

Introducción

Filosofía

Usar Ramda debería parecerse a usar Javascript. Es práctico, Javascript funcional. No estamos presentando expresiones lambda en cadena, no estamos presentando consed lists, ni estamos transfiriendo todas las funciones de Clojure.

Nuestras estructuras de datos básicas son objetos Javascript simples, y nuestras colecciones habituales son matrices de Javascript. También mantenemos otras características nativas de Javascript, como funciones como objetos con propiedades.

La programación funcional es en buena parte sobre objetos inmutables y funciones sin efectos secundarios. Si bien Ramda no impone esto, sí permite que este estilo tenga la menos fricción posible.

Nuestro objetivo es una implementación limpia y elegante, pero la es el rey. Sacrificamos una gran cantidad de elegancia de implementación por una API más limpia.

Por √ļltimo, pero no menos importante, Ramda se esfuerza por el rendimiento. Una implementaci√≥n r√°pida y confiable gana a cualquier noci√≥n de pureza funcional.

Instalación

Para usar con node:

$ npm install ramda

Luego en la consola:

const R = require('ramda');

Para usar directamente en el navegador:

<script src="path/to/yourCopyOf/ramda.js"></script>

o la versión minificada:

<script src="path/to/yourCopyOf/ramda.min.js"></script>

o de un CDN, o cdnjs:

<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

o unos de los siguientes enlaces de jsDelivr:

<script src="//cdn.jsdelivr.net/npm/ramda@0.25.0/dist/ramda.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/ramda@0.25/dist/ramda.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/ramda@latest/dist/ramda.min.js"></script>

(tenga en cuenta que el uso de las ultimas versiones supone un riesgo significativo, los cambios de la API pueden romper su código.)

Estas etiquetas de script agregan la variable R en el alcance global del navegador.

O puede inyectar ramda en pr√°cticamente cualquier sitio web utilizando the bookmarklet.

Nota para versiones > 0.25

Las versiones de Ramda > 0.25 no tiene una exportac√≠on predeterminada. Entonces, en lugar de import R from 'ramda';, uno tiene que usar import * as R from 'ramda'; O mejor a√ļn, importe solo las funciones requeridas a trav√©s de import { functionName } from 'ramda';

Build

npm run build crea directorios es, src y actualiza dist/ramda.js and dist/ramda.min.js

Partial Builds

Es posible construir Ramda con un subconjunto de la funcionalidad para reducir su tama√Īo. El sistema de compilaci√≥n de Ramda lo admite con banderas de comando. Por ejemplo si est√°s usando R.compose, R.reduce, y R.filter tu puedes crear una compilaci√≥n parcial con:

npm run --silent partial-build compose reduce filter > dist/ramda.custom.js

Esto requiere tener Node/io.js instalado y las dependencias de ramda instaladas (use npm install antes de ejecutar la compilación parcial.).

Instalar funciones específicas

Instalar funciones individuales cont bit, npm and yarn sin intalar toda la biblioteca

Documentación

Por favor, revise API documentacion.

Tambien disponible nuestro Cookbook de funciones creadas a partir de Tamda que puede resultarte √ļtiles.

El nombre

Ok.. nos gustan las ovejas. eso es todo. Es un nombre corto, aun no pillado. Podría haber sido eweda, pero entonces estaríamos obligados a decir eweda lamb!, y nadie quiere eso.

Ejecutando Test Suite

Consola:

Para ejecutar las pruebas desde consola, tu necesitas tener instalado mocha:

npm install -g mocha

Desde la raíz del proyecto, puedes llamar:

mocha

Alternativamente, si ha instalado las dependencias, a través de:

npm install

Entonces puede ejecutar las pruebas(y obtener resultados) ejecutando:

npm test

Navegador:

Puedes usar testem para prueba en diferentes navegadores (incluso headlessly), con livereloading de pruebas. Instale testem (npm install -g testem) and ejecuta testem. Abre el enlace proporcionado en su navegador y ver√° los resultados en su terminal.

Si tienes PhantomJS instalado, tu puedes ejecturar simplemente testem -l phantomjs.

Uso

Para v0.25 y superiores, importe toda la biblioteca o elija los módulos ES directamente desde la biblioteca:

import * as R from 'ramda'

const {identity} = R
R.map(identity, [1, 2, 3])

Desestructurar las importaciones de ramda * no necesariamente impide importar toda la biblioteca *. Puede seleccionar manualmente métodos como los siguientes, que solo tomarían las partes necesarias para que identity funcione:

import identity from 'ramda/src/identity'

identity()

Sin embargo, los m√©todos cherry-picking son engorrosos. La mayoria de los bundlers como Webpack and Rollup ofrecen tree-shaking como una manera de borrar codios no usados y disminuir el tama√Īo del bundle, pero su rendimiento var√≠a, discutido aqu√≠. Aqu√≠ hay un resumen de la configuraci√≥n √≥ptima basada en la tecnolog√≠a que est√° utilizando:

  1. Webpack + Babel - use babel-plugin-ramda to automatically cherry pick methods. Discussion here, example here
  2. Webpack only - use UglifyJS plugin for treeshaking along with the ModuleConcatenationPlugin. Discussion here, with an example setup here
  3. Rollup - does a fine job properly treeshaking, no special work needed; example here

Typings

Traducciones

Agradecimientos

Gracias a J. C. Phillipps por el logo de Ramda. Ramda logo artwork © 2014 J. C. Phillipps. Licensed Creative Commons CC BY-NC-SA 3.0.

About

ūüźŹ Practical functional Javascript

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.7%
  • Other 0.3%