This paper investigates the development of a natural language (NL) interface for mixed initiative dialogues within a constrained domain and demonstrates the applicability of the functional approach to NL system develo...
详细信息
This paper investigates the development of a natural language (NL) interface for mixed initiative dialogues within a constrained domain and demonstrates the applicability of the functional approach to NL system development. The system consists of two major components, a natural language subsystem comprises a general-purpose parser that interprets a 'plug and play' tagged BNF grammar (which may be ambiguous), to parse natural language input and extract semantic information. The knowledge-based subsystem uses the semantic tags extracted by the natural language subsystem to generate a focused query to select the most appropriate script for a guided dialogue with the user. The system was written entirely in a purely functional language, which resulted in a surprisingly small and simple program. (c) 2004 Elsevier B.V. All rights reserved.
In 1989 when functional programming was still considered a niche topic, Hughes wrote a visionary paper arguing convincingly ‘why functional programming maters’. More than two decades have passed. Has functional prog...
详细信息
In 1989 when functional programming was still considered a niche topic, Hughes wrote a visionary paper arguing convincingly ‘why functional programming maters’. More than two decades have passed. Has functional programming really matered? Our answer is a resounding ‘Yes!’. functional programming is now at the forefront of a new generation of programming technologies, and enjoying increasing popularity and inluence. In this paper, we review the impact of functional programming, focusing on how it has changed the way we may construct programs, the way we may verify programs, and fundamentally the way we may think about programs.
YOU'D EXPECT THE LONGEST ANDMOST COSTLY PHASE in the life cycle of a software productto be the intital development of the system, when all those great features are first imagined and then created. In fact, the har...
详细信息
YOU'D EXPECT THE LONGEST ANDMOST COSTLY PHASE in the life cycle of a software productto be the intital development of the system, when all those great features are first imagined and then created. In fact, the hardest part comes later, during the maintenance phase. that's when programmers pay the price for the shortcuts they took during development. center dot So why did they take shortcuts? Maybe they didn't realize that they were cutting any corners. Only when their code was deployed and exercised by a lot of users did its hidden flaws come to light. And maybe the developers were *** would almost guarantee antee that their software will contain more bugs than it would otherwise.
Engineering high-performance parallel programs is hard: not only must a correct, efficient and inherently-parallel algorithm be developed, but the computations must be effectively and efficiently coordinated across mu...
详细信息
Engineering high-performance parallel programs is hard: not only must a correct, efficient and inherently-parallel algorithm be developed, but the computations must be effectively and efficiently coordinated across multiple processors. It has long been recognised that ideas and approaches drawn from functional programming may be particularly applicable to parallel and distributed computing (e.g. Wegner 1971). There are several reasons for this suitability. Concurrent stateless computations are much easier to coordinate, high-level coordination abstractions reduce programming effort, and declarative notations are amenable to reasoning, i.e. to optimising transformations, derivation and performance analysis. [PUBLICATION ABSTRACT]
Jane Street Capital is a successful proprietary trading company that uses OCaml as its primary development language. We have over twenty OCaml programmers and hundreds of thousands of lines of OCaml code. We use OCaml...
详细信息
Jane Street Capital is a successful proprietary trading company that uses OCaml as its primary development language. We have over twenty OCaml programmers and hundreds of thousands of lines of OCaml code. We use OCaml for a wide range of tasks: critical trading systems, quantitative research, systems software, and system administration. We value OCaml because it allows us to rapidly produce readable, correct, efficient code to solve complex problems, and to change that code quickly to adapt to a changing world. We believe that using OCaml gives us a significant advantage over competitors that use languages like VB, Pert, C++, C#, or Java. It also makes finding and hiring high-quality software developers easier than with mainstream languages. We have invested deeply in OCaml and intend to use OCaml and grow our team of functional programmers for the foreseeable future.
We introduce a functional reactive programming language that extends WORMHOLES, an enhancement of YAMPA with support for effects. Our proposal relaxes the constraint in WORMHOLES that restricts all resources to single...
详细信息
Because of its many desirable properties, such as its ability to control effects and thus potentially disastrous race conditions, functional programming offers a viable approach to programming modern multicore compute...
详细信息
Because of its many desirable properties, such as its ability to control effects and thus potentially disastrous race conditions, functional programming offers a viable approach to programming modern multicore computers. Over the past decade several parallel functional languages, typically based on dialects of ML and Haskell, have been developed. These languages, however, have traditionally underperformed procedural languages (such as C and Java). The primary reason for this is their hunger for memory, which only grows with parallelism, causing traditional memory management techniques to buckle under increased demand for memory. Recent work opened a new angle of attack on this problem by identifying a memory property of determinacy-race-free parallel programs, called disentanglement, which limits the knowledge of concurrent computations about each other's memory allocations. The work has showed some promise in delivering good time scalability. In this paper, we present provably space-efficient automatic memory management techniques for determinacy-race-free functional parallel programs, allowing both pure and imperative programs where memory may be destructively updated. We prove that for a program with sequential live memory of R*, any P-processor garbage-collected parallel run requires at most O(R* . P) memory. We also prove a work bound of O(W + R* . P) for P-processor executions, accounting also for the cost of garbage collection. To achieve these results, we integrate thread scheduling with memory management. The idea is to coordinate memory allocation and garbage collection with thread scheduling decisions so that each processor can allocate memory without synchronization and independently collect a portion of memory by consulting a collection policy, which we formulate. The collection policy is fully distributed and does not require communicating with other processors. We show that the approach is practical by implementing it as an extension to the MPL compil
Modern software development seeks to produce faster, more reliable programs. Greater speed comes from putting more mips into the machine while one approach to improving reliability lies in trying to introduce greater ...
详细信息
Modern software development seeks to produce faster, more reliable programs. Greater speed comes from putting more mips into the machine while one approach to improving reliability lies in trying to introduce greater rigour into the design process. This paper introduces a representative functional programming language, Hope, and explores the ALICE architecture which executes Hope programs in parallel.
作者:
BURTON, FWDept. of Electr. Eng. & Comput. Sci.
Colorado Univ. Denver CO USA Abstract Authors References Cited By Keywords Metrics Similar Download Citation Email Print Request Permissions
Many problems can be solved more quickly on parallel machines if some work can be started before it is known to be necessary. If work which is known to be necessary (mandatory work) is given priority over other work (...
详细信息
Many problems can be solved more quickly on parallel machines if some work can be started before it is known to be necessary. If work which is known to be necessary (mandatory work) is given priority over other work (speculative work), then performing speculative work can only speed computation. A simple functional language feature to control speculative work is proposed.
暂无评论