Sto lavorando ad un progetto haskell in cui le impostazioni si trovano attualmente in un file chiamato Setting.hs
, quindi vengono verificate durante la compilazione e sono accessibili a livello globale.Passaggio dalla configurazione statica alla configurazione dinamica
Tuttavia, poiché questo è un po 'troppo statico, stavo considerando di leggere la configurazione durante il runtime. Il codebase è enorme e sembra che sarebbe un notevole sforzo passare l'impostazione, ad es. come argomento attraverso l'intero flusso del programma, dal momento che possono essere arbitrariamente accessibili da qualsiasi luogo.
Esistono modelli di progettazione, librerie o anche estensioni ghc che possono aiutare qui senza dover refactoring dell'intero codice?
Gli argomenti impliciti o la monade del lettore sono scelte comuni, ma richiedono alcuni cambiamenti. – chi
Dai un'occhiata a [Configurazioni implicite - o, le classi di tipi riflettono i valori dei tipi] (http://okmij.org/ftp/Haskell/types.html#Prepose), se potesse essere d'aiuto. –
Espansione sul commento di @Petr Pudlák, è possibile trovare un'implementazione di configurazioni implicite nel pacchetto 'reflection'. Nella cartella degli esempi dal repository c'è un esempio di tipo "lettore" che sembra pertinente: https://github.com/ekmett/reflection/blob/master/examples/ReaderLike.hs. Vedi anche questa risposta SO per un esempio di utilizzo: http://stackoverflow.com/a/29929718/1364288 – danidiaz