2014-11-13 5 views
7

Sono un principiante di haskell e di recente ho letto sull'analisi della severità su the haskell wiki. GHC user's guide legge:Come dire se la severità è in realtà dedotta da GHC?

L'analizzatore severità capisce quando argomenti e variabili in funzione possono essere trattate 'strettamente' (cioè sono sempre valutati in funzione a un certo punto).

Ho letto anche quando si può inferire la rigidità, in generale. Tuttavia, come principiante, non sono sempre sicuro che ghc tratti effettivamente il mio pezzo di codice, che ho inteso per essere rigoroso,.

Attualmente, non ho altro modo per scoprire se è in atto un'analisi rigorosa piuttosto che alimentare il programma con grandi dati.

C'è un modo per chiedere a ghc se può dedurre un dato codice per essere severi?

+0

Se hai un esempio di un'espressione a cui sei interessato, pubblicalo e possiamo mostrarti come metterlo in atto. – ErikR

+0

@ user5402 Grazie per la gentilezza. Il problema qui non riguarda alcun codice specifico, ma invierò una domanda qui quando ne incontrerò uno. È bello sapere che qualcuno mi ha dato le spalle e dove cercare aiuto :) – Yosh

risposta

8

L'unico modo in cui ho visto verificare effettivamente che GHC ha inferito severità è leggere una rappresentazione intermedia del programma compilato chiamato Core.

Alcune risorse per imparare a leggere l'output core:

Tuttavia, un altro approccio è quello di raccontare semplicemente GHC che le espressioni devono essere valutate rigorosamente, per esempio, da utilizzando l'estensione della lingua BangPatterns o la funzione seq.

Problemi correlati