Articles of haskell

O que é o Stream Fusion do Haskell?

O que é o Stream Fusion do Haskell e como usá-lo?

Como criar uma function haskell polyvariadic?

Eu preciso de uma function que leva um número arbitrário de argumentos (todos do mesmo tipo), faz algo com eles e depois retorna um resultado. Uma lista de argumentos é impraticável no meu caso específico. Ao examinar as haskell libs, vi que a function printf (do módulo Text.Printf ) usa um truque semelhante. Infelizmente, não […]

Melhor exceção para padrões não exaustivos no caso de

Existe uma maneira de fazer com que o GHCi produza melhores mensagens de exceção quando encontra no tempo de execução que uma chamada produziu um valor que não corresponde à correspondência de padrões da function? Atualmente, ele fornece os números de linha da function que produziram a correspondência de padrão não exaustiva que, embora útil […]

Exemplo concreto mostrando que as mônadas não são fechadas sob a composição (com prova)?

É bem conhecido que os functores aplicativos são fechados sob a composição, mas as mônadas não são. No entanto, tenho tido dificuldade em encontrar um contra-exemplo concreto que mostre que as mônadas nem sempre compõem. Esta resposta dá a [String -> a] como um exemplo de uma não-mônada. Depois de brincar um pouco com isso, […]

lentes, fclabels, acessador de dados – qual biblioteca para access à estrutura e mutação é melhor

Existem pelo menos três bibliotecas populares para acessar e manipular campos de registros. Os que eu conheço são: data-accessor, fclabels e lentes. Pessoalmente eu comecei com o acessador de dados e estou usando-os agora. No entanto, recentemente, no haskell-cafe, havia uma opinião de que os fclabels eram superiores. Portanto, estou interessado na comparação dessas três […]

Como essa function de fibonacci é memoizada?

Por qual mecanismo essa function de fibonacci é memoizada? fib = (map fib’ [0..] !!) where fib’ 1 = 1 fib’ 2 = 1 fib’ n = fib (n-2) + fib (n-1) E em uma nota relacionada, por que esta versão não é? fib n = (map fib’ [0..] !! n) where fib’ 1 = […]

Existem nomes pronunciáveis ​​para operadores comuns do Haskell?

Estou lendo Learn You a Haskell para Great Good , e nunca sei como pronunciar os operadores Haskell. Eles têm nomes “reais”? ? Por exemplo, como você lê em voz alta uma expressão como essa? Just (+3) Just 9 Eu sei que >>= é “bind”, mas e os outros? Como o Google não leva em […]

Definindo uma function por equações com diferentes números de argumentos

Eu notei hoje que tal definição safeDivide x 0 = x safeDivide = (/) não é possível. Estou apenas curioso para saber qual é a (boa) razão por trás disso. Deve haver um muito bom (é Haskell depois de tudo :)). Nota: Eu não estou procurando sugestões para implementações alternativas para o código acima, é […]

Como definir uma function no ghci em várias linhas?

Eu estou tentando definir qualquer function simples que abrange várias linhas no ghci, tome o seguinte como um exemplo: let abs n | n >= 0 = n | otherwise = -n Até agora eu tentei pressionar Enter após a primeira linha: Prelude> let abs n | n >= 0 = n Prelude> | otherwise […]

Produto cartesiano de 2 listas em Haskell

Eu gostaria de produzir o produto cartesiano de 2 listas em Haskell, mas não posso descobrir como fazê-lo. O produto cartesiano fornece todas as combinações dos elementos da lista: xs = [1,2,3] ys = [4,5,6] cartProd :: [a] -> [b] -> [(a,b)] cartProd xs ys ==> [(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)] Esta não é uma questão real de lição […]