{"id":"https://openalex.org/W2752454259","doi":"https://doi.org/10.1145/3110249","title":"Faster coroutine pipelines","display_name":"Faster coroutine pipelines","publication_year":2017,"publication_date":"2017-08-29","ids":{"openalex":"https://openalex.org/W2752454259","doi":"https://doi.org/10.1145/3110249","mag":"2752454259"},"language":"en","primary_location":{"id":"doi:10.1145/3110249","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3110249","pdf_url":"http://dl.acm.org/ft_gateway.cfm?id=3110249&type=pdf","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"bronze","oa_url":"http://dl.acm.org/ft_gateway.cfm?id=3110249&type=pdf","any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5109566571","display_name":"Michael Z. Spivey","orcid":null},"institutions":[{"id":"https://openalex.org/I40120149","display_name":"University of Oxford","ror":"https://ror.org/052gg0110","country_code":"GB","type":"education","lineage":["https://openalex.org/I40120149"]}],"countries":["GB"],"is_corresponding":true,"raw_author_name":"Michael Spivey","raw_affiliation_strings":["University of Oxford, UK"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Oxford, UK","institution_ids":["https://openalex.org/I40120149"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5109566571"],"corresponding_institution_ids":["https://openalex.org/I40120149"],"apc_list":null,"apc_paid":null,"fwci":0.8324,"has_fulltext":true,"cited_by_count":5,"citation_normalized_percentile":{"value":0.80867978,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":89,"max":98},"biblio":{"volume":"1","issue":"ICFP","first_page":"1","last_page":"23"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9988999962806702,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9988999962806702,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9987999796867371,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10142","display_name":"Formal Methods in Verification","score":0.9919000267982483,"subfield":{"id":"https://openalex.org/subfields/1703","display_name":"Computational Theory and Mathematics"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8408907055854797},{"id":"https://openalex.org/keywords/pipeline-transport","display_name":"Pipeline transport","score":0.7815608978271484},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.7067670822143555},{"id":"https://openalex.org/keywords/pipeline","display_name":"Pipeline (software)","score":0.6838459968566895},{"id":"https://openalex.org/keywords/streams","display_name":"STREAMS","score":0.5823382139205933},{"id":"https://openalex.org/keywords/process","display_name":"Process (computing)","score":0.5622715353965759},{"id":"https://openalex.org/keywords/structuring","display_name":"Structuring","score":0.5509396195411682},{"id":"https://openalex.org/keywords/implementation","display_name":"Implementation","score":0.5472027659416199},{"id":"https://openalex.org/keywords/block","display_name":"Block (permutation group theory)","score":0.4996657371520996},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.49088603258132935},{"id":"https://openalex.org/keywords/continuation","display_name":"Continuation","score":0.4744913578033447},{"id":"https://openalex.org/keywords/distributed-computing","display_name":"Distributed computing","score":0.38733792304992676},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.3283435106277466},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.1597740352153778},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.13274890184402466}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8408907055854797},{"id":"https://openalex.org/C175309249","wikidata":"https://www.wikidata.org/wiki/Q725864","display_name":"Pipeline transport","level":2,"score":0.7815608978271484},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.7067670822143555},{"id":"https://openalex.org/C43521106","wikidata":"https://www.wikidata.org/wiki/Q2165493","display_name":"Pipeline (software)","level":2,"score":0.6838459968566895},{"id":"https://openalex.org/C42090638","wikidata":"https://www.wikidata.org/wiki/Q4048907","display_name":"STREAMS","level":2,"score":0.5823382139205933},{"id":"https://openalex.org/C98045186","wikidata":"https://www.wikidata.org/wiki/Q205663","display_name":"Process (computing)","level":2,"score":0.5622715353965759},{"id":"https://openalex.org/C2775945657","wikidata":"https://www.wikidata.org/wiki/Q381442","display_name":"Structuring","level":2,"score":0.5509396195411682},{"id":"https://openalex.org/C26713055","wikidata":"https://www.wikidata.org/wiki/Q245962","display_name":"Implementation","level":2,"score":0.5472027659416199},{"id":"https://openalex.org/C2777210771","wikidata":"https://www.wikidata.org/wiki/Q4927124","display_name":"Block (permutation group theory)","level":2,"score":0.4996657371520996},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.49088603258132935},{"id":"https://openalex.org/C88626702","wikidata":"https://www.wikidata.org/wiki/Q1128903","display_name":"Continuation","level":2,"score":0.4744913578033447},{"id":"https://openalex.org/C120314980","wikidata":"https://www.wikidata.org/wiki/Q180634","display_name":"Distributed computing","level":1,"score":0.38733792304992676},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.3283435106277466},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.1597740352153778},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.13274890184402466},{"id":"https://openalex.org/C127413603","wikidata":"https://www.wikidata.org/wiki/Q11023","display_name":"Engineering","level":0,"score":0.0},{"id":"https://openalex.org/C10138342","wikidata":"https://www.wikidata.org/wiki/Q43015","display_name":"Finance","level":1,"score":0.0},{"id":"https://openalex.org/C2524010","wikidata":"https://www.wikidata.org/wiki/Q8087","display_name":"Geometry","level":1,"score":0.0},{"id":"https://openalex.org/C162324750","wikidata":"https://www.wikidata.org/wiki/Q8134","display_name":"Economics","level":0,"score":0.0},{"id":"https://openalex.org/C87717796","wikidata":"https://www.wikidata.org/wiki/Q146326","display_name":"Environmental engineering","level":1,"score":0.0},{"id":"https://openalex.org/C33923547","wikidata":"https://www.wikidata.org/wiki/Q395","display_name":"Mathematics","level":0,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/3110249","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3110249","pdf_url":"http://dl.acm.org/ft_gateway.cfm?id=3110249&type=pdf","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},{"id":"pmh:oai:ora.ox.ac.uk:uuid:0ade93c6-39b1-4acd-bc1c-7931cccfe63a","is_oa":false,"landing_page_url":"https://ora.ox.ac.uk/objects/uuid:0ade93c6-39b1-4acd-bc1c-7931cccfe63a","pdf_url":null,"source":{"id":"https://openalex.org/S4306402636","display_name":"Oxford University Research Archive (ORA) (University of Oxford)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I40120149","host_organization_name":"University of Oxford","host_organization_lineage":["https://openalex.org/I40120149"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"","raw_type":"Conference item"}],"best_oa_location":{"id":"doi:10.1145/3110249","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3110249","pdf_url":"http://dl.acm.org/ft_gateway.cfm?id=3110249&type=pdf","source":{"id":"https://openalex.org/S4210216081","display_name":"Proceedings of the ACM on Programming Languages","issn_l":"2475-1421","issn":["2475-1421"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310319798","host_organization_name":"Association for Computing Machinery","host_organization_lineage":["https://openalex.org/P4310319798"],"host_organization_lineage_names":["Association for Computing Machinery"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the ACM on Programming Languages","raw_type":"journal-article"},"sustainable_development_goals":[{"display_name":"Industry, innovation and infrastructure","id":"https://metadata.un.org/sdg/9","score":0.44999998807907104}],"awards":[],"funders":[],"has_content":{"pdf":true,"grobid_xml":true},"content_urls":{"pdf":"https://content.openalex.org/works/W2752454259.pdf","grobid_xml":"https://content.openalex.org/works/W2752454259.grobid-xml"},"referenced_works_count":16,"referenced_works":["https://openalex.org/W1511203305","https://openalex.org/W1590681881","https://openalex.org/W1590978730","https://openalex.org/W1764096108","https://openalex.org/W1966458383","https://openalex.org/W1970782371","https://openalex.org/W1982998916","https://openalex.org/W2034582967","https://openalex.org/W2049440551","https://openalex.org/W2067083925","https://openalex.org/W2130267274","https://openalex.org/W2153980431","https://openalex.org/W2514237507","https://openalex.org/W4214857164","https://openalex.org/W4230823447","https://openalex.org/W4235724843"],"related_works":["https://openalex.org/W2801835562","https://openalex.org/W196828063","https://openalex.org/W4247743232","https://openalex.org/W4238447024","https://openalex.org/W1602185604","https://openalex.org/W1499694838","https://openalex.org/W2911281194","https://openalex.org/W1984438291","https://openalex.org/W173120711","https://openalex.org/W2572412372"],"abstract_inverted_index":{"Coroutine":[0],"pipelines":[1,52,104],"provide":[2],"an":[3,68,100],"attractive":[4],"structuring":[5],"mechanism":[6],"for":[7,70],"complex":[8],"programs":[9,142],"that":[10,21,73,108,150],"process":[11],"streams":[12,20],"of":[13,24,64,77,103],"data,":[14],"with":[15,29,67,140],"the":[16,30,37,75,118,134,151,158],"advantage":[17],"over":[18],"lazy":[19,145],"both":[22,50,83],"ends":[23],"a":[25,56,61,86],"pipeline":[26],"may":[27,34,154],"interact":[28],"I/O":[31],"system,":[32],"as":[33],"processes":[35,89],"in":[36,55,93,96,138],"middle.":[38],"Two":[39],"popular":[40],"Haskell":[41],"libraries,":[42,51],"Pipes":[43],"and":[44,136],"Conduit,":[45],"support":[46],"such":[47],"pipelines.":[48],"In":[49],"are":[53,90],"implemented":[54],"direct":[57],"style":[58],"by":[59,161],"combining":[60],"free":[62],"monad":[63],"communication":[65],"events":[66,76],"interpreter":[69],"(pseudo-)parallel":[71],"composition":[72],"interleaves":[74],"its":[78],"argument":[79],"processes.":[80],"These":[81],"implementations":[82],"suffer":[84,111,132],"from":[85,112,133,157],"slow-down":[87],"when":[88],"deeply":[91],"nested":[92],"sequence":[94],"or":[95],"parallel.":[97],"We":[98,147],"propose":[99],"alternative":[101],"implementation":[102,119,153,160],"based":[105,143],"on":[106,123,144],"continuations":[107],"does":[109],"not":[110,131],"this":[113],"slow-down.":[114],"What":[115],"is":[116,120],"more,":[117],"significantly":[121],"faster":[122],"small,":[124],"communication-intensive":[125],"examples":[126],"even":[127],"where":[128],"they":[129],"do":[130],"slow-down,":[135],"comparable":[137],"speed":[139],"similar":[141],"streams.":[146],"also":[148],"show":[149],"continuation-based":[152],"be":[155],"derived":[156],"direct-style":[159],"algebraic":[162],"reasoning.":[163]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2020,"cited_by_count":1},{"year":2018,"cited_by_count":1},{"year":2017,"cited_by_count":2}],"updated_date":"2026-05-21T06:26:12.895304","created_date":"2025-10-10T00:00:00"}
