{"id":"https://openalex.org/W2041337116","doi":"https://doi.org/10.1145/1596638.1596643","title":"Push-pull functional reactive programming","display_name":"Push-pull functional reactive programming","publication_year":2009,"publication_date":"2009-09-03","ids":{"openalex":"https://openalex.org/W2041337116","doi":"https://doi.org/10.1145/1596638.1596643","mag":"2041337116"},"language":"en","primary_location":{"id":"doi:10.1145/1596638.1596643","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1596638.1596643","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2nd ACM SIGPLAN symposium on Haskell","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5058654790","display_name":"Conal Elliott","orcid":"https://orcid.org/0000-0002-9480-9518"},"institutions":[],"countries":[],"is_corresponding":true,"raw_author_name":"Conal M. Elliott","raw_affiliation_strings":["LambdaPix, San Andreas, CA, USA"],"affiliations":[{"raw_affiliation_string":"LambdaPix, San Andreas, CA, USA","institution_ids":[]}]}],"institutions":[],"countries_distinct_count":0,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5058654790"],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":6.3317,"has_fulltext":false,"cited_by_count":127,"citation_normalized_percentile":{"value":0.96931426,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":95,"max":100},"biblio":{"volume":null,"issue":null,"first_page":"25","last_page":"36"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10904","display_name":"Embedded Systems Design Techniques","score":0.9991000294685364,"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"}},"topics":[{"id":"https://openalex.org/T10904","display_name":"Embedded Systems Design Techniques","score":0.9991000294685364,"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/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.9977999925613403,"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/T10126","display_name":"Logic, programming, and type systems","score":0.9976999759674072,"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"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.6081055402755737},{"id":"https://openalex.org/keywords/functional-reactive-programming","display_name":"Functional reactive programming","score":0.477007657289505},{"id":"https://openalex.org/keywords/reactive-programming","display_name":"Reactive programming","score":0.4388713836669922},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.39694470167160034},{"id":"https://openalex.org/keywords/programming-paradigm","display_name":"Programming paradigm","score":0.19977256655693054},{"id":"https://openalex.org/keywords/inductive-programming","display_name":"Inductive programming","score":0.13046789169311523}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.6081055402755737},{"id":"https://openalex.org/C119489759","wikidata":"https://www.wikidata.org/wiki/Q5508843","display_name":"Functional reactive programming","level":5,"score":0.477007657289505},{"id":"https://openalex.org/C150762246","wikidata":"https://www.wikidata.org/wiki/Q4354073","display_name":"Reactive programming","level":4,"score":0.4388713836669922},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.39694470167160034},{"id":"https://openalex.org/C34165917","wikidata":"https://www.wikidata.org/wiki/Q188267","display_name":"Programming paradigm","level":2,"score":0.19977256655693054},{"id":"https://openalex.org/C50033165","wikidata":"https://www.wikidata.org/wiki/Q15712089","display_name":"Inductive programming","level":3,"score":0.13046789169311523}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/1596638.1596643","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1596638.1596643","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2nd ACM SIGPLAN symposium on Haskell","raw_type":"proceedings-article"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":20,"referenced_works":["https://openalex.org/W1500975741","https://openalex.org/W1528312358","https://openalex.org/W1875562881","https://openalex.org/W1970757850","https://openalex.org/W2049440551","https://openalex.org/W2070203924","https://openalex.org/W2070998289","https://openalex.org/W2079512738","https://openalex.org/W2083421399","https://openalex.org/W2089589666","https://openalex.org/W2095343326","https://openalex.org/W2116813111","https://openalex.org/W2120713972","https://openalex.org/W2123678589","https://openalex.org/W2126719729","https://openalex.org/W2295914203","https://openalex.org/W2296715995","https://openalex.org/W3043060850","https://openalex.org/W4302790834","https://openalex.org/W6631567705"],"related_works":["https://openalex.org/W2060445097","https://openalex.org/W121585788","https://openalex.org/W2161156675","https://openalex.org/W1794229347","https://openalex.org/W1966091859","https://openalex.org/W2791307958","https://openalex.org/W1597838511","https://openalex.org/W180441780","https://openalex.org/W2041555632","https://openalex.org/W2892985413"],"abstract_inverted_index":{"Functional":[0],"reactive":[1,138],"programming":[2],"(FRP)":[3],"has":[4,10],"simple":[5,93],"and":[6,29,48,70,81,97,100,106,127,130,141],"powerful":[7],"semantics,":[8],"but":[9],"resisted":[11],"efficient":[12],"implementation.":[13],"In":[14],"particular,":[15],"most":[16],"past":[17],"implementations":[18],"have":[19],"used":[20],"demand-driven":[21,71],"sampling,":[22],"which":[23,74],"accommodates":[24],"FRP's":[25],"continuous":[26],"time":[27],"semantics":[28,99],"fits":[30],"well":[31],"with":[32],"the":[33,56,110],"nature":[34],"of":[35,95],"functional":[36],"programming.":[37],"Consequently,":[38],"values":[39,75],"are":[40,76,83],"wastefully":[41],"recomputed":[42,77],"even":[43],"when":[44,79],"inputs":[45],"don't":[46],"change,":[47],"reaction":[49],"latency":[50],"can":[51],"be":[52],"as":[53,55],"high":[54],"sampling":[57],"period.":[58],"This":[59],"paper":[60],"presents":[61],"a":[62,91,113],"way":[63],"to":[64,104,112],"implement":[65],"FRP":[66,96],"that":[67],"combines":[68],"data-":[69],"evaluation,":[72],"in":[73,90],"only":[78],"necessary,":[80],"reactions":[82],"nearly":[84],"instantaneous.":[85],"The":[86],"implementation":[87],"is":[88,102],"rooted":[89],"new":[92,114,133],"formulation":[94],"its":[98],"so":[101],"easy":[103],"understand":[105],"reason":[107],"about.":[108],"On":[109],"road":[111],"implementation,":[115],"we'll":[116],"meet":[117],"some":[118,132],"old":[119],"friends":[120,134],"(monoids,":[121],"functors,":[122,124],"applicative":[123],"monads,":[125],"morphisms,":[126],"improving":[128],"values)":[129],"make":[131],"(functional":[135],"future":[136],"values,":[137],"normal":[139],"form,":[140],"concurrent":[142],"unambiguous":[143],"choice).":[144]},"counts_by_year":[{"year":2025,"cited_by_count":4},{"year":2024,"cited_by_count":5},{"year":2023,"cited_by_count":8},{"year":2022,"cited_by_count":3},{"year":2021,"cited_by_count":3},{"year":2020,"cited_by_count":10},{"year":2019,"cited_by_count":11},{"year":2018,"cited_by_count":10},{"year":2017,"cited_by_count":5},{"year":2016,"cited_by_count":4},{"year":2015,"cited_by_count":10},{"year":2014,"cited_by_count":12},{"year":2013,"cited_by_count":18},{"year":2012,"cited_by_count":5}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
