Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Emir Pasalic is active.

Publication


Featured researches published by Emir Pasalic.


Electronic Notes in Theoretical Computer Science | 2008

Meta-programming With Built-in Type Equality

Tim Sheard; Emir Pasalic

We report our experience with exploring a new point in the design space for formal reasoning systems: the development of the programming language @Wmega. @Wmega is intended as both a practical programming language and a logic. The main goal of @Wmega is to allow programmers to describe and reason about semantic properties of programs from within the programming language itself, mainly by using a powerful type system. We illustrate the main features of @Wmega by developing an interesting meta-programming example. First, we show how to encode a set of well-typed simply typed @l-calculus terms as an @Wmega data-type. Then, we show how to implement a substitution operation on these terms that is guaranteed by the @Wmega type system to preserve their well-typedness.


partial evaluation and semantic-based program manipulation | 2007

Concoqtion: indexed types now!

Seth Fogarty; Emir Pasalic; Jeremy G. Siek; Walid Taha

Almost twenty years after the pioneering efforts of Cardelli, the programming languages community is vigorously pursuing ways to incorporate Fω-style indexed types into programming languages. This paper advocates Concoqtion, a practical approach to adding such highly expressive types to full-fledged programming languages. The approach is applied to MetaOCaml using the Coq proof checker to conservatively extend Hindley-Milner type inference. The implementation of MetaOCaml Concoqtion requires minimal modifications to the syntax, the type checker, and the compiler; and yields a language comparable in notation to the leading proposals. The resulting language provides unlimited expressiveness in the type system while maintaining decidability. Furthermore, programmers can take advantage of a wide range of libraries not only for the programming language but also for the indexed types. Programming in MetaOCaml Concoqtion is illustrated with small examples and a case study implementing a statically-typed domain-specific language.


conference on domain specific languages | 1999

DSL implementation using staging and monads

Tim Sheard; Zine-el-abidine Benaissa; Emir Pasalic

The impact of Domain Specific Languages (DSLs) on software design is considerable. They allow programs to be more concise than equivalent programs written in a high-level programming languages. They relieve programmers from making decisions about data-structure and algorithm design, and thus allows solutions to be constructed quickly. Because DSLs are at a higher level of abstraction they are easier to maintain and reason about than equivalent programs written in a high-level language, and perhaps most importantly they can be written by domain experts rather than programmers. The problem is that DSL implementation is costly and prone to errors, and that high level approaches to DSL implementation often produce inefficient systems. By using two new programming language mechanisms, program staging and monadic abstraction, we can lower the cost of DSL implementations by allowing reuse at many levels. These mechanisms provide the expressive power that allows the construction of many compiler components as reusable libraries, provide a direct link between the semantics and the low-level implementation, and provide the structure necessary to reason about the implementation.


Journal of Functional Programming | 2004

Two-level types and parameterized modules

Tim Sheard; Emir Pasalic

In this paper, we describe two techniques for the efficient, modularized implementation of a large class of algorithms. We illustrate these techniques using several examples, including efficient generic unification algorithms that use reference cells to encode substitutions, and highly modular language implementations. We chose these examples to illustrate the following important techniques that we believe many functional programmers would find useful. First, defining recursive data types by splitting them into two levels: a structure defining level, and a recursive knot-tying level. Second, the use of rank-2 polymorphism inside Haskells record types to implement a kind of type-parameterized modules. Finally, we explore techniques that allow us to combine already existing recursive Haskell data-types with the highly modular style of programming proposed here.


partial evaluation and semantic-based program manipulation | 2006

A monadic approach for avoiding code duplication when staging memoized functions

Kedar N. Swadi; Walid Taha; Oleg Kiselyov; Emir Pasalic

Building program generators that do not duplicate generated code can be challenging. At the same time, code duplication can easily increase both generation time and runtime of generated programs by an exponential factor. We identify an instance of this problem that can arise when memoized functions are staged. Without addressing this problem, it would be impossible to effectively stage dynamic programming algorithms. Intuitively, direct staging undoes the effect of memoization. To solve this problem once and for all, and for any function that uses memoization, we propose a staged monadic combinator library. Experimental results confirm that the library works as expected. Preliminary results also indicate that the library is useful even when memoization is not used.


generative programming and component engineering | 2004

Meta-programming with Typed Object-Language Representations

Emir Pasalic; Nathan Linger

We present two case studies demonstrating the use of type-equality constraints in a meta-language to enforce semantic invariants of object-language programs such as scoping and typing rules. We apply this technique to several interesting problems, including (1) the construction of tagless interpreters; (2) statically checking de Bruijn indices involving pattern-based binding constructs; and (3) evolving embedded DSL implementations to include domain-specific types and optimizations that respect those types.


generative programming and component engineering | 2005

Implicitly heterogeneous multi-stage programming

Jason Eckhardt; Roumen Kaiabachev; Emir Pasalic; Kedar N. Swadi; Walid Taha

Previous work on semantics-based multi-stage programming (MSP) language design focused on homogeneous designs, where the generating and the generated languages are the same. Homogeneous designs simply add a hygienic quasi-quotation and evaluation mechanism to a base language. An apparent disadvantage of this approach is that the programmer is bound to both the expressivity and performance characteristics of the base language. This paper proposes a practical means to avoid this by providing specialized translations from subsets of the base language to different target languages. This approach preserves the homogeneous “look” of multi-stage programs, and, more importantly, the static guarantees about the generated code. In addition, compared to an explicitly heterogeneous approach, it promotes reuse of generator source code and systematic exploration of the performance characteristics of the target languages. To illustrate the proposed approach, we design and implement a translation to a subset of C suitable for numerical computation, and show that it preserves static typing. The translation is implemented, and evaluated with several benchmarks. The implementation is available in the online distribution of MetaOCaml.


Archive | 2004

The role of type equality in meta-programming

Tim Sheard; Emir Pasalic


Archive | 2004

Meta-programming With Built-in Type Equality (Extended Abstract)

Tim Sheard; Emir Pasalic


international test conference | 2001

Automated Translation of Legacy Code for ATE

Andrew Moran; Jim Teisher; Andrew Gill; Emir Pasalic; John Veneruso

Collaboration


Dive into the Emir Pasalic's collaboration.

Top Co-Authors

Avatar

Tim Sheard

Portland State University

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge