An introduction to 2-categories is given by illustrating how the structure of typed lambda calculus may naturally be viewed as a 2-category. In this vein. the structure of computations or conversions gives rise to notions of lax 2':"adjointness.
we develop an approach for reconciling open programming -- the development of programs that support dynamic exchange of higher-order values with strong static typing. conventional functional language extended with a set of orthogonal features like higher-order modules, dynamic type checking, higher-order serialisation, and concurrency. On top of these a flexible system of dynamic components and a simple but expressive notion of distribution is realised. The central concept in this design is the packag}, a first-class value embedding a module along with its interface type. formal model for abstract types that is not invalidated by the presence of primitives for dynamic type inspection, as is the case for the standard model based on existential quantification. For that we present an idealised language in form of an extended lambda-calculus, which can express dynamic generation of types.
Various concurrency primitives have been added to sequential programming languages, in order to turn them concurrent. Prominent examples are concurrent buffers for Haskell, channels in Concurrent ML, joins in JoCaml, and handled futures in Alice ML. Even though one might conjecture that all these primitives provide the same expressiveness, proving this equivalence is an open challenge in the area of program semantics. In this paper, we establish a first instance of this conjecture. We show that concurrent buffers can be encoded in the lambda calculus with futures underlying Alice ML. Our correctness proof results from a systematic method, based on observational semantics with respect to may and must convergence.
The need for flexible forms of serialisation arises under many circumstances, e.g. for doing high-level inter-process communication or to achieve persistence. Many languages, including variants of ML, thus offer pickling as a system service, but usually in a both unsafe and inexpressive manner, so that its use is discouraged. In contrast, safe generic pickling plays a central role in the design and implementation of Alice ML: components are defined as pickles, and modules can be exchanged between processes using pickling. For that purpose, pickling has to be higher-order and typed (HOT), i.e. embrace code mobility and involve runtime type checks for safety. We show how HOT pickling can be realised with a modular architecture consisting of multiple abstraction layers for separating concerns, and how both language and implementation benefit from a design consistently based on pickling.
We introduce a new lambda calculus with futures, Lambda(fut), that models the operational semantics of concurrent statically typed functional programming languages with mixed eager and lazy threads such as Alice ML, a concurrent extension of Standard ML. Lambda(fut) is a minimalist extension of the call-by-value lambda-calculus that is sufficiently expressive to define and combine a variety of standard concurrency abstractions, such as channels, semaphores, and ports. Despite its minimality, the basic machinery of Lambda(fut) is sufficiently powerful to support explicit recursion and call-by-need evaluation. We present a static type system for Lambda(fut) and distinguish a fragment of Lambda(fut) that we prove to be uniformly confluent. This result confirms our intuition that reference cells are the sole source of indeterminism.
Despite its powerful module system, ML has not yet evolved for the modern world of dynamic and open modular programming, to which more primitive languages have adapted better so far. We present the design and semantics of a simple yet expressive first-class component system for ML. It provides dynamic linking in a type-safe and type-flexible manner, and allows selective execution in sandboxes. The system is defined solely by reduction to higher-order modules plus an extension with simple module-level dynamics, which we call packages. To represent components outside processes we employ generic pickling. We give a module calculus formalising the semantics of packages and pickling.
ML modules provide hierarchical namespace management, as well as fine-grained control over the propagation of type information, but they do not allow modules to be broken up into separately compilable, mutually recursive components. Mixin modules facilitate recursive linking of separately compiled components, but they are not hierarchically composable and typically do not support type abstraction. We synthesize the complementary advantages of these two mechanisms in MixML. A MixML module is like an ML structure with some components specified but not defined unifing the ML structure and signature languages into one. MixML seamlessly integrates hierarchical composition, translucent MLstyle data abstraction, and mixin-style recursive linking.Tthe design of MixML is minimalist emphasizing how all the interesting features of the ML module system can be understood simply as stylized uses of a small set of orthogonal underlying constructs, with mixin composition playing a central role.
Daniel Fridlender Mia Indrika March 2001 Inspired by Danvy, we describe a technique for defining, within the Hindley-Milner type system, some functions which seem to require a language with dependent types. We illustrate this by giving a general definition of zipWith for which the Haskell library provides a family of functions, each member of the family having a different type and arity. Our technique consists in introducing ad hoc codings for natural numbers which resemble numerals in lambda-calculus
Dependent type theory is rich enough to express that a program satisfies an input/output relational specification, but it could be hard to construct the proof term. On the other hand, squiggolists know very well how to show that one relation is included in another by algebraic reasoning. We demonstrate how to encode functional and relational derivations in a dependently typed programming language. A program is coupled with an algebraic derivation from a specification, whose correctness is guaranteed by the type system. Code accompanying the paper has been developed into an Agda library AoPA.
We create concept maps, a type of model, to explore and learn about complex information spaces. By showing everything—the forest and the trees—in a single view, concept maps help people create mental models and clarify thoughts. We create concept maps to share understanding— with our clients, peers, and others interested in the subjects. Please note: many of our concept maps are poster size. They can be printed at smaller sizes (11 x 17), but may be difficult to read. A few of the maps have been printed and are available through our office.
Use PDF Hammer to quickly and easily edit your PDF files online without installing a thing! Simply upload PDF files to PDF Hammer via your web browser, perform your edits, and then save the files back to your computer. The online editor allows you to view the pages of your PDF files as you edit them. The free PDF editor lets you: * Combine PDF. Create single polished PDF files by merging multiple files together. * Edit PDF pages. Quickly rearrange, reorder and delete the pages from existing PDF files. * Secure PDF. Protect the contents of PDF files with password-based security. * Update PDF metadata. Make PDF files more useful and usable by setting the document information (metadata) fields, including author, title, subject and keywords. PDF Hammer is 100% free and brought to you by the team behind Nitro PDF Professional -
Still one year out of consumer reach, the Plastic Logic reader With a form factor equivalent to that of a legal-size pad of paper, though coming in at half the thickness and weighing under 16 ounces, it's easy to see the reader's instant appeal. Compatibility with document formats like Word, Excel, PowerPoint and PDFs, in addition to newspapers, periodicals and books, store thousands of documents, all of which can be synced wirelessly or with wired access. The reader utilizes an E Ink active matrix display, initially produced with a grayscale screen that adequately replicates the effect of reading newsprint (plans for both a flexible reader and color screen are in the works). Unlike typical glass silicon displays, the flexible plastic substrates used in the reader allow the device to be both thinner, lighter and rugged. The touch-screen interface uses simple gestural commands similar to those on Apple device
The cb2Bib is a free, open source, and multiplatform application for rapidly extracting unformatted, or unstandardized bibliographic references from email alerts, journal Web pages, and PDF files. The cb2Bib facilitates the capture of single references from unformatted and non standard sources. Output references are written in BibTeX. Article files can be easily linked and renamed by dragging them onto the cb2Bib window. Additionally, it permits editing and browsing BibTeX files, citing references, searching references and the full contents of the referenced documents, inserting bibliographic metadata to documents, and writing short notes that interrelate several references.
Referencer is a Gnome application to organise documents or references, and ultimately generate a BibTeX bibliography file. Referencer includes a number of features to make this process easier: * Smart web links Referencer uses documents' metadata to provide handy links to the document's web location — no need to maintain your own bookmarks. * Import from BibTeX, Reference Manager and EndNote No need to start from scratch — Referencer will import your existing bibliography files using the BibUtils library. * Tagging No need to organise your documents into rigid directory trees — with Referencer you can use tags to categorise your documents. * Automatic arXiv, PubMed and CrossRef metadata retrieval If you show Referencer a PDF which has an arXiv ID or DOI code, Referencer will retrieve the metadata for this document over the internet. * Python plugin support Referencer can be extended using the versatile Python scripting language. * Localisation