Skip to content

flandrade/haskell-sin-mitos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Haskell

Haskell sin mitos

Haskell es recursivo y, por tanto, es ineficiente. Haskell es complicado. Haskell es un lenguaje de programación académico y no está listo para producción. ¿Te suena familiar? Estos son algunos de los mitos menos estrafalarios que acompañan a Haskell.

En esta charla repasaremos algunas de las ideas equivocadas con más resonancia. No sólo descubriremos la verdad detrás de estos mitos, sino que también discutiremos las ventajas y los retos de trabajar con Haskell.

Datos de la charla

Tema presentado el 26 de octubre de 2016, en Quito Lambda. La presentación está inspirada en la charla "Haskell is Not For Production and Other Tales" de Katie Oats.

Revisa la presentación completa aquí.

Mitos

  • Haskell es académico.
  • Haskell no es utilizado en la industria.
  • Haskell es difícil.
    • Haskell es difícil de contratar.
    • Elitismo.
    • Documentación.
  • Haskell no está listo para producción.
  • Haskell es la solución a todos los problemas.

Temas

  • ¿Por qué Haskell?
  • El legado de Haskell.

¿Por qué Haskell?

Razonar sobre el código.

  • Tipificado estáticamente:
userExist :: Int -> Int -> Bool
userExist userId groupId =  
newtype UserId = UserId  Int
newtype GroupId = GroupId  Int

userExist :: UserId -> GroupId -> Bool
userExist userId groupId =  

Pureza

  • Evitar errores:

En JavaScript podemos crear funciones que no cubren todos los casos:

function foo (num) {
  if (num>10) {
    return “JavaScript no es tan malo”
  } 
}

Esto provocará un error para un caso no cubierto:

console.log(foo(1).toUpperCase())
  • Seguridad:

En Haskell tenemos el tipo Maybe:

data Maybe = Just a | Nothing

Para el ejemplo anterior:

foo :: Integer -> Maybe String
foo num = 
  if num > 10 
    then Haskell es seguro
    else Nothing
bar num = 
  case foo num of 
    Just texto -> 
       String.toUpper texto 
    Nothing -> Ouch

Se debe cubrir todos los casos:

bar num = 
  case foo num of 
    Just texto -> 
       String.toUpper texto 

Error:

Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: Nothing

Licencia

MIT

Releases

No releases published

Packages

No packages published