scispace - formally typeset
Search or ask a question

Showing papers by "Simon Jones published in 2007"


Proceedings ArticleDOI
09 Jun 2007
TL;DR: This paper describes the history of Haskell, including its genesis and principles, technical contributions, implementations and tools, and applications and impact.
Abstract: This paper describes the history of Haskell, including its genesis and principles, technical contributions, implementations and tools, and applications and impact.

301 citations


Proceedings ArticleDOI
16 Jan 2007
TL;DR: System FC is introduced, which extends System F with support for non-syntactic type equality, and there are two main extensions: explicit witnesses for type equalities, and open, non-parametric type functions, given meaning by top-level equality axioms.
Abstract: We introduce System FC, which extends System F with support for non-syntactic type equality. There are two main extensions: (i) explicit witnesses for type equalities, and (ii) open, non-parametric type functions, given meaning by top-level equality axioms. Unlike System F, FC is expressive enough to serve as a target for several different source-language features, including Haskell's newtype, generalised algebraic data types, associated types, functional dependencies, and perhaps more besides.

238 citations


Proceedings ArticleDOI
16 Jan 2007
TL;DR: The design and current status of the effort to implement the programming model of nested data parallelism into the Glasgow Haskell Compiler is described, and preliminary benchmarks show that it is able to achieve good absolute performance and excellent speedups.
Abstract: We describe the design and current status of our effort to implement the programming model of nested data parallelism into the Glasgow Haskell Compiler. We extended the original programming model and its implementation, both of which were first popularised by the NESL language, in terms of expressiveness as well as efficiency. Our current aim is to provide a convenient programming environment for SMP parallelism, and especially multicore architectures. Preliminary benchmarks show that we are, at least for some programs, able to achieve good absolute performance and excellent speedups.

221 citations


Journal ArticleDOI
TL;DR: This paper presents a complete type-inference engine, written in Haskell, for a traditional Damas-Milner type system, and shows how to extend it for higher-rank types.
Abstract: Haskell's popularity has driven the need for ever more expressive type system features, most of which threaten the decidability and practicality of Damas-Milner type inference. One such feature is the ability to write functions with higher-rank types – that is, functions that take polymorphic functions as their arguments. Complete type inference is known to be undecidable for higher-rank (impredicative) type systems, but in practice programmers are more than willing to add type annotations to guide the type inference engine, and to document their code. However, the choice of just what annotations are required, and what changes are required in the type system and its inference algorithm, has been an ongoing topic of research. We take as our starting point a $\lambda$-calculus proposed by Odersky and Laufer. Their system supports arbitrary-rank polymorphism through the exploitation of type annotations on $\lambda$-bound arguments and arbitrary sub-terms. Though elegant, and more convenient than some other proposals, Odersky and Laufer's system requires many annotations. We show how to use local type inference (invented by Pierce and Turner) to greatly reduce the annotation burden, to the point where higher-rank types become eminently usable. Higher-rank types have a very modest impact on type inference. We substantiate this claim in a very concrete way, by presenting a complete type-inference engine, written in Haskell, for a traditional Damas-Milner type system, and then showing how to extend it for higher-rank types. We write the type-inference engine using a monadic framework: it turns out to be a particularly compelling example of monads in action. The paper is long, but is strongly tutorial in style. Although we use Haskell as our example source language, and our implementation language, much of our work is directly applicable to any ML-like functional language.

199 citations


Journal ArticleDOI
TL;DR: This review summarizes the findings of a 1-day meeting devoted to the subject with the aim of coordinating efforts and shows that animal models of autoimmune disease treated with multipotent mesenchymal stromal cells have mostly exhibited a positive clinical response.
Abstract: Multipotent mesenchymal stromal cells isolated from bone marrow and other sites are currently being studied to determine their potential role in the pathogenesis and/or management of autoimmune diseases. In vitro studies have shown that they exhibit a dose-dependent antiproliferative effect on T and B lymphocytes, dendritic cells, natural killer cells and various B cell tumour lines – an effect that is both cell contact and soluble factor dependent. Animal models of autoimmune disease treated with multipotent mesenchymal stromal cells have mostly exhibited a positive clinical response, as have a limited number of patients suffering from acute graft versus host disease. This review summarizes the findings of a 1-day meeting devoted to the subject with the aim of coordinating efforts.

172 citations


Journal ArticleDOI
TL;DR: Geographical variation in HCV prevalence remains poorly explained, but should be the key focus of the surveillance effort.
Abstract: We sought to corroborate geographical differences in hepatitis C virus (HCV) prevalence and assess whether these can be explained by differences in injecting risk behaviour. A community recruited interview survey of 1058 injecting drug users (IDU) - including a blood spot specimen for antibody testing - was undertaken in seven cities in England. HCV prevalence varied from 27% to 74% across sites (chi(2)(6) = 115.3, P 2 to an adjusted OR of 1.4 (95% CI 0.9-2.0). Remaining significant covariates included: homelessness (OR 2.2; 1.4-3.6); ever imprisonment (OR 1.7; 1.2-2.5); syringe sharing >18 months ago (OR 2.0; 1.3-3.0); injecting duration and age. Introducing site as a second level variable did not reach significance (P = 0.10). HCV prevalence among IDU reporting 'never sharing' was 48%. Geographical variation in HCV prevalence remains poorly explained, but should be the key focus of our surveillance effort. Measures of sharing and their interpretation require greater scrutiny.

107 citations


Journal ArticleDOI
TL;DR: In this article, the authors show that standard CPS is sufficient to explain the common control operators for delimited continuations and propose a monadic framework for typed and encapsulated continuations, which they design and implement as a Haskell library.
Abstract: Delimited continuations are more expressive than traditional abortive continuations and they apparently require a framework beyond traditional continuation-passing style (CPS). We show that this is not the case: standard CPS is sufficient to explain the common control operators for delimited continuations. We demonstrate this fact and present an implementation as a Scheme library. We then investigate a typed account of delimited continuations that makes explicit where control effects can occur. This results in a monadic framework for typed and encapsulated delimited continuations, which we design and implement as a Haskell library.

78 citations


Journal ArticleDOI
TL;DR: In this article, the 3.5-endo-dig cyclisations of 3-alkyne-1,2-diols using iodine as the electrophile proceed smoothly to deliver excellent yields of β-iodofurans.

56 citations


Journal ArticleDOI
TL;DR: In an effort to generate soluble recombinant enzyme, several truncated versions of T. cruzi SQS with a His tag attached to the amino terminus were expressed in Escherichia coli as discussed by the authors.
Abstract: The biosynthesis of sterols is a major route for the development of antitrypanosomals. Squalene synthase (SQS) catalyzes the first step committed to the biosynthesis of sterols within the isoprenoid pathway, and several inhibitors of the enzyme have selective antitrypanosomal activity both in vivo and in vitro. The enzyme from Trypanosoma cruzi is a 404-amino-acid protein with a clearly identifiable membrane-spanning region. In an effort to generate soluble recombinant enzyme, we have expressed in Escherichia coli several truncated versions of T. cruzi SQS with a His tag attached to the amino terminus. Deletions of both the amino- and carboxyl-terminal regions generated active and soluble forms of the enzyme. The highest levels of soluble protein were achieved when 24 and 36 amino acids were eliminated from the amino and carboxyl regions, respectively, yielding a protein of 41.67 kDa. The Michaelis-Menten constants of the purified enzyme for farnesyl diphosphate and NAD (NADPH) were 5.25 and 23.34 μM, respectively, whereas the Vmax was 1,428.56 nmol min−1mg−1. Several quinuclidine derivatives with antiprotozoal activity in vitro were found to be selective inhibitors of recombinant T. cruzi SQS in comparative assays with the human enzyme, with 50% inhibitory concentration values in the nanomolar range. These data suggest that selective inhibition of T. cruzi SQS may be an efficient strategy for the development of new antitrypanosomal agents.

55 citations


Proceedings ArticleDOI
30 Sep 2007
TL;DR: This work proposes an extension to list comprehensions that makes it easy to express the kind of queries one would write in SQL using ORDER BY, GROUP BY, and LIMIT, and generalises the SQL constructs that inspired it.
Abstract: We propose an extension to list comprehensions that makes it easy to express the kind of queries one would write in SQL using ORDER BY, GROUP BY, and LIMIT. Our extension adds expressive power to comprehensions, and generalises the SQL constructs that inspired it. It is easy to implement, using simple desugaring rules.

48 citations


Proceedings ArticleDOI
01 Oct 2007
TL;DR: This paper re-examine the "tagless" aspect of the STG-machine that GHC uses as its evaluation model, and proposes two tagging strategies: a simple strategy called semi-tagging that seeks to avoid one common source of unpredictable indirect jumps, and a more complex strategy that uses the spare low bits in a pointer to encode information about the pointed-to object.
Abstract: In the light of evidence that Haskell programs compiled by GHC exhibit large numbers of mispredicted branches on modern processors, we re-examine the "tagless" aspect of the STG-machine that GHC uses as its evaluation model.We propose two tagging strategies: a simple strategy called semi-tagging that seeks to avoid one common source of unpredictable indirect jumps, and a more complex strategy called dynamic pointer-tagging that uses the spare low bits in a pointer to encode information about the pointed-to object. Both of these strategies have been implemented and exhaustively measured in the context of a production compiler, GHC, and the paper contains detailed descriptions of the implementations. Our measurements demonstrate significant performance improvements (14% for dynamic pointer-tagging with only a 2% increase in code size), and we further demonstrate that much of the improvement can be attributed to the elimination of mispredicted branch instructions.As part of our investigations we also discovered that one optimisation in the STG-machine, vectored-returns, is no longer worthwhile and we explain why.

Journal ArticleDOI
TL;DR: The design and synthesis of quinuclidine derivatives as potential inhibitors of a key enzyme in sterol biosynthesis, squalene synthase (SQS) are described and a number of compounds that were inhibitors of the recombinant Leishmania major SQS at submicromolar concentrations were discovered.
Abstract: There is an urgent need for the development of new drugs for the treatment of tropical parasitic diseases such as Chagas' disease and leishmaniasis. One potential drug target in the organisms that cause these diseases is sterol biosynthesis. This paper describes the design and synthesis of quinuclidine derivatives as potential inhibitors of a key enzyme in sterol biosynthesis, squalene synthase (SQS). A number of compounds that were inhibitors of the recombinant Leishmania major SQS at submicromolar concentrations were discovered. Some of these compounds were also selective for the parasite enzyme rather than the homologous human enzyme. The compounds inhibited the growth of and sterol biosynthesis in Leishmania parasites. In addition, we identified other quinuclidine derivatives that inhibit the growth of Trypanosoma brucei (the causative organism of human African trypanosomiasis) and Plasmodium falciparum (a causative agent of malaria), but through an unknown mode(s) of action.

Proceedings ArticleDOI
Simon Jones1
01 Oct 2007
TL;DR: This paper describes a simple, modular transformation that specialises recursive functions according to their argument "shapes", and describes the implementation in the Glasgow Haskell Compiler, and gives measurements that demonstrate substantial performance improvements.
Abstract: User-defined data types, pattern-matching, and recursion are ubiquitous features of Haskell programs. Sometimes a function is called with arguments that are statically known to be in constructor form, so that the work of pattern-matching is wasted. Even worse, the argument is sometimes freshly-allocated, only to be immediately decomposed by the function.In this paper we describe a simple, modular transformation that specialises recursive functions according to their argument "shapes". We describe our implementation of this transformation in the Glasgow Haskell Compiler, and give measurements that demonstrate substantial performance improvements: a worthwhile 10% on average, with a factor of 10 in particular cases.

Proceedings ArticleDOI
30 Sep 2007
TL;DR: This paper presents an alternative approach to implement concurrency in GHC, where the runtime system is a thin substrate providing only a small set of concurrency primitives, and the remaining concurrency features are implemented in software libraries written in Haskell.
Abstract: The Glasgow Haskell Compiler (GHC) has quite sophisticated support for concurrency in its runtime system, which is written in low-level C code. As GHC evolves, the runtime system becomes increasingly complex, error-prone, difficult to maintain and difficult to add new concurrency features.This paper presents an alternative approach to implement concurrency in GHC. Rather than hard-wiring all kinds of concurrency features, the runtime system is a thin substrate providing only a small set of concurrency primitives, and the remaining concurrency features are implemented in software libraries written in Haskell. This design improves the safety of concurrency support; it also provides more customizability of concurrency features, which can be developed as Haskell library packages and deployed modularly.

01 Jan 2007
TL;DR: Software Transactional Memory (STM) as mentioned in this paper is a promising new approach to programming shared-memory parallel processors that seems to support modular programs in a way that current technology does not.
Abstract: The free lunch is over. We have grown used to the idea that our programs will go faster when we buy a next-generation processor, but that time has passed. While that next-generation chip will have more CPUs, each individual CPU will be no faster than the previous year’s model. If we want our programs to run faster, we must learn to write parallel programs. Parallel programs execute in a non-deterministic way, so they are hard to test and bugs can be almost impossible to reproduce. For me, a beautiful program is one that is so simple and elegant that it obviously has no mistakes, rather than merely having no obvious mistakes. If we want to write parallel programs that work reliably, we must pay particular attention to beauty. Sadly, parallel programs are often less beautiful than their sequential cousins; in particular they are, as we shall see, less modular. In this tutorial chapter I describe Software Transactional Memory (STM), a promising new approach to programming shared-memory parallel processors, that seems to support modular programs in a way that current technology does not. By the time we are done, I hope you will be as enthusiastic as I am about STM. It is not a solution to every problem, but it is a beautiful and inspiring attack on the daunting ramparts of concurrency. Code download (Cabalised) Discussion wiki page

Journal ArticleDOI
TL;DR: In this article, two approaches to the synthesis of chiral 9-amino anthracenes are described: nucleophilic addition of organolithium reagents to imines promoted by BF 3 ·OEt 2, unexpectedly provided stable aminoboranes as products.
Abstract: Two approaches to the synthesis of chiral 9-amino anthracenes are described. The first, by nucleophilic addition of organolithium reagents to imines promoted by BF 3 ·OEt 2 , unexpectedly provided stable aminoboranes as products. The second approach, using palladium catalysed cross coupling, was more successful for primary amines, and the key 9-(α-methylbenzylamino)anthracene subjected to cycloadditions with N -methyl maleimide and maleic anhydride. Excellent reactivity was achieved with good levels of diastereoselectivity, through a favourable combination of electrostatic and hydrogen bonding effects. Trial studies of the retro Diels–Alder reaction of these cycloadducts were also performed.

Proceedings Article
01 Jan 2007
TL;DR: An extension of Haskell with type(-level) functions and equality constraints is reported on, and functional dependencies are now obsolete: it is shown how they can be encoded as type functions.
Abstract: We report on an extension of Haskell with type(-level) functions and equality constraints. We illustrate their usefulness in the context of phantom types, GADTs and type classes. Problems in the context of type checking are identified and we sketch our solution: a decidable type checking algorithm for a restricted class of type functions. Moreover, functional dependencies are now obsolete: we show how they can be encoded as type functions. This paper is submitted to the Implementing Functional Languages workshop, Sept 2007 (IFL07).

Patent
05 Oct 2007
TL;DR: In this paper, the authors describe a communication interface that collects data from external sources and passes the collected external data directly into the internal register of the microprocessor and returns control of that register to the processor.
Abstract: Inter-processor communication systems and methods that define within the instruction set of the microprocessor a command for directing the microprocessor to relinquish control over at least one of the microprocessor's internal registers. The microprocessor may then signal a communication interface that collects data from external sources. The communication interface takes control over the internal register released by the microprocessor and inputs the collected external data directly into the internal register of the microprocessor. Once data is place into the internal register, control of that register may be returned to the microprocessor.

01 Sep 2007
TL;DR: This work proposes an extension to list comprehensions that makes it easy to express the kind of queries one would write in SQL using ORDER BY, GROUP BY, and LIMIT, and generalises the SQL constructs that inspired it.
Abstract: We propose an extension to list comprehensions that makes it easy to express the kind of queries one would write in SQL using ORDER BY, GROUP BY, and LIMIT. Our extension adds expressive power to comprehensions, and generalises the SQL constructs that inspired it. Moreover, it is easy to implement, using simple desugaring rules.

Book
01 Nov 2007
TL;DR: This book discusses computer hacking, intellectual property rights, the Internet and content regulation, and ethics in the workplace.
Abstract: Chapter 1: Introduction to Ethics Chapter 2: Ethical Theories Chapter 3: Computer hacking Chapter 4: Computer crime Chapter 5: Intellectual property rights Chapter 6: The Internet and content regulation Chapter 7: Privacy Chapter 8: Equal access and computer technologies Chapter 9: Computers in the workplace Chapter 10: AI and expert systems Chapter 11 Failed IT projects Chapter 12: Codes of conduct Bibliography Index

Journal Article
TL;DR: A nanolithography technique that allows simultaneous direct control of the local chemistry and topography of thin polymer films and is conceptually simple, direct, extremely rapid, achievable in a range of environments, and potentially adaptable to other materials systems is reported.

01 Jan 2007
TL;DR: Data suggest that selective inhibition of T. cruzi SQS may be an efficient strategy for the development of new antitrypanosomal agents.
Abstract: ABSTRACT The biosynthesis of sterols is a major route for the development of antitrypanosomals. Squalene synthase (SQS) catalyzes the first step committed to the biosynthesis of sterols within the isoprenoid pathway, and several inhibitors of the enzyme have selective antitrypanosomal activity both in vivo and in vitro. The enzyme from Trypanosoma cruzi is a 404-amino-acid protein with a clearly identifiable membrane-spanning region. In an effort to generate soluble recombinant enzyme, we have expressed in Escherichia coli several truncated versions of T. cruzi SQS with a His tag attached to the amino terminus. Deletions of both the amino- and carboxyl-terminal regions generated active and soluble forms of the enzyme. The highest levels of soluble protein were achieved when 24 and 36 amino acids were eliminated from the amino and carboxyl regions, respectively, yielding a protein of 41.67 kDa. The Michaelis-Menten constants of the purified enzyme for farnesyl diphosphate and NAD (NADPH) were 5.25 and 23.34 μM, respectively, whereas the Vmax was 1,428.56 nmol min−1mg−1. Several quinuclidine derivatives with antiprotozoal activity in vitro were found to be selective inhibitors of recombinant T. cruzi SQS in comparative assays with the human enzyme, with 50% inhibitory concentration values in the nanomolar range. These data suggest that selective inhibition of T. cruzi SQS may be an efficient strategy for the development of new antitrypanosomal agents.

Patent
23 Mar 2007
TL;DR: In this paper, a soft RISC-based processor core that is both user-extensible and user-configurable is presented, where a functional process or unit (DMA assist) is coupled to the processor's extension logic and which facilitates throughput by, among other things, ensuring that the CPU and processor extension logic can operate on data in parallel in an efficient manner.
Abstract: Methods and apparatus adapted for enhancing the throughput of a digital processor (e.g., microprocessor, CISC device, or RISC device) through use of a direct memory access (DMA) mechanism. In one embodiment, the processor comprises a 'soft' RISC-based processor core that is both user-extensible and user-configurable. The core comprises a functional process or unit (DMA assist) that is coupled to the processor's extension logic and which facilitates throughput by, among other things, ensuring that the CPU and processor extension logic can operate on data in parallel in an efficient manner. In one variant, a parallel datapath (including a buffer) is used in conjunction with the aforementioned DMA assist so as to permit the processor extension logic to efficiently operate in parallel with the CPU.

Simon Jones1
01 Jan 2007
TL;DR: This paper describes a simple, modular transformation that specialises recursive functions according to their argument “shapes”, and shows that it can be extremely effective in practice, eliminating both pattern-matching and heap allocation.
Abstract: User-defined data types, pattern-matching, and recursion are ubiquitous features of Haskell programs. Sometimes a function is called with arguments that are statically known to already be in constructor form, so that the work of pattern-matching is wasted. Even worse, the argument is sometimes freshly-allocated, only to be immediately decomposed by the function. In this paper we describe a simple, modular transformation that specialises recursive functions according to their argument “shapes”. We show that such a transformation has a simple, modular implementation, and that it can be extremely effective in practice, eliminating both pattern-matching and heap allocation. We describe our implementation of this constructor specialisation transformation in the Glasgow Haskell Compiler, and give measurements of its effectiveness.

Journal ArticleDOI
TL;DR: In this article, the authors draw out the resonances between the work of the two artists who have probably had the most influence on today's experimental performance, and make a small start towards a mighty task.
Abstract: This writing makes a small start towards a mighty task: to draw out the resonances between the work of the two artists who have probably had the most influence on today's experimental performance –...

Patent
05 Oct 2007
TL;DR: In this article, the authors describe a base processor with a communication interface that can place data in an internal register without the control of the processor and the interface both have paths (108, 110) to the register.
Abstract: Disclosed is a base processor 100 with a communication interface 107 that can place data in an internal register 104 without the control of the processor 105. The processor and the communications interface both have paths (108, 110) to the register. An instruction decoder in the processor relinquishes control of an internal register when it receives an instruction to receive external data. Control of the register is given over to the interface, so that the interface can place data received from a external device 101, preferably a second processor in to the register. The decoder may have logic to deactivate or cease fetching instructions. The interface may able to detect control commands for directing operations of the interface. The interface may have a buffer memory to store the data before putting it into the register. The processor is part of a multi-processor system in which one processor is able to put data into the register of another processor. The processors may be on a single chip part of the system on a chip.



Patent
06 Aug 2007
TL;DR: In this paper, the authors considered the problem of catalysts for the reduction of imine compounds or for asymmetric reductive amination of ketone compounds and showed that they are useful as catalysts.
Abstract: Compounds of formula (I) wherein: R1, R2, R3, R4 and R5 are each separately selected from the group consisting of hydrogen, alkyl and aryl; X is oxygen or sulphur; and Z has the formula (II) or (III) wherein: R6, R7, R8 and R9 are each separately selected from the group consisting of hydrogen, alkoxy, nitro, halogen, alkyl and aryl; or R6 and R7 are linked to form a cyclic group; Y is oxygen, sulfur or NR10; and R10 is selected from the group consisting of hydrogen, alkyl and aryl; are useful as catalysts. e.g. for the reduction of imine compounds or for the asymmetric reductive amination of ketone compounds.