2012-01-28 2 views
8

Ho bisogno di un modo rapido (1000 di tipi di controllo al secondo) per il codice sorgente Haskell generato da typecheck.Codice generato in Typecheck che accede al codice caricato in modo dinamico in Haskell

Abbiamo provato hint che era abbastanza veloce tranne che non può accedere al codice caricato dinamicamente a meno che il codice sorgente sia disponibile che non avremmo in alcuni casi. Forse c'è un modo per registrare il codice caricato dinamicamente come un pacchetto o qualcosa dal momento che il suggerimento può accedere ai pacchetti registrati che sembra?

Abbiamo provato a utilizzare ghc api, ma sembra che i file siano su disco e tutto il file IO richiesto lo rende troppo lento.

Possiamo utilizzare haskell-src-exts per generare il codice, ma è necessario digitarlo di nuovo.

+1

forse si potrebbe andare con la soluzione api GHC e mettere tutto il necessario in un disco ram? – monk

+0

Questa è un'applicazione da distribuire agli utenti finali, quindi non ho il controllo sulla loro configurazione di sistema. – mentics

+2

sarebbe possibile alimentare i descrittori di file aC GHC invece della posizione del file? Quindi non sarebbe difficile evitare di parlare con il disco per il contenuto (che presumo tu abbia nella ram) –

risposta

0

Migliaia di tipi di assegni al secondo non sembrano fattibili in sequenza - li stai facendo contemporaneamente, con qualche speranza per il parallelismo, spero?

E presumo che tu stia supportando l'intero sistema di tipo GHC? Quindi un correttore di tipo ridotto (ad esempio THIH non è sufficiente).

  • Usa GHC-api, con bytecode e nessuna ottimizzazione
  • cache intero contenuto della memoria
  • Invia modifiche al GHC per garantire che possa prendere le DF dal buffer di memoria, se necessario
+0

In realtà, Hint ci stava dando almeno mille al secondo, penso. Ma non avrebbe funzionato con il codice dell'oggetto, quindi ha dovuto trovare una soluzione diversa. Tuttavia, un'altra soluzione è aggirare il "sequenzialmente" che hai citato: metti tutti i tipi di tipografia necessari in un singolo file e digita il controllo solo una volta. Può essere un po 'complicato tradurre i messaggi di errore, ma sembrava funzionare bene per le cose semplici che stavamo provando. – mentics

+0

"mille al secondo" - ma dipende dal programma - e ci sono alcuni programmi che fanno sì che il correttore di tipi non si interrompa ... –