map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Por que temos três funções diferentes que fazem essencialmente a mesma
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Por que temos três funções diferentes que fazem essencialmente a mesma
Acabei de começar um novo projeto Haskell e queria configurar um bom fluxo de trabalho de teste desde o início. Parece que Haskell tem muitas ferramentas de teste excelentes e exclusivas e muitas maneiras diferentes de integrá-las. Eu pesquisei: HUnit Checagem
Como alguém codificaria esse pedaço de código C em um arquivo .chs para que o c2hs pudesse transformá-lo em algo relativamente bom? typedef enum { MONOME_BUTTON_UP = 0x00, MONOME_BUTTON_DOWN = 0x01, MONOME_ENCODER_DELTA = 0x02, MONOME_ENCODER_KEY_UP = 0x03, MONOME_ENCODER_KEY_DOWN = 0x04,...
Em F #, o uso do operador pipe-forward,, |>é bastante comum. No entanto, em Haskell, eu só vi composição de funções,, (.)sendo usada. Eu entendo que eles estão relacionados , mas há um motivo de linguagem para que o pipe-forward não seja usado em Haskell ou é outra
Não tenho certeza do que está causando esse problema, mas em um projeto, estou construindo, o compilador está levando horas apenas para compilar um módulo. O tamanho total da minha base de código é 352 KB, mas nenhum dos módulos tem mais de 10 KB. Estou usando uma porta nativa, mas é muito trivial;...
Em linguagens puramente funcionais como Haskell, existe um algoritmo para obter o inverso de uma função, (editar) quando ela é bijetiva? E existe uma maneira específica de programar sua função
Estou tentando e falhando em grocar a traversefunção de Data.Traversable. Não consigo ver seu ponto. Visto que venho de um background imperativo, alguém pode me explicar em termos de um loop imperativo? O pseudo-código seria muito apreciado.
Ao tentar depurar um problema em meu programa (2 círculos com raio igual estão sendo desenhados em tamanhos diferentes usando o Gloss *), me deparei com uma situação estranha. Em meu arquivo que manipula objetos, tenho a seguinte definição para um Player: type Coord = (Float,Float) data Obj =...
O que é mônada indexada e a motivação para essa mônada? Eu li que ajuda a controlar os efeitos colaterais. Mas a assinatura do tipo e a documentação não me levam a lugar nenhum. Qual seria um exemplo de como pode ajudar a controlar os efeitos colaterais (ou qualquer outro exemplo...
Como posso acessar uma lista por índice em Haskell, análogo a este código C? int a[] = { 34, 45, 56 }; return
Onde quer que eu tentei usar map, fmaptem funcionado bem. Por que os criadores de Haskell sentiram a necessidade de uma mapfunção? Não poderia ser apenas o que é conhecido atualmente fmape fmappoderia ser removido da
A absurdfunção in Data.Voidtem a seguinte assinatura, onde Voidé o tipo logicamente inabitado exportado por esse pacote: -- | Since 'Void' values logically don't exist, this witnesses the logical -- reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a Eu conheço lógica suficiente para...
Eu sou novo em programação funcional e recentemente aprendi em Learn You a Haskell , mas quando li este capítulo , fiquei preso no programa abaixo: import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber x = Writer (x, ["Got number: " ++ show x]) multWithLog :: Writer...
Lendo este artigo clássico , estou preso em paramorfismos. Infelizmente, a seção é bem estreita e a página da Wikipedia não diz nada. Minha tradução de Haskell é: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) = f x xs (h xs) Mas eu...
É possível escrever um módulo em Haskell, que reexporta um módulo além de exportar tudo o que está visível dentro dele? Vamos considerar o seguinte módulo: module Test where import A f x = x Este módulo exporta tudo o que está definido dentro, então ele exporta, fmas não reexporta nada...
Quais são as possibilidades, se houver, de obter documentos offline para bibliotecas centrais Haskell (e talvez mais)? Às vezes levo meu laptop para a cafeteria onde não há wi-fi, e seria bom ter algo como Hoogle, mas para uso
Como posso limpar uma tela de terminal depois que meu usuário selecionar uma opção do menu do meu
Refatorei recentemente o código duas vezes para alterar a ordem dos parâmetros porque havia muito código onde os hacks gostavam flipou \x -> foo bar x 42estavam acontecendo. Ao projetar uma assinatura de função, quais princípios me ajudarão a fazer o melhor uso do currying?...
Eu tinha feito um daemon que usava uma forma muito primitiva de ipc(telnet e enviar uma String que tinha certas palavras em uma determinada ordem). Eu saí dessa situação e agora estou usando JSONpara passar mensagens para um Yesodservidor. No entanto, houve algumas coisas que realmente gostei no...
Estou tentando tornar os tipos de exibição de ghci para minhas bibliotecas o mais intuitivos possível, mas estou encontrando muitas dificuldades ao usar recursos de tipo mais avançados. Digamos que eu tenha este código em um arquivo: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-#...