Pilar är en populär form av abstrakt beräkning. Eftersom de är mer allmänna än monader, är de mer allmänt tillämpliga, och i synnerhet är en bra abstraktion för signalbehandling och dataflödesberäkningar. Framför allt utgör pilarna grunden för ett domänspecifikt språk som kallas Yampa, som har använts i en mängd olika konkreta tillämpningar, inklusive animering, robotik, ljudsyntes, styrsystem och grafiska användargränssnitt. Vårt främsta intresse är att bättre förstå den klass av abstrakta beräkningar som Yampa har fångat upp. Tyvärr är pilar inte tillräckligt konkreta för att göra detta med precision. För att råda bot på denna situation introducerar vi begreppet pendlande pilar som fångar en typ av icke-interferens egenskap av samtidiga beräkningar. Vi lägger också till en init operatör, och identifiera en viktig lag som fångar den kausala karaktären av pileffekter. Vi kallar den resulterande beräkningsmodell kausal pendlande pilar. För att studera denna klass av beräkningar mer i detalj, definierar vi en förlängning till den helt enkelt maskinskrivna lambda analys kallas kausala pendlande pilar (CCA), och studera dess egenskaper. Vårt viktigaste bidrag är identifieringen av en normal form för CCA som kallas kausal pendlande normal form (CCNF). Genom att definiera ett normaliseringsförfarande har vi utvecklat en optimeringsstrategi som ger dramatiska förbättringar i prestanda jämfört med konventionella implementeringar av pilar. Vi har implementerat denna teknik i Haskell, och genomfört riktmärken som validerar effektiviteten i vår strategi. I kombination med streamfusion kan den övergripande metoden resultera i en hastighetsökning på mer än två storleksordningar.
Causal Commutative Arrows (CCA) REF definierar en abstraktion av kausala strömtransformator, isomorphic till MSF s över Identity monaden.
Causal commutative arrows and their optimization
{'venue': 'ICFP', 'journal': None, 'mag_field_of_study': ['Computer Science']}