Constructing language processors with algebra combinators

Modular Monadic Semantics (MMS) is a well-known mechanism for structuring modular denotational semantic definitions for programming languages. The principal attraction of MMS is that families of language constructs can be independently specified and later combined in a mix-and-match fashion to creat...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Science of computer programming Ročník 75; číslo 7; s. 543 - 572
Hlavní autoři: Frisby, Nicolas, Kimmell, Garrin, Weaver, Philip, Alexander, Perry
Médium: Journal Article
Jazyk:angličtina
Vydáno: Elsevier B.V 01.07.2010
Témata:
ISSN:0167-6423, 1872-7964
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Abstract Modular Monadic Semantics (MMS) is a well-known mechanism for structuring modular denotational semantic definitions for programming languages. The principal attraction of MMS is that families of language constructs can be independently specified and later combined in a mix-and-match fashion to create a complete language semantics. This has proved useful for constructing formal, yet executable, semantics when prototyping languages. In this work we demonstrate that MMS has an additional software engineering benefit. In addition to composing semantics for various language constructs, we can use MMS to compose various differing semantics for the same language constructs. This capability allows us to compose and reuse orthogonal language tasks such as type checking and compilation. We describe algebra combinators, the principal vehicle for achieving this reuse, along with a series of applications of the technique for common language processing tasks.
AbstractList Modular Monadic Semantics (MMS) is a well-known mechanism for structuring modular denotational semantic definitions for programming languages. The principal attraction of MMS is that families of language constructs can be independently specified and later combined in a mix-and-match fashion to create a complete language semantics. This has proved useful for constructing formal, yet executable, semantics when prototyping languages. In this work we demonstrate that MMS has an additional software engineering benefit. In addition to composing semantics for various language constructs, we can use MMS to compose various differing semantics for the same language constructs. This capability allows us to compose and reuse orthogonal language tasks such as type checking and compilation. We describe algebra combinators, the principal vehicle for achieving this reuse, along with a series of applications of the technique for common language processing tasks.
Author Weaver, Philip
Kimmell, Garrin
Frisby, Nicolas
Alexander, Perry
Author_xml – sequence: 1
  givenname: Nicolas
  surname: Frisby
  fullname: Frisby, Nicolas
  email: nfrisby@ittc.ku.edu
  organization: Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, 2335 Irving Hill Road, Lawrence, KS 66045, United States
– sequence: 2
  givenname: Garrin
  surname: Kimmell
  fullname: Kimmell, Garrin
  email: kimmell@ittc.ku.edu
  organization: Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, 2335 Irving Hill Road, Lawrence, KS 66045, United States
– sequence: 3
  givenname: Philip
  surname: Weaver
  fullname: Weaver, Philip
  email: pweaver@signalicorp.com
  organization: Signalicorp, 3034 NE Tillamook Street, Portland, OR 97212, United States
– sequence: 4
  givenname: Perry
  surname: Alexander
  fullname: Alexander, Perry
  email: alex@ittc.ku.edu
  organization: Information Technology and Telecommunication Center, Department of Electrical Engineering and Computer Science, The University of Kansas, 2335 Irving Hill Road, Lawrence, KS 66045, United States
BookMark eNp9j7FOwzAURS1UJNrCF7DkBxKe7SSOBwZUAUWqxAKz5djPwVVrV3YK4u9JKTPTG949V_csyCzEgITcUqgo0PZuW2XjTawYgKwoqwDEBZnTTrBSyLaekfmUEmVbM35FFjlvAaCtBZ0TuYohj-loRh-GYqfDcNQDFocUDeYcUy6-_PhR6N2AfdKFifveBz1Oj2ty6fQu483fXZL3p8e31brcvD6_rB42pWENH0snXSc4t7W0klNrXK-hc7Q1zTQMWgsWsGFWOyug6fq-R2YoANNOWhBW8yXh516TYs4JnTokv9fpW1FQJ3u1Vb_26mSvKFOT_UTdnymcpn16TKcMBoPWJzSjstH_y_8AUTJneQ
Cites_doi 10.1016/0890-5401(91)90052-4
10.1017/S095679680300488X
10.1017/S0956796807006326
10.1145/640136.604179
10.1007/BF01211391
10.1017/S0956796897002864
ContentType Journal Article
Copyright 2010 Elsevier B.V.
Copyright_xml – notice: 2010 Elsevier B.V.
DBID 6I.
AAFTH
AAYXX
CITATION
DOI 10.1016/j.scico.2009.12.007
DatabaseName ScienceDirect Open Access Titles
Elsevier:ScienceDirect:Open Access
CrossRef
DatabaseTitle CrossRef
DatabaseTitleList
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 1872-7964
EndPage 572
ExternalDocumentID 10_1016_j_scico_2009_12_007
S0167642309001749
GroupedDBID --K
--M
.DC
.~1
0R~
123
1B1
1RT
1~.
1~5
4.4
457
4G.
5VS
6I.
7-5
71M
8P~
9JN
AACTN
AAEDT
AAEDW
AAFTH
AAIAV
AAIKJ
AAKOC
AALRI
AAOAW
AAQFI
AAQXK
AAXUO
AAYFN
ABBOA
ABFNM
ABJNI
ABMAC
ABTAH
ABVKL
ABXDB
ABYKQ
ACDAQ
ACGFS
ACNNM
ACRLP
ACZNC
ADBBV
ADEZE
ADHUB
ADMUD
AEBSH
AEKER
AENEX
AEXQZ
AFFNX
AFKWA
AFTJW
AGHFR
AGUBO
AGYEJ
AHHHB
AHZHX
AIALX
AIEXJ
AIKHN
AITUG
AJBFU
AJOXV
ALMA_UNASSIGNED_HOLDINGS
AMFUW
AMRAJ
AOUOD
ASPBG
AVWKF
AXJTR
AZFZN
BKOJK
BLXMC
CS3
DU5
E.L
EBS
EFJIC
EFLBG
EJD
EO8
EO9
EP2
EP3
FDB
FEDTE
FGOYB
FIRID
FNPLU
FYGXN
G-2
G-Q
GBLVA
GBOLZ
HVGLF
HZ~
IHE
IXB
J1W
KOM
LG9
M26
M41
MO0
N9A
NCXOZ
O-L
O9-
OAUVE
OK1
OZT
P-8
P-9
P2P
PC.
Q38
R2-
RIG
ROL
RPZ
SDF
SDG
SDP
SES
SEW
SPC
SPCBC
SSV
SSZ
T5K
TN5
WUQ
XPP
ZMT
ZY4
~G-
9DU
AATTM
AAXKI
AAYWO
AAYXX
ABWVN
ACLOT
ACRPL
ACVFH
ADCNI
ADNMO
ADVLN
AEIPS
AEUPX
AFJKZ
AFPUW
AGQPQ
AIGII
AIIUN
AKBMS
AKRWK
AKYEP
ANKPU
APXCP
CITATION
EFKBS
~HD
ID FETCH-LOGICAL-c253t-f9f8733d49d931dcfba08f16c596406d0d0e52dafd7058bbbe2c1002af9d07da3
ISICitedReferencesCount 0
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000278243200005&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 0167-6423
IngestDate Sat Nov 29 03:37:14 EST 2025
Fri Feb 23 02:37:17 EST 2024
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue 7
Keywords Generic programming
Modular semantics
Language English
License http://www.elsevier.com/open-access/userlicense/1.0
https://www.elsevier.com/tdm/userlicense/1.0
https://www.elsevier.com/open-access/userlicense/1.0
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-c253t-f9f8733d49d931dcfba08f16c596406d0d0e52dafd7058bbbe2c1002af9d07da3
OpenAccessLink https://dx.doi.org/10.1016/j.scico.2009.12.007
PageCount 30
ParticipantIDs crossref_primary_10_1016_j_scico_2009_12_007
elsevier_sciencedirect_doi_10_1016_j_scico_2009_12_007
PublicationCentury 2000
PublicationDate 2010-07-01
PublicationDateYYYYMMDD 2010-07-01
PublicationDate_xml – month: 07
  year: 2010
  text: 2010-07-01
  day: 01
PublicationDecade 2010
PublicationTitle Science of computer programming
PublicationYear 2010
Publisher Elsevier B.V
Publisher_xml – name: Elsevier B.V
References Meertens (b26) 1992; 4
L. Duponcheel, Using catamorphisms, subtypes and monad transformers for writing modular functional interpreters, 1995
M.P. Jones, L. Duponcheel, Composing monads, Research report YALEU/DCS/RR-1004, Yale University, 1993
Gayo, Díez, Lovelle, del Río (b8) 2001; 44
Liang, Hudak (b22) 1996; vol. 1058
Lämmel, Visser (b19) 2002; vol. 2257
D. Espinosa, Semantic Lego, Ph.D. Thesis, Columbia University, 1995
Lämmel, Visser (b20) 2003; vol. 2562
E. Moggi, An abstract view of programming languages, Technical Report ECS-LFCS-90-113, Edinburgh Univ., 1990
(b16) 2003
Lämmel, Jones (b17) 2003; 38
Lämmel, Jones (b18) 2004
Huet (b10) 1997; 7
IEEE. IEEE Standard VHDL Language Reference Manual, 1994
Chakravarty, Keller, Jones, Marlow (b5) 2005
Harrison, Kamin (b9) 2000
Meijer, Fokkinga, Paterson (b27) 1991; vol. 523
Sheard (b32) 1997
McBride, Paterson (b25) 2008; 18
Alexander (b2) 2006
Weaver, Kimmell, Frisby, Alexander (b38) 2007
Moggi (b30) 1991; 93
Wadler (b36) 1995; vol. 925
Jones (b14) 2000; vol. 1782
R. Lämmel, J. Visser, J. Kort, Dealing with large bananas, in: Proceedings of the Second Workshop on Generic Programming, WGP 2000, Ponte de Lima, Portugal, 6 July 2000, Utrecht University, 2000, pp. 46–59
Peyton Jones (b31) 2001; 180
Wadler (b37) 1990
Sheard, Pasalic (b33) 2004; 14
Abott, Altenkirch, Ghani, McBride (b1) 2005; 65
Liang, Hudak, Jones (b23) 1995
Bawden (b3) 1999
Hutton (b11) 1998
Meijer, Jeuring (b28) 1995; vol. 925
Steele (b34) 1994
Jansson, Jeuring (b13) 1997
Cartwright, Felleisen (b4) 1994; vol. 789
G. Malcolm, Algebraic Data Types and Program Transformation, Ph.D. Thesis, Groningen University, 1990
Visser (b35) 2001; vol. 2051
Steele (10.1016/j.scico.2009.12.007_b34) 1994
10.1016/j.scico.2009.12.007_b12
10.1016/j.scico.2009.12.007_b15
Weaver (10.1016/j.scico.2009.12.007_b38) 2007
Wadler (10.1016/j.scico.2009.12.007_b37) 1990
Visser (10.1016/j.scico.2009.12.007_b35) 2001; vol. 2051
Sheard (10.1016/j.scico.2009.12.007_b32) 1997
Lämmel (10.1016/j.scico.2009.12.007_b17) 2003; 38
Alexander (10.1016/j.scico.2009.12.007_b2) 2006
Hutton (10.1016/j.scico.2009.12.007_b11) 1998
(10.1016/j.scico.2009.12.007_b16) 2003
Gayo (10.1016/j.scico.2009.12.007_b8) 2001; 44
10.1016/j.scico.2009.12.007_b6
10.1016/j.scico.2009.12.007_b7
Bawden (10.1016/j.scico.2009.12.007_b3) 1999
Meertens (10.1016/j.scico.2009.12.007_b26) 1992; 4
Liang (10.1016/j.scico.2009.12.007_b23) 1995
Jansson (10.1016/j.scico.2009.12.007_b13) 1997
Chakravarty (10.1016/j.scico.2009.12.007_b5) 2005
Jones (10.1016/j.scico.2009.12.007_b14) 2000; vol. 1782
Huet (10.1016/j.scico.2009.12.007_b10) 1997; 7
10.1016/j.scico.2009.12.007_b21
McBride (10.1016/j.scico.2009.12.007_b25) 2008; 18
10.1016/j.scico.2009.12.007_b24
Peyton Jones (10.1016/j.scico.2009.12.007_b31) 2001; 180
Abott (10.1016/j.scico.2009.12.007_b1) 2005; 65
Cartwright (10.1016/j.scico.2009.12.007_b4) 1994; vol. 789
Wadler (10.1016/j.scico.2009.12.007_b36) 1995; vol. 925
Lämmel (10.1016/j.scico.2009.12.007_b19) 2002; vol. 2257
Meijer (10.1016/j.scico.2009.12.007_b28) 1995; vol. 925
Lämmel (10.1016/j.scico.2009.12.007_b18) 2004
Moggi (10.1016/j.scico.2009.12.007_b30) 1991; 93
Lämmel (10.1016/j.scico.2009.12.007_b20) 2003; vol. 2562
Sheard (10.1016/j.scico.2009.12.007_b33) 2004; 14
Liang (10.1016/j.scico.2009.12.007_b22) 1996; vol. 1058
10.1016/j.scico.2009.12.007_b29
Meijer (10.1016/j.scico.2009.12.007_b27) 1991; vol. 523
Harrison (10.1016/j.scico.2009.12.007_b9) 2000
References_xml – start-page: 4
  year: 1999
  end-page: 12
  ident: b3
  article-title: Quasiquotation in Lisp
  publication-title: Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, PEPM 1999, San Antonio, TX, USA, 22–23 January 1999
– start-page: 333
  year: 1995
  end-page: 343
  ident: b23
  article-title: Monad transformers and modular interpreters
  publication-title: Proceedings of ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
– volume: vol. 925
  start-page: 228
  year: 1995
  end-page: 266
  ident: b28
  article-title: Merging monads and folds for functional programming
  publication-title: Tutorial Text of Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques, Båstad, Sweden, 24–30 May 1995
– volume: vol. 1058
  start-page: 219
  year: 1996
  end-page: 234
  ident: b22
  article-title: Modular denotational semantics for compiler construction
  publication-title: Proceedings of Programming Languages and Systems, European Symposium on Programming
– reference: D. Espinosa, Semantic Lego, Ph.D. Thesis, Columbia University, 1995
– volume: 65
  start-page: 1
  year: 2005
  end-page: 28
  ident: b1
  publication-title: Fundamentae Informatica
– start-page: 155
  year: 2007
  end-page: 164
  ident: b38
  article-title: Constructing language processors with algebra combinators
  publication-title: Proceedings of International Conference on Generative Programming and Component Engineering
– reference: G. Malcolm, Algebraic Data Types and Program Transformation, Ph.D. Thesis, Groningen University, 1990
– volume: vol. 2562
  start-page: 357
  year: 2003
  end-page: 375
  ident: b20
  article-title: A Strafunski application letter
  publication-title: Proceedings of International Symposium on Practical Aspects of Declarative Languages
– start-page: 280
  year: 1998
  end-page: 288
  ident: b11
  article-title: Fold and unfold for program semantics
  publication-title: Proceedings of ACM SIGPLAN International Conference on Functional Programming
– volume: vol. 925
  start-page: 24
  year: 1995
  end-page: 52
  ident: b36
  article-title: Monads for functional programming
  publication-title: Tutorial Text of Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques, Båstad, Sweden, 24–30 May 1995
– start-page: 470
  year: 1997
  end-page: 482
  ident: b13
  article-title: PolyP—A polytypic programming language extension
  publication-title: Proceedings of ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
– volume: 4
  start-page: 413
  year: 1992
  end-page: 424
  ident: b26
  article-title: Paramorphisms
  publication-title: Formal Aspects of Computing
– volume: 7
  start-page: 549
  year: 1997
  end-page: 554
  ident: b10
  article-title: The Zipper
  publication-title: Journal of Functional Programming
– reference: E. Moggi, An abstract view of programming languages, Technical Report ECS-LFCS-90-113, Edinburgh Univ., 1990
– reference: L. Duponcheel, Using catamorphisms, subtypes and monad transformers for writing modular functional interpreters, 1995
– volume: 180
  year: 2001
  ident: b31
  article-title: Tackling the Awkward Squad: Monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell
  publication-title: Engineering Theories of Software Construction
– volume: 38
  start-page: 26
  year: 2003
  end-page: 37
  ident: b17
  article-title: Scrap your boilerplate: A practical design pattern for generic programming
  publication-title: SIGPLAN Notices
– volume: vol. 1782
  start-page: 230
  year: 2000
  end-page: 244
  ident: b14
  article-title: Type classes with functional dependencies
  publication-title: Proceedings of Programming Languages and Systems, European Symposium on Programming
– volume: vol. 2257
  start-page: 137
  year: 2002
  end-page: 154
  ident: b19
  article-title: Typed combinators for generic traversal
  publication-title: Proceedings of International Symposium on Practical Aspects of Declarative Languages
– volume: 44
  year: 2001
  ident: b8
  article-title: LPS: A language prototyping system using modular monadic semantics
  publication-title: Electronic Notes on Theoretical Computer Science
– start-page: 244
  year: 2004
  end-page: 255
  ident: b18
  article-title: Scrap more boilerplate: Reflection, zips, and generalised casts
  publication-title: Proceedings of ACM SIGPLAN International Conference on Functional Programming
– volume: vol. 789
  start-page: 244
  year: 1994
  end-page: 272
  ident: b4
  article-title: Extensible denotational language specifications
  publication-title: Proceedings of International Conference on Theoretical Aspects of Computer Software
– start-page: 61
  year: 1990
  end-page: 78
  ident: b37
  article-title: Comprehending monads
  publication-title: Proceedings of ACM Conference on LISP and Functional Programming, Nice, France, 27–29 June 1990
– year: 2006
  ident: b2
  article-title: System-Level Design with Rosetta
– volume: 18
  start-page: 1
  year: 2008
  end-page: 13
  ident: b25
  article-title: Applicative programming with effects
  publication-title: Journal of Functional Programming
– volume: vol. 523
  start-page: 124
  year: 1991
  end-page: 144
  ident: b27
  article-title: Functional programming with bananas, lenses, envelopes and barbed wire
  publication-title: Proceedings of ACM Conference on Functional Programming Languages and Computer Architecture
– reference: R. Lämmel, J. Visser, J. Kort, Dealing with large bananas, in: Proceedings of the Second Workshop on Generic Programming, WGP 2000, Ponte de Lima, Portugal, 6 July 2000, Utrecht University, 2000, pp. 46–59
– volume: 14
  start-page: 547
  year: 2004
  end-page: 587
  ident: b33
  article-title: Two-level types and parameterized modules
  publication-title: Journal of Functional Programming
– reference: IEEE. IEEE Standard VHDL Language Reference Manual, 1994
– volume: 93
  start-page: 55
  year: 1991
  end-page: 92
  ident: b30
  article-title: Notions of computation and monads
  publication-title: Information and Computation
– start-page: 22
  year: 1997
  end-page: 35
  ident: b32
  article-title: A type-directed, on-line partial evaluator for a polymorphic language
  publication-title: Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation
– start-page: 213
  year: 2000
  end-page: 229
  ident: b9
  article-title: Metacomputation-based compiler architecture
  publication-title: Proceedings of International Conference on Mathematics of Program Construction
– year: 2003
  ident: b16
  publication-title: Haskell 98 Language and Libraries — The Revised Report
– start-page: 1
  year: 2005
  end-page: 13
  ident: b5
  article-title: Associated types with class
  publication-title: Proceedings of ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
– start-page: 472
  year: 1994
  end-page: 492
  ident: b34
  article-title: Building interpreters by composing monads
  publication-title: Proceedings of ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
– volume: vol. 2051
  start-page: 357
  year: 2001
  end-page: 361
  ident: b35
  article-title: Stratego: A language for program transformation based on rewriting strategies — System description of stratego 0.5
  publication-title: Proceedings of International Conference on Rewriting Techniques and Applications
– reference: M.P. Jones, L. Duponcheel, Composing monads, Research report YALEU/DCS/RR-1004, Yale University, 1993
– volume: vol. 789
  start-page: 244
  year: 1994
  ident: 10.1016/j.scico.2009.12.007_b4
  article-title: Extensible denotational language specifications
– volume: vol. 523
  start-page: 124
  year: 1991
  ident: 10.1016/j.scico.2009.12.007_b27
  article-title: Functional programming with bananas, lenses, envelopes and barbed wire
– ident: 10.1016/j.scico.2009.12.007_b12
– volume: 65
  start-page: 1
  issue: 1–2
  year: 2005
  ident: 10.1016/j.scico.2009.12.007_b1
  article-title: ∂ for data
  publication-title: Fundamentae Informatica
– year: 2003
  ident: 10.1016/j.scico.2009.12.007_b16
– volume: vol. 2562
  start-page: 357
  year: 2003
  ident: 10.1016/j.scico.2009.12.007_b20
  article-title: A Strafunski application letter
– volume: 180
  year: 2001
  ident: 10.1016/j.scico.2009.12.007_b31
  article-title: Tackling the Awkward Squad: Monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell
  publication-title: Engineering Theories of Software Construction
– start-page: 333
  year: 1995
  ident: 10.1016/j.scico.2009.12.007_b23
  article-title: Monad transformers and modular interpreters
– start-page: 213
  year: 2000
  ident: 10.1016/j.scico.2009.12.007_b9
  article-title: Metacomputation-based compiler architecture
– ident: 10.1016/j.scico.2009.12.007_b24
– start-page: 244
  year: 2004
  ident: 10.1016/j.scico.2009.12.007_b18
  article-title: Scrap more boilerplate: Reflection, zips, and generalised casts
– volume: 93
  start-page: 55
  issue: 1
  year: 1991
  ident: 10.1016/j.scico.2009.12.007_b30
  article-title: Notions of computation and monads
  publication-title: Information and Computation
  doi: 10.1016/0890-5401(91)90052-4
– volume: 14
  start-page: 547
  issue: 5
  year: 2004
  ident: 10.1016/j.scico.2009.12.007_b33
  article-title: Two-level types and parameterized modules
  publication-title: Journal of Functional Programming
  doi: 10.1017/S095679680300488X
– start-page: 61
  year: 1990
  ident: 10.1016/j.scico.2009.12.007_b37
  article-title: Comprehending monads
– ident: 10.1016/j.scico.2009.12.007_b7
– year: 2006
  ident: 10.1016/j.scico.2009.12.007_b2
– start-page: 4
  year: 1999
  ident: 10.1016/j.scico.2009.12.007_b3
  article-title: Quasiquotation in Lisp
– volume: vol. 2257
  start-page: 137
  year: 2002
  ident: 10.1016/j.scico.2009.12.007_b19
  article-title: Typed combinators for generic traversal
– start-page: 22
  year: 1997
  ident: 10.1016/j.scico.2009.12.007_b32
  article-title: A type-directed, on-line partial evaluator for a polymorphic language
– ident: 10.1016/j.scico.2009.12.007_b15
– volume: vol. 2051
  start-page: 357
  year: 2001
  ident: 10.1016/j.scico.2009.12.007_b35
  article-title: Stratego: A language for program transformation based on rewriting strategies — System description of stratego 0.5
– volume: vol. 925
  start-page: 228
  year: 1995
  ident: 10.1016/j.scico.2009.12.007_b28
  article-title: Merging monads and folds for functional programming
– volume: vol. 1782
  start-page: 230
  year: 2000
  ident: 10.1016/j.scico.2009.12.007_b14
  article-title: Type classes with functional dependencies
– volume: 18
  start-page: 1
  issue: 1
  year: 2008
  ident: 10.1016/j.scico.2009.12.007_b25
  article-title: Applicative programming with effects
  publication-title: Journal of Functional Programming
  doi: 10.1017/S0956796807006326
– volume: vol. 925
  start-page: 24
  year: 1995
  ident: 10.1016/j.scico.2009.12.007_b36
  article-title: Monads for functional programming
– start-page: 470
  year: 1997
  ident: 10.1016/j.scico.2009.12.007_b13
  article-title: PolyP—A polytypic programming language extension
– volume: 38
  start-page: 26
  issue: 3
  year: 2003
  ident: 10.1016/j.scico.2009.12.007_b17
  article-title: Scrap your boilerplate: A practical design pattern for generic programming
  publication-title: SIGPLAN Notices
  doi: 10.1145/640136.604179
– ident: 10.1016/j.scico.2009.12.007_b21
– volume: 44
  issue: 2
  year: 2001
  ident: 10.1016/j.scico.2009.12.007_b8
  article-title: LPS: A language prototyping system using modular monadic semantics
  publication-title: Electronic Notes on Theoretical Computer Science
– start-page: 155
  year: 2007
  ident: 10.1016/j.scico.2009.12.007_b38
  article-title: Constructing language processors with algebra combinators
– volume: vol. 1058
  start-page: 219
  year: 1996
  ident: 10.1016/j.scico.2009.12.007_b22
  article-title: Modular denotational semantics for compiler construction
– start-page: 472
  year: 1994
  ident: 10.1016/j.scico.2009.12.007_b34
  article-title: Building interpreters by composing monads
– start-page: 1
  year: 2005
  ident: 10.1016/j.scico.2009.12.007_b5
  article-title: Associated types with class
– ident: 10.1016/j.scico.2009.12.007_b6
– volume: 4
  start-page: 413
  issue: 5
  year: 1992
  ident: 10.1016/j.scico.2009.12.007_b26
  article-title: Paramorphisms
  publication-title: Formal Aspects of Computing
  doi: 10.1007/BF01211391
– ident: 10.1016/j.scico.2009.12.007_b29
– volume: 7
  start-page: 549
  issue: 5
  year: 1997
  ident: 10.1016/j.scico.2009.12.007_b10
  article-title: The Zipper
  publication-title: Journal of Functional Programming
  doi: 10.1017/S0956796897002864
– start-page: 280
  year: 1998
  ident: 10.1016/j.scico.2009.12.007_b11
  article-title: Fold and unfold for program semantics
SSID ssj0006471
Score 1.850134
Snippet Modular Monadic Semantics (MMS) is a well-known mechanism for structuring modular denotational semantic definitions for programming languages. The principal...
SourceID crossref
elsevier
SourceType Index Database
Publisher
StartPage 543
SubjectTerms Generic programming
Modular semantics
Title Constructing language processors with algebra combinators
URI https://dx.doi.org/10.1016/j.scico.2009.12.007
Volume 75
WOSCitedRecordID wos000278243200005&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVESC
  databaseName: Elsevier SD Freedom Collection Journals 2021
  customDbUrl:
  eissn: 1872-7964
  dateEnd: 20180131
  omitProxy: false
  ssIdentifier: ssj0006471
  issn: 0167-6423
  databaseCode: AIEXJ
  dateStart: 19950201
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3da9swEBdZuoe9rNva0o9t-GFvq4tsWZb1WEr3xSiD9SNvRrakktJ4IS0hf0D_8J58kmOaUtbBXkwwOHHufjrdne7uR8gnlTCuwW-Pk8SqOAOXJJYaAleZm9QyWlPTksGc_xQnJ8VoJH8NBnehF2Z-LZqmWCzk9L-qGu6Bsl3r7DPU3X0p3IDPoHS4gtrh-leKdxScOBS2uezSkZ-n2BDgqHWwne360h0Zu5JyiI1d5H3T91PDkvdF5473IZRyTcJm1_aMjP1ozhZRankyNJ5M_InGVzWbjTsIXhjla0YxldMBLjTaYNHwzFcn-3yEO0oX_XzEaqMM5i3BHkOog7bMoK0tBDj3EoeYB2OMNCoedKJnWXnGeps0R76fFfuPqYirA3AfamztbJO9SKz7YLD2b_dS7p2odHt1Jl-QtRTCJzoka4ffj0c_uh09x8C9-xNhelVbJ7jyU497OD2v5fQNee3DjegQYfKWDEzzjqwHKo_Iq3mDyD5qooCaaImayKEm8qiJeqjZJGdfjk-PvsWeVSOuU85uYyttIRjTmdSSJbq2laKFTfKagyporqmmhqdaWS0oL6qqMmnt5vQqC4tYaMW2yLD505htEtEaguGMs7yCqJqbXFaw8HWaVCKj1tBqh-wHSZRTHJ5ShqrCq7IVnKNBlWWSliC4HZIHaZXe_0O_rgT1PvXg7r8-uEdeLSH8ngxBzuYDeVnPb8c3s48eBvfgjII3
linkProvider Elsevier
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Constructing+language+processors+with+algebra+combinators&rft.jtitle=Science+of+computer+programming&rft.au=Frisby%2C+Nicolas&rft.au=Kimmell%2C+Garrin&rft.au=Weaver%2C+Philip&rft.au=Alexander%2C+Perry&rft.date=2010-07-01&rft.pub=Elsevier+B.V&rft.issn=0167-6423&rft.eissn=1872-7964&rft.volume=75&rft.issue=7&rft.spage=543&rft.epage=572&rft_id=info:doi/10.1016%2Fj.scico.2009.12.007&rft.externalDocID=S0167642309001749
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0167-6423&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0167-6423&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0167-6423&client=summon