An Idealized MetaML: Simpler, and More Expressive? - CiteSeerX
Recommend Documents
Since they are based on expressions of the underlying programming language, they can ... contract between the user and provider of a software component (cf.
for detection of antibody to malignant catarrhal fever viruses. Hong Li ... sera collected from OvHV-2-infected sheep and from cattle, bison, and deer with clinical ...
Jun 28, 2006 - Finding Frequent Items over Sliding Windows. L.K. Lee ..... 8 window W23. Figure 1: An example with λ = 3 and window size n = 15. nx is the ...
It is based on (i) a set of possible states of the world, (ii) a set of ... system that put the decision-theoretic appro
Jun 5, 2012 - A fairer, simpler and more efficient taxation system. 5 yeAr reform plAn. June 2012. AustrAliAn cApitAl te
and Schindler et al. ... more (time) efficient rank estimation than representing it as 16 lists of size 28. ..... Our experiments were performed with Matlab scripts,.
Notes in Computer Science, pages 90â101. Springer, Berlin ... Westview Press, Boulder. Luce, R. D. and ... Philosophy
Apr 10, 2016 - ematical modeling of air flow in geometrically complicated areas. It summarizes ... Due to the limitations of the wind tunnel and for keeping the exercise simple ... The pressure gradient was chosen so that the average velocity at the
there is a Boolean algebra of events (sets of states) which determines the richness of the set of acts. ..... 1981, p. 1
Jeffrey, R. C. (1965). The Logic of Decision. McGraw-Hill, New York. Jeffrey, R. C. (1983). The Logic of Decision. Unive
5.30 Alternate method names for a single method declaration . . . 102 ...... ments through string concatenation because they minimize the possibility of SQL- injection ...... [32] Neal Feinberg, Sonya E. Keene, Robert O. Mathews, and P. Tucker.
this service for the implementation of a sentient application reactive to the ... The development of even a conceptually simple sentient application is non-trivial.
super-bag relationships to be used in subscription filters, possibly composed with any of ..... information, context and services offered by existing heterogeneous ..... This can be likened to assigning to an email message a subject line, except in .
Keywords: formal methods, liberal speci cation, redundancy, debugging, history constraint. ... languages, human factors; D.2.m Software Engineering Miscellaneous | reusable ... speci cation languages more e ective tools for communication.
Nowadays the pre- and postcondition technique is considered a standard technique in software development as it is being taught in almost every basic software ...
Publish-subscribe event systems route event messages from producers ... sense is increased through the ability for secti
cost across the city are compensated by the differences in land price or ... however, are concerned with monocentric cities served by only a single travel mode. .... residents is to maximize their respective utilities within their budget constraint.
soup is âgreat for cookingâ, and the can additionally specifies its net weight, as shown .... take aerial photographs appeared 23 times in all the books scanned by ...
Rexroth 2.0 will definitely make our organization more cus- tomer focused.” ...
about other technological fields, such as through e- learning or product training ...
(1989), George and Liu (1981), or my class notes (Misztal ..... Comments by Drs. George Wiggans and Curt. Van Tassel are gratefully appreciated. Several.
Jan 22, 2007 - e The final concentration was 0.3 with the TaqMan assay and 0.7 with the ..... f Provided by Laboratoire National de la Protection des Vegataux, Nancy, ..... Davidson, J. M., S. Werres, M. Garbelotto, E. Hansen, and D. M. Rizzo.
customers and captures profits. It is the entire system for delivering utility to
customers and earning a profit from that activity. ➢Source: Adrian Slywotzky,
Value ...
This paper also focuses on the different sets of Speech Act inspired language action lists developed ..... act as specified in 4.3 the template requires a greeting.
We present a semantics of mocking, based on a process calculus- like formalism ... an API, but depend on the APIs of other components to implement it. When a.
An Idealized MetaML: Simpler, and More Expressive? - CiteSeerX
MetaML is a multi-stage functional programming language featuring three ... mand, contract #F19628-96-C-0161, NSF Grant IRI-9625462, DoD contract \Do-.
An Idealized MetaML: Simpler, and More Expressive? Eugenio Moggi1, Walid Taha2, Zine El-Abidine Benaissa2 , and Tim Sheard2 1 DISI, Univ di Genova
Abstract. MetaML is a multi-stage functional programming language
featuring three constructs that can be viewed as statically-typed re nements of the back-quote, comma, and eval of Scheme. Thus it provides special support for writing code generators and serves as a semanticallysound basis for systems involving multiple interdependent computational stages. In previous work, we reported on an implementation of MetaML, and on a reduction semantics and type-system for MetaML. In this paper, we present An Idealized MetaML (AIM) that is the result of our study of a categorical model for MetaML. An important outstanding problem is nding a type system that provides the user with a means for manipulating both open and closed code. This problem has eluded eorts by us and other researchers for over three years. AIM solves the issue by providing two type constructors, one classi es closed code and the other open code, and exploiting the way they interact. We point out that AIM can be verbose, and outline a possible remedy relating to the strictness of the closed code type.
1 Introduction \If thought corrupts language, language can also corrupt thought"1 . Staging com-
putation into multiple steps is a well-known optimization technique used in many important algorithms, such as high-level program generation, compiled program execution, and partial evaluation. Yet few typed programming languages allow us to express staging in a natural and concise manner. MetaML was designed to ll this gap. Intuitively, MetaML has a special type for code that combines some ? The research reported in this paper was supported by the USAF Air Materiel Com-
mand, contract #F19628-96-C-0161, NSF Grant IRI-9625462, DoD contract \Domain Speci c Languages as a Carrier for Formal Methods", MURST progetto co nanziato \Tecniche formali per la speci ca, l'analisi, la veri ca, la sintesi e la trasformazione di sistemi software", ESPRIT WG APPSEM. 1 George Orwell, Politics and the English Language, 1946.
features of both open code, that is, code that can contain free variables, and closed code, that is, code that contains no free variables. In a statically typed setting, open code and closed code have dierent properties, which we explain in the following section.
Open and Closed Code Typed languages for manipulating code fragments
either have a type constructor for open code [9,6,3,11], or a type constructor for closed code [4,13]. Languages with open code types are useful in the study of partial evaluation. Typically, they provide constructs for building and combining code fragments with free variables, but do not allow for executing such fragments. Being able to construct open fragments enables the user to force computations \under a lambda". Executing code fragments in such languages is hard because code can contain \not-yet-bound identi ers". In contrast, languages with closed code types are useful in the study of run-time (machine) code generation. Typically, they provide constructs for building and executing code fragments, but do not allow for forcing computations \under a lambda". The importance of having both a way to construct and combine open code and to execute closed code within the same language can be intuitively explained in the context of Scheme. Ecient implementations of Domain-Speci c or \little" languages can be developed as follows: First, build a translator from the source language to Scheme, then use eval to execute the generated Scheme code. Because such a translator will be de ned by induction over the structure of the source term, it will need to return open terms when building the inside of a abstraction (or any such binding construct), which can (and will often) contain free variables. For many languages, such an implementation would be almost as simple as an interpreter for the source language (especially if back-quote and comma are utilized), but would incur almost none of the overhead associated with an interpreter.
MetaML MetaML [11,10] provides three constructs for manipulating open code and executing it: Brackets h i, Escape ~ and Run run . An expression hei defers the computation of e; ~ e splices the deferred expression obtained by evaluating e into the body of a surrounding Bracketed expression; and run e evaluates e to obtain a deferred expression, and then evaluates it. Note that ~e is only legal within lexically enclosing Brackets. Finally, Brackets in types such as are read \Code of int". To illustrate, consider the following interactive session: -| val rec exp = fn n => fn x => if n=0 then else < ~x * ~(exp (n-1) x) >; val exp = fn : int -> -> -| val exponent = fn n => ~(exp n )>; val exponent = fn : int -> int>