Network


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

Hotspot


Dive into the research topics where Nicolas Frisby is active.

Publication


Featured researches published by Nicolas Frisby.


Journal of Functional Programming | 2014

The Kansas University rewrite engine - A Haskell-Embedded Strategic Programming Language with Custom Closed Universes.

Neil Sculthorpe; Nicolas Frisby; Andy Gill

When writing transformation systems, a significant amount of engineering effort goes into setting up the infrastructure needed to direct individual transformations to specific targets in the data being transformed. Strategic programming languages provide general-purpose infrastructure for this task, which the author of a transformation system can use for any algebraic data structure. The Kansas University Rewrite Engine (KURE) is a typed strategic programming language, implemented as a Haskell-embedded domain-specific language. KURE is designed to support typed transformations over typed data, and the main challenge is how to make such transformations compatible with generic traversal strategies that should operate over any type. Strategic programming in a typed setting has much in common with datatype-generic programming. Compared to other approaches to datatype-generic programming, the distinguishing feature of KURE’s solution is that the user can configure the behaviour of traversals based on the location of each datum in the tree, beyond their behaviour being determined by the type of each datum. This article describes KURE’s approach to assigning types to generic traversals, and the implementation of that approach. We also compare KURE, its design choices, and their consequences, with other approaches to strategic and datatype-generic programming.


automated software engineering | 2007

Modular and generic programming with interpreterlib

Philip Weaver; Garrin Kimmell; Nicolas Frisby; Perry Alexander

Modular monadic semantics (MMS) is a well-known technique for structuring modular denotational semantic definitions. Families of language constructs are independently defined using syntactic functors and semantic algebras that can be combined in a mix-and-match fashion to create complete language definitions. We introduce InterpreterLib, a Haskell library that implements and extends MMS techniques for writing composable analyses. In addition to modular analyses composition, InterpreterLib provides algebra combinators, explicit algebra semantics, preprocessors for boiler plate generation and generic programming techniques adapted to language analysis. The key benefits of these features are reliability, increased code reuse via modularity and the ability to rapidly retarget component analyses.


workshop on generic programming | 2012

A pattern for almost homomorphic functions

Nicolas Frisby; Andy Gill; Perry Alexander

Modern type systems present the programmer with a trade-off between correctness and code complexity--more precise, or exact, types that allow only legal values prevent runtime errors while less precise types enable more reuse. Unfortunately, the software engineering benefits of reuse and avoiding duplicate code currently outweigh assurance gains of exact types. We factor out a pattern common in conversions that result from using exact types as a reusable function, extending existing generic programming techniques to avoid code duplication and enable reuse.


symposium/workshop on haskell | 2012

Hobbits for Haskell: a library for higher-order encodings in functional programming languages

Edwin M. Westbrook; Nicolas Frisby; Paul Brauner

Adequate encodings are a powerful programming tool, which eliminate whole classes of program bugs: they ensure that a program cannot generate ill-formed data, because such data is not part of the representation; and they also ensure that a program is well-defined, meaning that it cannot have different behaviors on different representations of the same piece of data. Unfortunately, it has proven difficult to define adequate encodings of programming languages themselves. Such encodings would be very useful in language processing tools such as interpreters, compilers, model-checking tools, etc., as these systems are often difficult to get correct. The key problem in representing programming languages is in encoding binding constructs; previous approaches have serious limitations in either the operations they allow or the correcness guarantees they make. In this paper, we introduce a new library for Haskell that allows the user to define and use higher-order encodings, a powerful technique for representing bindings. Our library allows straightforward recursion on bindings using pattern-matching, which is not possible in previous approaches. We then demonstrate our library on a medium-sized example, lambda-lifting, showing how our library can be used to make strong correctness guarantees at compile time.


Soft Computing | 2009

Writing Composable Software with InterpreterLib

Mark Snyder; Nicolas Frisby; Garrin Kimmell; Perry Alexander

InterpreterLib is a Haskell library for building and composing modular syntactic and semantic definitions. We identify two forms of composition within this domain. Composition along syntax combines semantics for denoting differing term spaces to a common denotational domain. Composition along semantics combines semantics for denoting a common term space to differing domains. We demonstrate these composition mechanisms by applying InterpreterLib to examples and then relate our experiences with InterpreterLib implementing tools for the Rosetta language.


Science of Computer Programming | 2010

Constructing language processors with algebra combinators

Nicolas Frisby; Garrin Kimmell; Philip Weaver; Perry Alexander

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.


automated software engineering | 2008

Unifying Analysis Tools with Rosetta

Nicolas Frisby

The Rosetta system specification language will require a variety of analysis capabilities to assist system designers. The languages generality prohibits the development of a single analysis tool. It is proposed, instead, to leverage the existing analysis tools and create an analysis environment unified around the Rosetta language. A semi-automated tool, the Rosetta Nexus, will generated tool-specific analysis models and a correspondence with the original Rosetta specifications.


engineering of computer-based systems | 2011

Model Composition in Rosetta

Nicolas Frisby; Megan Peck; Mark Snyder; Perry Alexander


Archive | 2011

Engineering Locally Nameless Implicit Module Imports

Nicolas Frisby; Perry Alexander


Archive | 2008

Integrating a Language Processing DSL with Haskell

Nicolas Frisby; Garrin Kimmell; Perry Alexander

Collaboration


Dive into the Nicolas Frisby's collaboration.

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