Vi utforskar utformningen och genomförandet av Frank, ett strikt funktionellt programmeringsspråk med ett dubbelriktat effektsystem utformat från grunden kring en ny variant av Plotkin och Pretnars effekthanterares abstraktion. Effekthanterare ger en abstraktion för modulär effektiv programmering: en hanterare fungerar som tolk för en samling kommandon vars gränssnitt är statiskt spårade av typsystemet. Frank eliminerar dock behovet av en ytterligare effekthanteringskonstruktion genom att generalisera själva den funktionella abstraktionens grundläggande mekanism. En funktion är helt enkelt ett specialfall av en Frank operatör som inte tolkar några kommandon. Dessutom kan Franks operatörer vara multihandlers som samtidigt tolkar kommandon från flera källor på en gång, utan att störa den direkta stilen av funktionell programmering med värden. Effektskrivning i Frank använder en ny form av effekt polymorfism som undviker att nämna effektvariabler i källkod. Detta uppnås genom att sprida en omgivande förmåga inåt i stället för att ackumulera unioner av potentiella effekter utåt. Vi presenterar Frank till exempel och ger sedan en formell redogörelse för Franks typsystem och dess semantik. Vi introducerar Core Frank genom att utveckla Frank operatörer till funktioner, caseuttryck, och unary handlers, och sedan ge en ljud liten steg operativ semantik för Core Frank. Programmering med effekter och hanterare är i sin linda. Vi bidrar med en undersökning av framtida möjligheter, särskilt i kombination med andra former av rika typsystem.
-Frank REF är ett programmeringsspråk med effekthanterare men ingen separat funktionsbegrepp: en funktion är bara ett specialfall av en hanterare.
Do be do be do
{'venue': 'POPL 2017', 'journal': None, 'mag_field_of_study': ['Computer Science']}