2015-02-16 11 views
7

Dlaczego często umieszcza się definicje klas i typów w specjalnym module Typy zamiast umieszczać je w odpowiadającym im przestrzeni nazw?Dlaczego ma się osobny moduł dla typów?

Na przykład, weźmy Config rekord z kodu źródłowego Yi. Dlaczego zdecydowano, aby zdefiniować go wewnątrz Yi.Types zamiast Yi.Config?

+4

Powiedziałbym, że często te typy mogą być wzajemnie zależne lub wymagają dużo importu. Łatwo jest po prostu zdefiniować kilka typów w module '.Types', a następnie ponownie je wyeksportować tam, gdzie ma to więcej sensu. – bheklilr

+0

Nie sądzę, że jest to "oparte głównie na opiniach", ponieważ jest wynikiem technicznych ograniczeń GHC. –

Odpowiedz

9

To prawie zawsze robi się, aby uniknąć zależności między cyklami. GHC radzi sobie z nimi bardzo słabo. Teoretycznie są dozwolone, ale mechanizm jest tak bolesny, że prawie zawsze ich unika.

+1

Czy mógłbyś rozwinąć? może przykład? – MasterMastic

+0

Wyszukaj "plik interfejsu (pliki .hi)" i "oddzielną kompilację" –

Powiązane problemy