map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b ¿Por qué tenemos tres funciones diferentes que hacen esencialmente lo
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b ¿Por qué tenemos tres funciones diferentes que hacen esencialmente lo
Acabo de comenzar un nuevo proyecto de Haskell y quería configurar un buen flujo de trabajo de prueba desde el principio. Parece que Haskell tiene muchas herramientas de prueba excelentes y únicas y muchas formas diferentes de integrarlas. He mirado en: HUnit Comprobación rápida press de...
¿Cómo se codificaría este fragmento de código C en un archivo .chs para que c2hs pueda transformarlo en algo relativamente agradable? typedef enum { MONOME_BUTTON_UP = 0x00, MONOME_BUTTON_DOWN = 0x01, MONOME_ENCODER_DELTA = 0x02, MONOME_ENCODER_KEY_UP = 0x03, MONOME_ENCODER_KEY_DOWN = 0x04,...
En F #, el uso del operador pipe-forward`` |>es bastante común. Sin embargo, en Haskell solo he visto cómo (.)se usa la composición de funciones,. Entiendo que están relacionados , pero ¿hay alguna razón lingüística por la que no se use pipe-forward en Haskell o es algo...
No estoy seguro de qué está causando este problema, pero en un proyecto que estoy construyendo, el compilador tarda horas en compilar un módulo. El tamaño total de mi base de código es 352KB, pero ninguno de los módulos tiene más de 10KB. Estoy usando un puerto nativo, pero es muy trivial; Solo...
En lenguajes funcionales puros como Haskell, ¿existe un algoritmo para obtener la inversa de una función, (editar) cuando es biyectiva? ¿Y hay una forma específica de programar su función para que sea
Mientras intentaba depurar un problema en mi programa (se dibujan 2 círculos con un radio igual en diferentes tamaños usando Gloss *), me encontré con una situación extraña. En mi archivo que maneja objetos, tengo la siguiente definición para unPlayer : type Coord = (Float,Float) data Obj = Player...
Estoy intentando asimilar la traversefunción de Data.Traversable. No puedo ver su sentido. Como vengo de un trasfondo imperativo, ¿alguien puede explicarme en términos de un bucle imperativo? Se agradecería mucho el pseudocódigo.
¿Qué es la mónada indexada y la motivación de esta mónada? He leído que es útil realizar un seguimiento de los efectos secundarios. Pero la firma tipográfica y la documentación no me llevan a ninguna parte. ¿Cuál sería un ejemplo de cómo puede ayudar hacer un seguimiento de los efectos...
La absurdfunción en Data.Voidtiene la siguiente firma, donde Voides el tipo lógicamente deshabitado exportado por ese paquete: -- | Since 'Void' values logically don't exist, this witnesses the logical -- reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a Sé suficiente lógica para...
¿Cómo puedo acceder a una lista por índice en Haskell, análogo a este código C? int a[] = { 34, 45, 56 }; return
En todos los lugares que he intentado usar map, también fmapha funcionado. ¿Por qué los creadores de Haskell sintieron la necesidad de una mapfunción? ¿No podría ser simplemente lo que se conoce actualmente fmapy fmappodría eliminarse del
Soy nuevo en la programación funcional y recientemente aprendí en Learn You a Haskell , pero cuando revisé este capítulo , me quedé atascado con el siguiente programa: import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber x = Writer (x, ["Got number: " ++ show x])...
¿Es posible escribir un módulo en Haskell, que reexporta un módulo además de exportar todo lo visible en su interior? Consideremos el siguiente módulo: module Test where import A f x = x Este módulo exporta todo lo definido en el interior, por lo que exporta fpero no reexporta nada...
Al leer este artículo clásico , estoy atrapado en paramorfismos. Desafortunadamente, la sección es bastante delgada y la página de Wikipedia no dice nada. Mi traducción de Haskell es: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) = f...
¿Cuáles son las posibilidades, si las hay, de obtener documentos sin conexión para las bibliotecas centrales de Haskell (y tal vez más)? A veces llevo mi computadora portátil a la cafetería donde no hay wifi, y sería bueno tener algo como Hoogle pero para uso sin conexión....
Estoy tratando de hacer que los tipos de visualización de ghci para mis bibliotecas sean lo más intuitivos posible, pero me encuentro con muchas dificultades al utilizar funciones de tipo más avanzadas. Digamos que tengo este código en un archivo: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE...
¿Cómo puedo borrar una pantalla de terminal después de que mi usuario ha seleccionado una opción del menú de mi aplicación?
Recientemente, he refactorizado dos veces el código para cambiar el orden de los parámetros porque había demasiado código donde me gustaban flipo \x -> foo bar x 42estaban ocurriendo hackeos . Al diseñar una firma de función, ¿qué principios me ayudarán a hacer el mejor uso del curado?...
Había creado un demonio que usaba una forma muy primitiva de ipc(telnet y enviar una cadena que tenía ciertas palabras en un orden determinado). Salí de él y ahora lo estoy usando JSONpara pasar mensajes a un Yesodservidor. Sin embargo, hubo algunas cosas que realmente me gustaron de mi diseño y no...