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.
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í.
- 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.
- ¿Por qué Haskell?
- El legado de Haskell.
- 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 = …
- 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
MIT