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 em MeuProjeto/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

Referências