Trabalhando com programa de múltiplos arquivos no Haskell
Quando o projeto cresce, é comum dividir o código em arquivos menores (módulos) para uma melhor organização.
Para isso vou explicar passo a passo como configurar esse tipo de ambiente no Haskell.
1. Crie o arquivo de um módulo (Math.hs
)
module Math where
soma :: Int -> Int -> Int
soma x y = x + y
Importante
O nome do módulo (ex.:
Math
) deve corresponder ao nome do arquivo (Math.hs
).
A palavra module
define o nome do módulo (deve corresponder ao nome do arquivo, sem a extensão .hs
).
Note
Para projetos maiores, você pode usar submódulos como
MeuProjeto.Math
, colocando o arquivo emMeuProjeto/Math.hs
.
Funções como soma
podem ser exportadas e usadas em outros arquivos.
Por padrão, tudo no módulo é exportado. Para limitar, use:
module Math (soma) where
Aqui, apenas soma
será visível fora do módulo.
2. Arquivo principal (Main.hs
)
module Main where
import Math
main :: IO ()
main = print (soma 3 5)
import Math
traz as funções do módulo Math
para uso.
O módulo Main
é especial porque contém a função main
, o ponto de entrada.
3. Compilação
No terminal, na pasta do projeto:
$ ghc Main.hs
O GHC automaticamente encontra e compila Math.hs
por causa do import
.
Execute:
$ ./Main
Saída: 8