Nothing Special   »   [go: up one dir, main page]

skip to main content
10.5555/551789.853532guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Modular Domain Specific Languages and Tools

Published: 02 June 1998 Publication History

Abstract

A domain specific language (DSL) allows one to develop software for a particular application domain quickly and effectively, yielding programs that are easy to understand, reason about, and maintain. On the other hand, there may be a significant overhead in creating the infrastructure needed to support a DSL. To solve this problem, a methodology is described for building domain specific embedded languages (DSELs), in which a DSL is designed within an existing, higher-order and typed, programming language such as Haskell or ML. In addition, techniques are described for building modular interpreters and tools for DSELs. The resulting methodology facilitates reuse of syntax, semantics, implementation code, software tools, as well as look-and-feel.

References

[1]
Jon Bentley. Little languages. CACM, 29(8):711-721, 1986.
[2]
Don Batory, Bernie Lofaso, and Yannis Smaragdakis. JTS: A tool suite for building Gen Voca generators. In Proceedings of 5th International Conference on Software Reuse. IEEE/ ACM, 1998.
[3]
J. Caruso. Prototyping demonstration problem for the prototech hiper-d joint prototyping demonstration project. CCB Report 0.2, Naval Surface Warfare Center, August 1993.
[4]
W.E. Carlson, P. Hudak, and M.P. Jones. An experiment using Haskell to prototype "geometric region servers" for navy command and control. Research Report 1031, Department of Computer Science, Yale University, November 1993.
[5]
P. Devanbu, D. Rosenblum, and A. Wolf. Generating testing and analysis tools. ACM Transactions on Software Engineering and Methodology, 1996.
[6]
Conal Elliott and Paul Hudak. Functional reactive animation. In International Conference on Functional Programming, pages 163-173, June 1997.
[7]
Conal Elliott. Modeling interactive 3D and multimedia animation with an embedded language. In Proceedings of the first conference on Domain-Specific Languages. USENIX, October 1997.
[8]
David Espinosa. Modular denotational semantics. Unpublished manuscript, December 1993.
[9]
David Espinosa. Semantic Lego. PhD thesis, Columbia University, 1995.
[10]
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Pattens: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
[11]
P. Henderson. Functional geometry. In Proceedings of the 1982 ACM Symposium on Lisp and Functional Programmming, pages 179-187. ACM, 1982.
[12]
P. Hudak, S. Peyton Jones, and P. Wadler (editors). Report on the Programming Language Haskell, A Nonstrict Purely Functional Language (Version 1.2). ACM SIGPLAN Notices, 27(5), May 1992.
[13]
S.C. Johnson. Yacc - yet another compiler compiler. Technical Report 32, Bell Labs, 1975.
[14]
A. Kishon and P. Hudak. Semantics-directed program execution monitoring. Journal of Functional Programming, 5(4), October 1995.
[15]
A. Kishon. Theory and Art of Semantics-Directed Program Execution Monitoring. PhD thesis, Yale University, Department of Computer Science, 1992.
[16]
J.A.N. Lee, B. Blum, P. Kanellakis, H. Crisp, and J.A. Caruso. ProtoTech HiPer-D Joint Prototyping Demonstration Project, February 1994. Unpublished; 400 pages.
[17]
M.E. Lesk. Lex - a lexical analyzer generator. Technical Report 39, Bell Labs, 1975.
[18]
Sheng Liang and Paul Hudak. Modular denotational semantics for compiler construction. In European Symposium on Programming, April 1996.
[19]
Sheng Liang, Paul Hudak, and Mark Jones. Monad transformers and modular interpreters. In Proceedings of 22nd ACM Symposium on Principles of Programming Languages, pages 333-343, New York, January 1995. ACM Press.
[20]
Sheng Liang. Modular Monadic Semantics and Compilation. PhD thesis, Yale University, Department of Computer Science, May 1998.
[21]
E. Moggi. Computational lambda-calculus and monads. In Proceedings of Symposium on Logic in Computer Science, pages 14-23. IEEE, June 1989.
[22]
Simon Peyton-Jones, Erik Mdijer, and Dan Leijen. Scripting COM components in haskell. In Proceedings of 5th International Conference on Software Reuse. IEEE/ACM, 1998.
[23]
S. Peyton Jones and P. Wadler. Imperative functional programming. In Proceedings 20th Symposium on Principles of Programming Languages. ACM, January 1993. (to appear).
[24]
T. W. Reps. Generating Language-Based Environments. The MIT Press, 1984.
[25]
Guy L. Steele Jr. Building interpreters by composing monads. In Conference Record of POPL '94: 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, Portland, Oregon, pages 472-492, New York, January 1994. ACM Press.
[26]
P. Wadler. Comprehending monads. In Proceedings of Symposium on Lisp and Functional Programming, pages 61-78, Nice, France, June 1990. ACM.

Cited By

View all
  • (2019)Machine learning in Python with no strings attachedProceedings of the 3rd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages10.1145/3315508.3329972(1-9)Online publication date: 22-Jun-2019
  • (2018)Stream Processing Languages in the Big Data EraACM SIGMOD Record10.1145/3299887.329989247:2(29-40)Online publication date: 11-Dec-2018
  • (2018)AnyDSL: a partial evaluation framework for programming high-performance librariesProceedings of the ACM on Programming Languages10.1145/32764892:OOPSLA(1-30)Online publication date: 24-Oct-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Guide Proceedings
ICSR '98: Proceedings of the 5th International Conference on Software Reuse
June 1998
ISBN:0818683775

Publisher

IEEE Computer Society

United States

Publication History

Published: 02 June 1998

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2019)Machine learning in Python with no strings attachedProceedings of the 3rd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages10.1145/3315508.3329972(1-9)Online publication date: 22-Jun-2019
  • (2018)Stream Processing Languages in the Big Data EraACM SIGMOD Record10.1145/3299887.329989247:2(29-40)Online publication date: 11-Dec-2018
  • (2018)AnyDSL: a partial evaluation framework for programming high-performance librariesProceedings of the ACM on Programming Languages10.1145/32764892:OOPSLA(1-30)Online publication date: 24-Oct-2018
  • (2018)Effect handlers for the massesProceedings of the ACM on Programming Languages10.1145/32764812:OOPSLA(1-27)Online publication date: 24-Oct-2018
  • (2018)CASCAACM Transactions on Design Automation of Electronic Systems10.1145/324104723:6(1-17)Online publication date: 6-Nov-2018
  • (2018)MCLProceedings of the XIV Brazilian Symposium on Information Systems10.1145/3229345.3229355(1-8)Online publication date: 4-Jun-2018
  • (2018)D'ArtagnanProceedings of the Real World Domain Specific Languages Workshop 201810.1145/3183895.3183899(1-9)Online publication date: 24-Feb-2018
  • (2018)Characteristics of defective infrastructure as code scripts in DevOpsProceedings of the 40th International Conference on Software Engineering: Companion Proceeedings10.1145/3183440.3183452(476-479)Online publication date: 27-May-2018
  • (2018)Ikra-CppProceedings of the 2018 4th Workshop on Programming Models for SIMD/Vector Processing10.1145/3178433.3178439(1-9)Online publication date: 24-Feb-2018
  • (2017)Composable network stacks and remote monadsACM SIGPLAN Notices10.1145/3156695.312296852:10(86-97)Online publication date: 7-Sep-2017
  • Show More Cited By

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media