000199389 001__ 199389
000199389 005__ 20190316235921.0
000199389 037__ $$aCONF
000199389 245__ $$aSelf-Assembly: Lightweight Language Extension and Datatype Generic Programming, All-in-One!
000199389 269__ $$a2014
000199389 260__ $$c2014
000199389 336__ $$aConference Papers
000199389 520__ $$aIn this paper we show a general mechanism, called self-assembly, for lightweight language extensions (LLEs). LLEs allow users to define generic operations or properties that operate over a large class of types. With LLEs it is possible, for example, for users to define their own Java-style automatic serialization mechanism; or implement simple forms of custom pluggable type system extensions like an immutability checker. However unlike language built-in mechanisms (such as Java serialization), LLEs are user-definable, multi-purpose (they can be used to define various forms of generic functionality), and highly customizable and extensible. The key idea, inspired by existing datatype-generic programming approaches, is to provide programmers with a generic mechanism for providing automatic implementations of type classes. We implemented our technique as a library, \sselfassembly, for Scala, and evaluated its practicality by migrating a full-featured industrial-strength serialization framework, Scala/Pickling, keeping the same published performance numbers while reducing the code size for type class instance generation by 56%.
000199389 6531_ $$agenerative programming
000199389 6531_ $$adatatype generic programming
000199389 6531_ $$ameta-programming
000199389 6531_ $$alanguage extension
000199389 700__ $$0242185$$g191683$$aMiller, Heather
000199389 700__ $$0240993$$g172057$$aHaller, Philipp
000199389 700__ $$aOliveira, d. S.
000199389 700__ $$aBruno, C.
000199389 8564_ $$uhttps://infoscience.epfl.ch/record/199389/files/gpce2014.pdf$$zPreprint$$s271036$$yPreprint
000199389 909C0 $$xU10409$$0252187$$pLAMP
000199389 909CO $$qGLOBAL_SET$$pconf$$ooai:infoscience.tind.io:199389$$pIC
000199389 917Z8 $$x191683
000199389 937__ $$aEPFL-CONF-199389
000199389 973__ $$rREVIEWED$$sSUBMITTED$$aEPFL
000199389 980__ $$aCONF