Articles of haskell

Lambda para expresiones de tipo en Haskell?

¿Haskell, o un comstackdor específico, tiene algo así como lambdas de nivel de tipo (si es incluso un término)? Para dar más detalles, digamos que tengo un tipo parametrizado Foo ab y quiero que Foo _ b sea ​​una instancia de, digamos, Functor. ¿Hay algún mecanismo que me permita hacer algo similar a instance Functor […]

Progtwigción orientada a objetos en Haskell

Estoy tratando de comprender la progtwigción de estilo orientado a objetos en Haskell, sabiendo que las cosas van a ser un poco diferentes debido a la falta de mutabilidad. He jugado con clases de tipo, pero mi comprensión de ellas está limitada a ellas como interfaces. Así que he codificado un ejemplo de C ++, […]

¿Por qué Haskell no secuencia estas acciones IO correctamente?

Un amigo mío me preguntó por qué estaba aprendiendo Haskell. Para demostrar el poder de Haskell, escribí un pequeño progtwig que mostraba una lista de números primos: main = do putStr “Enter the number of prime numbers to display: ” number Bool isPrime n = not . any ((== 0) . mod n) $ [2..floor […]

¿Por qué TypeSynonymInstances no permite que se utilicen sinónimos de tipo aplicados parcialmente en los cabezales de instancia?

Sé que TypeSynomymInstances solo permite que se usen sinónimos de tipo completamente aplicados en los encabezados de instancia , pero parece que sería útil si pudiera usar sinónimos de tipo aplicados paritalmente para usarlos también. Por ejemplo: class Example e where thingy :: a -> b -> eab — legit, but awkward newtype FuncWrapper eab […]

Acerca de `let 5 = 10`

Si digo que let 5 = 10 , ¿por qué 5 + 1 devuelve 6 lugar de 11 ?

Muestreo de secuencias de números aleatorios en Haskell

Necesito pequeñas listas de números aleatorios gaussianos para una simulación, así que probé lo siguiente: import System.Random seed = 10101 gen = mkStdGen seed boxMuller mu sigma (r1,r2) = mu + sigma * sqrt (-2 * log r1) * cos (2 * pi * r2) Este es solo el algoritmo Box-Muller: dados los números aleatorios […]

¿Qué ventaja nos da Monad sobre un Aplicativo?

He leído este artículo , pero no entendí la última sección. El autor dice que Monad nos da sensibilidad al contexto, pero es posible lograr el mismo resultado utilizando solo una instancia Aplicable: let maybeAge = (\futureYear birthYear -> if futureYear < birthYear then yearDiff birthYear futureYear else yearDiff futureYear birthYear) (readMay futureYearString) (readMay birthYearString) […]

DatatypeContexts obsoleto en el último GHC: ¿por qué?

Estaba haciendo algo de desarrollo de Haskell y recompuse un código viejo en una nueva versión de GHC: The Glorious Glasgow Haskell Comstacktion System, version 7.2.1 Y cuando lo hice, recibí el siguiente error: Advertencia: -XDatatypeContexts está en desuso: se lo consideró una mala denominación, y se ha eliminado del lenguaje Haskell. Eso aparece cuando […]

¿Qué personajes están permitidos para los operadores de Haskell?

¿Hay una lista completa de caracteres permitidos en alguna parte, o una regla que determina qué se puede usar en un identificador frente a un operador?

Generando números de Fibonacci en Haskell?

En Haskell, ¿cómo puedo generar números de Fibonacci basados ​​en la propiedad de que el enésimo número de Fibonacci es igual al (n-2) número de Fibonacci más el (n-1) número de Fibonacci? He visto esto: fibs :: [Integer] fibs = 1 : 1 : zipWith (+) fibs (tail fibs) Realmente no entiendo eso, o cómo […]