Statiska typfel är en vanlig stötesten för nykomlingar att skriva funktionella språk. Vi presenterar ett dynamiskt tillvägagångssätt för att förklara typfel genom att generera motexempel vittnesindata som illustrerar hur ett feltypat program går fel. Först, med tanke på en illa utformad funktion, kör vi symboliskt kroppen för att syntetisera vittnesvärden som gör att programmet går fel. Vi bevisar att vårt förfarande syntetiserar allmänna vittnen i att om ett vittne hittas, då för alla bebodda inmatningstyper, det finns värden som kan göra funktionen gå fel. För det andra visar vi hur man utökar ovanstående procedur för att producera ett reduktionsdiagram som kan användas för att interaktivt visualisera och felsöka vittnesutföranden. För det tredje, vi utvärderar täckningen av vår strategi på två datamängder som omfattar över 4.500 ill-typade studentprogram. Vår teknik kan generera vittnen för 88% av programmen, och vår minskning graf ger små motexempel för 81% av vittnena. Slutligen utvärderar vi om våra vittnen hjälper eleverna att förstå och rätta typfel, och finner att studenter som presenteras med våra vittnen visar en större förståelse av typfel än de som presenteras med ett standard felmeddelande.
REF presenterar ett tillvägagångssätt för att förklara typfel med hjälp av dynamiska vittnen, det vill säga syntetiserade ingångsvärden som illustrerar hur programmet kommer att gå fel.
Dynamic witnesses for static type errors (or, Ill-Typed Programs Usually Go Wrong)
{'venue': 'J. Funct. Program.', 'journal': 'J. Funct. Program.', 'mag_field_of_study': ['Computer Science']}