Paquetes, módulos e importación en Haskell

Soy nuevo en Haskell. ¿Alguien explicaría amablemente cómo funciona la organización de códigos en Haskell? Hasta la fecha, he escrito todo en un gran archivo largo y probado el código de GHCi. Quiero comenzar a escribir pruebas y refactorizar mi código en unidades lógicas. Hay partes y piezas sobre cómo hacer esto en muchos lugares, pero nada exhaustivo.

Por favor, explique cómo funcionan los paquetes, los módulos y la declaración de importación y luego dígame cómo usarlos para organizar el código en un proyecto más grande, basado en pruebas.

Respuestas a la pregunta(1)

Su respuesta a la pregunta