Den senaste tidens utveckling av den systematiska uppbyggnaden av abstrakta tolkar antydde möjligheten till en bred enande av begrepp i statisk analys. Vi levererar denna förening genom att visa sammanhangskänslighet, polyvarians, flödeskänslighet, nåbarhetsbeskärning, högkloning och kardinal-bundet att vara oberoende av någon särskild semantik. Monader blir ett förenande medel mellan dessa begrepp och mellan semantik. Till exempel, genom att koppla samma "kontext-insensitivitet monad" till en monadicallyparameterized semantik för Java eller för lambda kalkyl, ger det den förväntade kontext-okänslig analys. För att uppnå denna förening utvecklar vi en systematisk metod för att omvandla en betongsemantik till en monadiskparameteriserad abstrakt maskin. Ändra monaden ändrar beteendet hos maskinen. Genom att ändra monaden återvinner vi ett spektrum av maskiner – från den ursprungliga betongsemantiken till en monovariant, flödes- och kontextokänslig statisk analys med en enda trådig hög och svaga uppdateringar. Den monadiska parameteriseringen tyder också på en abstraktion över den allestädes närvarande monotona fastpunktsberäkningen som finns i statisk analys. Detta abstraktion gör det enkelt att instrumentera en analys med hög nivå strategier för att förbättra precision och prestanda, såsom abstrakt sophämtning och breddning. Medan själva papperet driver utvecklingen för att fortsätta passera stil, vår generiska genomförande replays det för direkt stil lambda-kalculus och Featherweight Java för att stödja generalitet.
REF visade att analysaspekter som kontextkänslighet, polyvarians och flödeskänslighet kan fångas upp av monader.
Monadic abstract interpreters
{'venue': "PLDI '13", 'journal': None, 'mag_field_of_study': ['Computer Science']}