Results 1 - 10
of
43
Domain Specific Embedded Compilers
- IN PROCEEDINGS OF THE 2ND CONFERENCE ON DOMAIN-SPECIFIC LANGUAGES
, 1999
"... Domain-specific embedded languages (DSELs) expressed in higher-order, typed (HOT) languages provide a composable framework for domain-specific abstractions. Such a framework is of greater utility than a collection of stand-alone domain-specific languages. Usually, embedded domain specific languages ..."
Abstract
-
Cited by 166 (9 self)
- Add to MetaCart
Domain-specific embedded languages (DSELs) expressed in higher-order, typed (HOT) languages provide a composable framework for domain-specific abstractions. Such a framework is of greater utility than a collection of stand-alone domain-specific languages. Usually, embedded domain specific languages are build on top of a set of domain specific primitive functions that are ultimately implemented using some form of foreign function call. We sketch a general design pattern for embedding client-server style services into Haskell using a domain specific embedded compiler for the server's source language. In particular we apply this idea to implement Haskell/DB, a domain specific embdedded compiler that dynamically generates of SQL queries from monad comprehensions, which are then executed on an arbitrary ODBC database server.
BioKleisli: A Digital Library for Biomedical Researchers
, 1996
"... Data of interest to biomedical researchers associated with the Human Genome Project (HGP) is stored all over the world in a number of different electronic data formats and accessible through a varietyof interfaces and retrieval languages. These data sources include conventional relational databases ..."
Abstract
-
Cited by 84 (15 self)
- Add to MetaCart
(Show Context)
Data of interest to biomedical researchers associated with the Human Genome Project (HGP) is stored all over the world in a number of different electronic data formats and accessible through a varietyof interfaces and retrieval languages. These data sources include conventional relational databases with SQL interfaces, formatted text files on top of which indexing is provided for efficient retrieval (ASN.1-Entrez), and binary files that can be interpreted textually or graphically via special purpose interfaces (ACeDB). Researchers within the HGP wanttocombine data from these different data sources, add value through sophisticated data analysis techniques (such as the biosequence comparison software BLAST and FASTA), and view it using special purpose scientific visualization tools. However, currently there are no commercial tools for enabling such an integrated digital library, and a fundamental barrier to developing such tools appears to be one of language design and optimization: The data f...
A Polymorphic Record Calculus and Its Compilation
- ACM Transactions on Programming Languages and Systems
, 1995
"... this article appeared in Proceedings of ACM Symposium on Principles of Programming Languages, 1992, under the title \A compilation method for ML-style polymorphic record calculi." This work was partly supported by the Japanese Ministry of Education under scienti c research grant no. 06680319. A ..."
Abstract
-
Cited by 78 (10 self)
- Add to MetaCart
(Show Context)
this article appeared in Proceedings of ACM Symposium on Principles of Programming Languages, 1992, under the title \A compilation method for ML-style polymorphic record calculi." This work was partly supported by the Japanese Ministry of Education under scienti c research grant no. 06680319. Author's address: Research Institute for Mathematical Sciences, Kyoto University, Sakyo-ku, Kyoto 606-01, JAPAN; email: ohori@kurims.kyoto-u.ac.jp Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of ACM. To copy otherwise, or to republish, requires a fee and/or speci c permission. c 1999 ACM 0164-0925/99/0100-0111 $00.75
The COCOON Object Model
, 1994
"... The COCOON model was intended to extend the concepts of relational database management systems (DBMSs) beyond nested relational to object-oriented ones. Key characteristics of COCOON and its database language COOL are: generic, set-oriented query and update operators similar to relational algebra an ..."
Abstract
-
Cited by 63 (21 self)
- Add to MetaCart
The COCOON model was intended to extend the concepts of relational database management systems (DBMSs) beyond nested relational to object-oriented ones. Key characteristics of COCOON and its database language COOL are: generic, set-oriented query and update operators similar to relational algebra and SQL updates, respectively; object-preserving semantics of query operators, which allows for the definition of updatable views; update operations that keep model-inherent integrity constraints consistent; a separation of the two aspects of programming language "classes": type vs. collection; predicative description of collections, similar to "defined concepts" in KL-One-like knowledge representation languages; automatic classification of objects and views (positioning in the class hierarchy). This report gives a comprehensive introduction to the COCOON model and its language COOL as well as a formal definition. Our formalization uses denotational semantics, a popular technique in programming...
Semantics for communication primitives in a polymorphic language
- In Proc. 20th ACM Symp. on Principles of Programming Languages
, 1993
"... We propose a method to extend an ML-style polymorphic language with transparent communication primitives, and give their precise operational semantics. These primitives allow any polymorphic programs de nable in ML to be used remotely in a manner completely transparent to the programmer. Furthermore ..."
Abstract
-
Cited by 36 (7 self)
- Add to MetaCart
(Show Context)
We propose a method to extend an ML-style polymorphic language with transparent communication primitives, and give their precise operational semantics. These primitives allow any polymorphic programs de nable in ML to be used remotely in a manner completely transparent to the programmer. Furthermore, communicating programs may be based on di erent architecture and use di erent data representations. We de ne a polymorphic functional calculus with transparent communication primitives, which we call dML, as an extension of Damas and Milner's proof system for ML. We then develop an algorithm to translate dML to a \core " language containing only low-level communication primitives that are readily implementable in most of distributed environments. To establish the type safety of communicating programs, we de ne an operational semantics of the core language and prove that the polymorphic type system of dML is sound with respect to the operational semantics of the translated terms of the core language.
Static type inference for parametric classes
- In Proceedings of ACM OOPSLA conference
, 1989
"... Method inheritance and data abstraction are central features of object-oriented programming that are attained through a hierarchical organization of classes. Recent studies have shown that method inheritance can be supported by an ML style type inference when extended to labeled records. This is bas ..."
Abstract
-
Cited by 32 (8 self)
- Add to MetaCart
(Show Context)
Method inheritance and data abstraction are central features of object-oriented programming that are attained through a hierarchical organization of classes. Recent studies have shown that method inheritance can be supported by an ML style type inference when extended to labeled records. This is based on the observation that a function that selects a field f of a record can be given a polymorphic type that enables it to be applied to any record which contains a field f. Several type systems also provide data abstraction through abstract type declarations. However, these two features have not yet been properly integrated in a statically checked polymorphic type system. This paper proposes a static type system that achieves this integration in an ML-like polymorphic language by adding a class construct which allows the programmer to build a hierarchy of classes connected by multiple inheritance declarations. Classes can be parameterized by types allowing “generic ” defi-nitions. The type correctness of class declarations is statically checked, and a principal scheme is inferred for any type correct program containing methods and objects defined in classes. Moreover, the type system can be extended to include the structures and operations needed for database programming and therefore can serve as a basis of an object-oriented database programming lan-guage. 1
Comprehension Syntax
- SIGMOD RECORD
, 1994
"... The syntax of comprehensions is very close to the syntax of a number of practical database query languages and is, we believe, a better starting point than first-order logic for the development of database languages. We give an informal account of a language based on comprehension syntax that deals ..."
Abstract
-
Cited by 24 (4 self)
- Add to MetaCart
The syntax of comprehensions is very close to the syntax of a number of practical database query languages and is, we believe, a better starting point than first-order logic for the development of database languages. We give an informal account of a language based on comprehension syntax that deals uniformly with a variety of collection types; it also includes pattern matching, variant types and function definition. We show, again informally, how comprehension syntax is a natural fragment of structural recursion, a much more powerful programming paradigm for collection types. We also show that a very small "abstract syntax language" can serve as a basis for the implementation and optimization of comprehension syntax.
Dynamic Typing for Distributed Programming in Polymorphic Languages
- ACM Transactions on Programming Languages and Systems
, 1996
"... While static typing is widely accepted as being necessary for secure program execution, dynamic typing is also viewed as being essential in some applications. Dynamics have been proposed as a way of introducing dynamic typing into statically typed languages, with particular application to programmin ..."
Abstract
-
Cited by 24 (6 self)
- Add to MetaCart
While static typing is widely accepted as being necessary for secure program execution, dynamic typing is also viewed as being essential in some applications. Dynamics have been proposed as a way of introducing dynamic typing into statically typed languages, with particular application to programming in distributed environments. However proposals for incorporating dynamics into languages with parametric polymorphism, such as ML, have serious shortcomings. A new approach is presented to extending ML-like languages with dynamic typing. This approach has particular usefulness for programming in distributed environments, where many of the practical applications of dynamic typing arise. At the heart of the approach is the use of type-based computation, where polymorphic functions may analyse the structure of their type arguments. This approach solves several open problems with the use of traditional dynamics in polymorphic languages. Type-based computation is also the basis for programmer-d...
A Polymorphic Calculus for Views and Object Sharing
- In Proceedings of the 13th ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems
, 1994
"... We present a typed polymorphic calculus that supports a general mechanism for view definition and object sharing among classes. In this calculus, a class can contain inclusion specifications of objects from other classes. Each such specification consists of a em predicate determining the subset of o ..."
Abstract
-
Cited by 14 (0 self)
- Add to MetaCart
(Show Context)
We present a typed polymorphic calculus that supports a general mechanism for view definition and object sharing among classes. In this calculus, a class can contain inclusion specifications of objects from other classes. Each such specification consists of a em predicate determining the subset of objects to be included and a viewing function under which those included objects are manipulated. Both predicates and viewing functions can be any type consistent programs definable in the polymorphic calculus. Inclusion specifications among classes can be cyclic, allowing mutually recursive class definitions. These features achieve flexible view definitions and wide range of class organizations in a compact and elegant way. Moreover, the calculus provides a suitable set of operations for views and classes so that the programmer can manipulate views and classes just the same way as one deals with ordinary records and sets. The proposed calculus uniformly integrates views and classes in a polymorphic type system of a database programming language similar to Machiavelli. The calculus has a type inference algorithm that relieves the programmer from complicated type declarations of views and classes. The polymorphic type system of the calculus is also shown to be sound, which guarantees complete static check of type consistency of programs involving classes and views. Through these properties, the programmer can enjoy full advantages of polymorphism and type inference when writing object-oriented database programs.
Web programming with SMLserver
- In Fifth International Symposium on Practical Aspects of Declarative Languages (PADL’03
, 2003
"... Abstract. SMLserver is an efficient multi-threaded Web server platform for Standard ML programs. It provides access to a variety of different Relational Database Management Systems (RDBMSs), including Oracle, MySQL, and PostgreSQL. We describe the execution model and the region-based memory model of ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
(Show Context)
Abstract. SMLserver is an efficient multi-threaded Web server platform for Standard ML programs. It provides access to a variety of different Relational Database Management Systems (RDBMSs), including Oracle, MySQL, and PostgreSQL. We describe the execution model and the region-based memory model of SMLserver and explain our solutions to the design issues we were confronted with in the development. We also describe our experience with programming and maintaining Web applications using Standard ML, which provides higher-order functions, static typing, and a rich module system. Through experiments based on user scenarios for some common Web tasks, the paper demonstrates the efficiency of SMLserver, both with respect to script execution and database connectivity. 1