Matches in SemOpenAlex for { <https://semopenalex.org/work/W206809417> ?p ?o ?g. }
- W206809417 endingPage "352" @default.
- W206809417 startingPage "303" @default.
- W206809417 abstract "Abstract Datatype-generic programming (DGP) involves parametrization of programs by the shape of data, in the form of type constructors such as ‘list of’. Most approaches to DGP are developed in pure functional programming languages such as Haskell. We argue that the functional object-oriented language Scala is in many ways a better choice. Not only does Scala provide equivalents of all the necessary functional programming features (such as parametric polymorphism, higher-order functions, higher-kinded type operations, and type- and constructor-classes), but it also provides the most useful features of object-oriented languages (such as subtyping, overriding, traditional single inheritance, and multiple inheritance in the form of traits). Common Haskell techniques for DGP can be conveniently replicated in Scala, whereas the extra expressivity provides some important additional benefits in terms of extensibility and reuse. We illustrate this by comparing two simple approaches in Haskell, pointing out their limitations and showing how equivalent approaches in Scala address some of these limitations. Finally, we present three case studies on how to implement in Scala real DGP approaches from the literature: Hinze's ‘Generics for the Masses’, Lämmel and Peyton Jones's ‘Scrap your Boilerplate with Class’, and Gibbons's ‘Origami Programming’." @default.
- W206809417 created "2016-06-24" @default.
- W206809417 creator A5049714036 @default.
- W206809417 creator A5086558126 @default.
- W206809417 date "2010-07-01" @default.
- W206809417 modified "2023-10-11" @default.
- W206809417 title "Scala for generic programmers" @default.
- W206809417 cites W1501408037 @default.
- W206809417 cites W1525643703 @default.
- W206809417 cites W1552977104 @default.
- W206809417 cites W1563858934 @default.
- W206809417 cites W1608714802 @default.
- W206809417 cites W1979982425 @default.
- W206809417 cites W1987454317 @default.
- W206809417 cites W1997044756 @default.
- W206809417 cites W2005130481 @default.
- W206809417 cites W2009775190 @default.
- W206809417 cites W2026323010 @default.
- W206809417 cites W2032220227 @default.
- W206809417 cites W2048569219 @default.
- W206809417 cites W204886091 @default.
- W206809417 cites W2084686108 @default.
- W206809417 cites W2095136535 @default.
- W206809417 cites W2095625219 @default.
- W206809417 cites W2110122404 @default.
- W206809417 cites W2110317952 @default.
- W206809417 cites W2116813111 @default.
- W206809417 cites W2118729638 @default.
- W206809417 cites W2120487396 @default.
- W206809417 cites W2134281169 @default.
- W206809417 cites W2135642511 @default.
- W206809417 cites W2136177623 @default.
- W206809417 cites W2144541538 @default.
- W206809417 cites W2145945984 @default.
- W206809417 cites W2146069884 @default.
- W206809417 cites W2156426055 @default.
- W206809417 cites W2173780645 @default.
- W206809417 cites W2244800645 @default.
- W206809417 cites W4239460777 @default.
- W206809417 cites W4244792373 @default.
- W206809417 doi "https://doi.org/10.1017/s0956796810000171" @default.
- W206809417 hasPublicationYear "2010" @default.
- W206809417 type Work @default.
- W206809417 sameAs 206809417 @default.
- W206809417 citedByCount "10" @default.
- W206809417 countsByYear W2068094172012 @default.
- W206809417 countsByYear W2068094172014 @default.
- W206809417 countsByYear W2068094172016 @default.
- W206809417 countsByYear W2068094172017 @default.
- W206809417 countsByYear W2068094172019 @default.
- W206809417 crossrefType "journal-article" @default.
- W206809417 hasAuthorship W206809417A5049714036 @default.
- W206809417 hasAuthorship W206809417A5086558126 @default.
- W206809417 hasBestOaLocation W2068094171 @default.
- W206809417 hasConcept C104317684 @default.
- W206809417 hasConcept C109701466 @default.
- W206809417 hasConcept C185592680 @default.
- W206809417 hasConcept C199360897 @default.
- W206809417 hasConcept C2778383056 @default.
- W206809417 hasConcept C2780624054 @default.
- W206809417 hasConcept C2780902518 @default.
- W206809417 hasConcept C41008148 @default.
- W206809417 hasConcept C42383842 @default.
- W206809417 hasConcept C44779574 @default.
- W206809417 hasConcept C548217200 @default.
- W206809417 hasConcept C55493867 @default.
- W206809417 hasConcept C7051814 @default.
- W206809417 hasConcept C77088390 @default.
- W206809417 hasConcept C80444323 @default.
- W206809417 hasConceptScore W206809417C104317684 @default.
- W206809417 hasConceptScore W206809417C109701466 @default.
- W206809417 hasConceptScore W206809417C185592680 @default.
- W206809417 hasConceptScore W206809417C199360897 @default.
- W206809417 hasConceptScore W206809417C2778383056 @default.
- W206809417 hasConceptScore W206809417C2780624054 @default.
- W206809417 hasConceptScore W206809417C2780902518 @default.
- W206809417 hasConceptScore W206809417C41008148 @default.
- W206809417 hasConceptScore W206809417C42383842 @default.
- W206809417 hasConceptScore W206809417C44779574 @default.
- W206809417 hasConceptScore W206809417C548217200 @default.
- W206809417 hasConceptScore W206809417C55493867 @default.
- W206809417 hasConceptScore W206809417C7051814 @default.
- W206809417 hasConceptScore W206809417C77088390 @default.
- W206809417 hasConceptScore W206809417C80444323 @default.
- W206809417 hasIssue "3-4" @default.
- W206809417 hasLocation W2068094171 @default.
- W206809417 hasLocation W2068094172 @default.
- W206809417 hasOpenAccess W206809417 @default.
- W206809417 hasPrimaryLocation W2068094171 @default.
- W206809417 hasRelatedWork W2004997206 @default.
- W206809417 hasRelatedWork W2017112188 @default.
- W206809417 hasRelatedWork W206809417 @default.
- W206809417 hasRelatedWork W2082043541 @default.
- W206809417 hasRelatedWork W2146069884 @default.
- W206809417 hasRelatedWork W2168938117 @default.
- W206809417 hasRelatedWork W3006157134 @default.
- W206809417 hasRelatedWork W3087634590 @default.
- W206809417 hasRelatedWork W4235669620 @default.