Abstract
Polls and surveys are increasingly employed to gather information about attitudes and experiences of all kinds of populations and user groups. The ultimate purpose of a survey is to identify trends and relationships that can inform decision makers. To this end, the data gathered by a survey must be appropriately analyzed.
Most of the currently existing tools focus on the user interface aspect of the data collection task, but pay little attention to the structure and type of the collected data, which are usually represented as potentially tag-annotated, but otherwise unstructured, plain text. This makes the task of writing data analysis programs often difficult and error-prone, whereas a typed data representation could support the writing of type-directed data analysis tools that would enjoy the many benefits of static typing.
In this paper we present Surveyor, a DSEL that allows the compositional construction of typed surveys, where the types describe the structure of the data to be collected. A survey can be run to gather typed data, which can then be subjected to analysis tools that are built using Surveyor's typed combinators. Altogether the Surveyor DSEL realizes a strongly typed and type-directed approach to data gathering and analysis.
The implementation of our DSEL is based on GADTs to allow a flexible, yet strongly typed representation of surveys. Moreover, the implementation employs the Scrap-Your-Boilerplate library to facilitate the type-dependent traversal, extraction, and combination of data gathered from surveys.
- J. L. Bentley. Programming Pearls: Little Languages. Communications of the ACM, 29(8):711--721, 1986. Google ScholarDigital Library
- S. Boag, D. Chamberlin, M. F. Fernández, D. Florescu, J. Robie, and J. Siméon, editors. XQuery 1.0: An XML Query Language (2nd Edition), 2010. www.w3.org/TR/xquery/.Google Scholar
- E. Cooper, S. Lindley, P. Wadler, and J. Yallop. An idiom's guide to formlets. Technical Report EDI-INF-RR-1263, University of Edinburgh, 2008.Google Scholar
- C. H. Cunningham. A little language for surveys: Constructing an internal DSL in Ruby. In Proceedings of the ACM SouthEast Conference. ACM Press, 2008. Google ScholarDigital Library
- EUSES. End users shaping effective software. http://EUSESconsortium.org.Google Scholar
- Evers, S., Achten, P., Kuper, J. A functional programming technique for forms in graphical user interfaces. In 16th International Workshop on Implementation and Application of Functional Languages, 2004. Google ScholarDigital Library
- The glorious glasgow haskell compilation system user's guide. http://www.haskell.org/ghc/docs/6.6/html/users_guide/gadt.html (Last accessed: June 2012).Google Scholar
- J. Hage and P. van Keeken. Neon: a Library for Language Usage Analysis. In Int. Conf. on Software Language Engineering, pages 33--53, 2008.Google Scholar
- IBM SPSS Software. http://www-01.ibm.com/software/analytics/spss/ (Last accessed: June 2012).Google Scholar
- R. Ihaka and R. Gentleman. R: A Language for Data Analysis and Graphics. Journal of Computational and Graphical Statistics, 5(3):299--314, 1996.Google Scholar
- R. Lämmel and S. Peyton Jones. Scrap Your Boilerplate: A Practical Design Pattern for Generic Programming. In ACM SIGPLAN Workshop on Types in Language Design and Implementation, pages 26--37, 2003. Google ScholarDigital Library
- LimeSurvey. http://www.limesurvey.org/ (Last accessed: June 2012).Google Scholar
- SurveyGizmo. http://www.surveygizmo.com/ (Last accessed: June 2012).Google Scholar
- SurveyMonkey. http://www.surveymonkey.com/MySurveys.aspx (Last accessed: June 2012).Google Scholar
Index Terms
- Surveyor: a DSEL for representing and analyzing strongly typed surveys
Recommendations
Surveyor: a DSEL for representing and analyzing strongly typed surveys
Haskell '12: Proceedings of the 2012 Haskell SymposiumPolls and surveys are increasingly employed to gather information about attitudes and experiences of all kinds of populations and user groups. The ultimate purpose of a survey is to identify trends and relationships that can inform decision makers. To ...
Shared subtypes: subtyping recursive parametrized algebraic data types
HASKELL '08A newtype declaration in Haskell introduces a new type renaming an existing type. The two types are viewed by the programmer as semantically different, but share the same runtime representation. When operations on the two semantic views coincide, the ...
System F with coercion constraints
CSL-LICS '14: Proceedings of the Joint Meeting of the Twenty-Third EACSL Annual Conference on Computer Science Logic (CSL) and the Twenty-Ninth Annual ACM/IEEE Symposium on Logic in Computer Science (LICS)We present a second-order λ-calculus with coercion constraints that generalizes a previous extension of System F with parametric coercion abstractions by allowing multiple but simultaneous type and coercion abstractions, as well as recursive coercions ...
Comments