Playlists
$ stack new primeiro-projeto simple
$ cd primeiro-projeto
$ stack setup
$ stack build
$ stack exec primeiro-projeto
Os dois últimos comandos são referentes a compilação do projeto e execução.
O stack cria a seguinte estrutura de diretório:
module Main where -- indica que é o módulo principal
main :: IO ()
main = do -- início da função principal
putStrLn "hello world" -- imprime hello world
ghc-options: flags
ghc-options: -rtsopts -Wall -threaded -O2
Outras opções estão disponíveis no site GHC Flags.
Caso seu projeto seja organizado com múltiplos arquivos, será preciso seguir algumas regras:
Se sua estrutura de diretório está da seguinte forma:
src/Main.hs
src/Modulo.hs
src/Util/Modulo2.hs
Os nomes dos módulos deverão ser Main
, Modulo
e Util.Modulo2
, respectivamente.
O arquivo .cabal deve conter other-modues: Modulo, Util.Modulo2.
Para incluir bibliotecas externas em seu projeto, acrescente a linha build-depends: biblioteca no seu arquivo .cabal:
build-depends: base, random, mtl
Os módulos disponíveis podem ser encontrados no Hackage e no Stackage.
Para determinar a versão da biblioteca basta escrever a restrição logo após o nome: base >= 4.7 && < 5
.
Se você quiser especificar a versão do compilador, edite o arquivo stack.yaml e altere o valor do campos resolver seguindo a numeração em Stackage.
No site Hoogle você pode buscar por funções existentes em qualquer biblioteca publicada no Hackage tanto pelo nome, como pela assinatura.
Experimentem buscar por (a -> b) -> [a] -> [b]
.
Para os Windowzeiros de plantão!
Em ordem alfabética (e em ordem do melhor para o pior 🤣)
A melhor escolha!
If you must…
Estes slides foram preparados para os cursos de Paradigmas de Programação e Desenvolvimento Orientado a Tipos na UFABC.
Este material pode ser usado livremente desde que sejam mantidos, além deste aviso, os créditos aos autores e instituições.