{"id":"https://openalex.org/W2005692853","doi":"https://doi.org/10.1145/1017472.1017482","title":"Programming graphics processors functionally","display_name":"Programming graphics processors functionally","publication_year":2004,"publication_date":"2004-09-22","ids":{"openalex":"https://openalex.org/W2005692853","doi":"https://doi.org/10.1145/1017472.1017482","mag":"2005692853"},"language":"en","primary_location":{"id":"doi:10.1145/1017472.1017482","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1017472.1017482","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2004 ACM SIGPLAN workshop 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":[{"id":"https://openalex.org/I4210164937","display_name":"Microsoft Research (United Kingdom)","ror":"https://ror.org/05k87vq12","country_code":"GB","type":"company","lineage":["https://openalex.org/I1290206253","https://openalex.org/I4210164937"]},{"id":"https://openalex.org/I1290206253","display_name":"Microsoft (United States)","ror":"https://ror.org/00d0nc645","country_code":"US","type":"company","lineage":["https://openalex.org/I1290206253"]}],"countries":["GB","US"],"is_corresponding":true,"raw_author_name":"Conal Elliott","raw_affiliation_strings":["Microsoft Research","Microsoft research#TAB#"],"affiliations":[{"raw_affiliation_string":"Microsoft Research","institution_ids":["https://openalex.org/I4210164937"]},{"raw_affiliation_string":"Microsoft research#TAB#","institution_ids":["https://openalex.org/I1290206253"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":1,"corresponding_author_ids":["https://openalex.org/A5058654790"],"corresponding_institution_ids":["https://openalex.org/I1290206253","https://openalex.org/I4210164937"],"apc_list":null,"apc_paid":null,"fwci":2.3808,"has_fulltext":false,"cited_by_count":53,"citation_normalized_percentile":{"value":0.88143809,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":{"min":90,"max":98},"biblio":{"volume":null,"issue":null,"first_page":"45","last_page":"56"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10481","display_name":"Computer Graphics and Visualization Techniques","score":0.9980000257492065,"subfield":{"id":"https://openalex.org/subfields/1704","display_name":"Computer Graphics and Computer-Aided Design"},"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/T10481","display_name":"Computer Graphics and Visualization Techniques","score":0.9980000257492065,"subfield":{"id":"https://openalex.org/subfields/1704","display_name":"Computer Graphics and Computer-Aided Design"},"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/T10719","display_name":"3D Shape Modeling and Analysis","score":0.9905999898910522,"subfield":{"id":"https://openalex.org/subfields/2206","display_name":"Computational Mechanics"},"field":{"id":"https://openalex.org/fields/22","display_name":"Engineering"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10996","display_name":"Computational Geometry and Mesh Generation","score":0.9785000085830688,"subfield":{"id":"https://openalex.org/subfields/1704","display_name":"Computer Graphics and Computer-Aided Design"},"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.8602921962738037},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.7031532526016235},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.5984469652175903},{"id":"https://openalex.org/keywords/shader","display_name":"Shader","score":0.5862004160881042},{"id":"https://openalex.org/keywords/graphics-pipeline","display_name":"Graphics pipeline","score":0.5266687273979187},{"id":"https://openalex.org/keywords/haskell","display_name":"Haskell","score":0.5043700933456421},{"id":"https://openalex.org/keywords/graphics","display_name":"Graphics","score":0.4987196922302246},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.45058295130729675},{"id":"https://openalex.org/keywords/optimizing-compiler","display_name":"Optimizing compiler","score":0.4475277364253998},{"id":"https://openalex.org/keywords/parallel-computing","display_name":"Parallel computing","score":0.445831835269928},{"id":"https://openalex.org/keywords/denotational-semantics","display_name":"Denotational semantics","score":0.4254697859287262},{"id":"https://openalex.org/keywords/graphics-hardware","display_name":"Graphics hardware","score":0.41194161772727966},{"id":"https://openalex.org/keywords/functional-programming","display_name":"Functional programming","score":0.37305864691734314},{"id":"https://openalex.org/keywords/3d-computer-graphics","display_name":"3D computer graphics","score":0.25263550877571106},{"id":"https://openalex.org/keywords/computer-graphics","display_name":"Computer graphics (images)","score":0.22576767206192017},{"id":"https://openalex.org/keywords/operational-semantics","display_name":"Operational semantics","score":0.19171929359436035}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8602921962738037},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.7031532526016235},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.5984469652175903},{"id":"https://openalex.org/C177681979","wikidata":"https://www.wikidata.org/wiki/Q633182","display_name":"Shader","level":3,"score":0.5862004160881042},{"id":"https://openalex.org/C173552908","wikidata":"https://www.wikidata.org/wiki/Q1366289","display_name":"Graphics pipeline","level":4,"score":0.5266687273979187},{"id":"https://openalex.org/C2780624054","wikidata":"https://www.wikidata.org/wiki/Q34010","display_name":"Haskell","level":3,"score":0.5043700933456421},{"id":"https://openalex.org/C21442007","wikidata":"https://www.wikidata.org/wiki/Q1027879","display_name":"Graphics","level":2,"score":0.4987196922302246},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.45058295130729675},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.4475277364253998},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.445831835269928},{"id":"https://openalex.org/C207648694","wikidata":"https://www.wikidata.org/wiki/Q1189746","display_name":"Denotational semantics","level":4,"score":0.4254697859287262},{"id":"https://openalex.org/C18945957","wikidata":"https://www.wikidata.org/wiki/Q5597193","display_name":"Graphics hardware","level":3,"score":0.41194161772727966},{"id":"https://openalex.org/C42383842","wikidata":"https://www.wikidata.org/wiki/Q193076","display_name":"Functional programming","level":2,"score":0.37305864691734314},{"id":"https://openalex.org/C66629338","wikidata":"https://www.wikidata.org/wiki/Q189177","display_name":"3D computer graphics","level":3,"score":0.25263550877571106},{"id":"https://openalex.org/C121684516","wikidata":"https://www.wikidata.org/wiki/Q7600677","display_name":"Computer graphics (images)","level":1,"score":0.22576767206192017},{"id":"https://openalex.org/C156325763","wikidata":"https://www.wikidata.org/wiki/Q1930895","display_name":"Operational semantics","level":3,"score":0.19171929359436035}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/1017472.1017482","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1017472.1017482","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2004 ACM SIGPLAN workshop on Haskell","raw_type":"proceedings-article"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.169.5989","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.169.5989","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://www.conal.net/papers/Vertigo/1206-elliott.pdf","raw_type":"text"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":13,"referenced_works":["https://openalex.org/W1491178396","https://openalex.org/W1548638602","https://openalex.org/W1577258119","https://openalex.org/W1971185012","https://openalex.org/W2014021676","https://openalex.org/W2055947235","https://openalex.org/W2118588333","https://openalex.org/W2118688057","https://openalex.org/W2119340547","https://openalex.org/W2147898823","https://openalex.org/W2155365836","https://openalex.org/W3097830658","https://openalex.org/W4285719527"],"related_works":["https://openalex.org/W833983830","https://openalex.org/W2368030994","https://openalex.org/W2058044347","https://openalex.org/W2147270340","https://openalex.org/W744497305","https://openalex.org/W2132794636","https://openalex.org/W2055923388","https://openalex.org/W2077893750","https://openalex.org/W2133777113","https://openalex.org/W3217045543"],"abstract_inverted_index":{"Graphics":[0],"cards":[1],"for":[2,24,26,65,178,235],"personal":[3],"computers":[4],"have":[5],"recently":[6],"undergone":[7],"a":[8,60,101,120,147],"radical":[9],"transformation":[10],"from":[11],"fixed-function":[12],"graphics":[13,25,31,67,74],"pipelines":[14],"to":[15,38,51,109,135,146],"multi-processor,":[16],"programmable":[17],"architectures.":[18],"Multi-processor":[19],"architectures":[20],"are":[21,33,116,133,174,211,233],"clearly":[22],"advantageous":[23],"the":[27,88,91,158,198,227],"simple":[28,102,122],"reason":[29,138],"that":[30,72,132],"computations":[32],"naturally":[34],"concurrent,":[35],"mapping":[36],"well":[37],"stateless":[39],"stream":[40],"processing.":[41],"They":[42],"therefore":[43],"parallelize":[44],"easily":[45],"and":[46,68,84,87,103,114,137,153,187,190,240],"need":[47],"no":[48],"random":[49],"access":[50],"memory":[52],"with":[53,226],"its":[54],"problematic":[55],"latencies.This":[56],"paper":[57],"presents":[58],"Vertigo,":[59],"purely":[61],"functional,":[62],"Haskell-embedded":[63],"language":[64,78],"3D":[66],"an":[69],"optimizing":[70],"compiler":[71,89,148],"generates":[73],"processor":[75,93],"code.":[76],"The":[77,95,125],"integrates":[79],"procedural":[80],"surface":[81],"modeling,":[82],"shading,":[83],"texture":[85],"generation,":[86],"exploits":[90],"unusual":[92],"architecture.":[94],"shading":[96,111],"sub-language":[97],"is":[98,165],"based":[99,149],"on":[100,150,218],"precise":[104],"semantic":[105],"model,":[106],"in":[107,157,197],"contrast":[108],"previous":[110],"languages.":[112],"Geometry":[113],"textures":[115],"also":[117,141,183],"defined":[118],"via":[119,206],"very":[121,142],"denotational":[123],"semantics.":[124],"formal":[126],"semantics":[127],"yields":[128],"not":[129,176],"only":[130],"programs":[131],"easy":[134],"understand":[136],"about,":[139],"but":[140,182],"efficient":[143],"implementation,":[144],"thanks":[145],"partial":[151],"evaluation":[152],"symbolic":[154],"optimization,":[155],"much":[156],"style":[159],"of":[160,200,216],"Pan":[161],"[2].Haskell's":[162],"overloading":[163],"facility":[164],"extremely":[166],"useful":[167],"throughout":[168],"Vertigo.":[169],"For":[170],"instance,":[171],"math":[172,207],"operators":[173],"used":[175],"just":[177],"floating":[179,219],"point":[180,220],"numbers,":[181],"expressions":[184,217],"(for":[185],"differentiation":[186],"compilation),":[188],"tuples,":[189],"functions.":[191],"Typically,":[192],"these":[193],"overloadings":[194],"cascade,":[195],"as":[196],"case":[199],"surfaces,":[201],"which":[202],"may":[203,223],"be":[204,224],"combined":[205],"operators,":[208],"though":[209],"they":[210],"really":[212],"functions":[213],"over":[214],"tuples":[215],"numbers.":[221],"Shaders":[222],"composed":[225],"same":[228],"notational":[229],"convenience.":[230],"Functional":[231],"dependencies":[232],"exploited":[234],"vector":[236],"spaces,":[237],"cross":[238],"products,":[239],"derivatives.":[241]},"counts_by_year":[{"year":2025,"cited_by_count":2},{"year":2019,"cited_by_count":1},{"year":2017,"cited_by_count":4},{"year":2015,"cited_by_count":4},{"year":2014,"cited_by_count":3},{"year":2013,"cited_by_count":5},{"year":2012,"cited_by_count":4}],"updated_date":"2026-04-04T16:13:02.066488","created_date":"2025-10-10T00:00:00"}
