HOME





Lispkit Lisp
Lispkit Lisp is a lexically scoped, purely functional subset of Lisp (Pure Lisp) developed as a testbed for functional programming concepts. It was first used for early experimentation with lazy evaluation. An implementation based on a ''stack, environment, control, dump'' virtual machine and abstract machine (SECD machine) written in an ALGOL variant was published by the developer Peter Henderson in 1980. The compiler and virtual machine are highly portable and as a result have been implemented on many machines. Base language The base language provides the following functions only but extensions are discussed in Henderson's book for the explicit support of lazy evaluation and nondeterministic programming. :atom – given an expression returns True if its value is atomic; False if not :add – given two expressions returns the sum of their numeric values :car – given an expression whose value is a pair, returns the pair's first value :cdr – given an expression whose value i ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Purely Functional Programming
In computer science, purely functional programming usually designates a programming paradigm—a style of building the structure and elements of computer programs—that treats all computation as the evaluation of function (mathematics), mathematical functions. Program state and mutable objects are usually modeled with temporal logic, as explicit variables that represent the program state at each step of a program execution: a variable state is passed as an input parameter of a state-transforming function, which returns the updated state as part of its return value. This style handles state changes without losing the referential transparency of the program expressions. Purely functional programming consists of ensuring that functions, inside the functional programming, functional paradigm, will only depend on their arguments, regardless of any global or local state. A pure functional subroutine only has visibility of changes of state represented by state variables included in its s ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


SECD Machine
The SECD machine is a highly influential (see: '' Landin's contribution'') virtual machine and abstract machine intended as a target for compilers of functional programming languages. The letters stand for stack, environment, control, dump, respectively, which are the internal registers of the machine. The registers stack, control, and dump point to (some realizations of) stacks, and environment points to (some realization of) an associative array. The machine was the first to be specifically designed to evaluate lambda calculus expressions. It was originally described by Peter Landin in "The Mechanical Evaluation of Expressions" in 1964. The description published by Landin was fairly abstract, and left many implementation choices open (like an operational semantics). Lispkit Lisp was an influential compiler based on the SECD machine, and the SECD machine has been used as the target for other systems such as Lisp/370. In 1989, researchers at the University of Calgary worked o ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Series (mathematics)
In mathematics, a series is, roughly speaking, an addition of Infinity, infinitely many Addition#Terms, terms, one after the other. The study of series is a major part of calculus and its generalization, mathematical analysis. Series are used in most areas of mathematics, even for studying finite structures in combinatorics through generating functions. The mathematical properties of infinite series make them widely applicable in other quantitative disciplines such as physics, computer science, statistics and finance. Among the Ancient Greece, Ancient Greeks, the idea that a potential infinity, potentially infinite summation could produce a finite result was considered paradoxical, most famously in Zeno's paradoxes. Nonetheless, infinite series were applied practically by Ancient Greek mathematicians including Archimedes, for instance in the Quadrature of the Parabola, quadrature of the parabola. The mathematical side of Zeno's paradoxes was resolved using the concept of a limit ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Recursion (computer Science)
In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem. Recursion solves such recursion, recursive problems by using function (computer science), functions that call themselves from within their own code. The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science. Most computer programming languages support recursion by allowing a function to call itself from within its own code. Some functional programming languages (for instance, Clojure) do not define any looping constructs but rely solely on recursion to repeatedly call code. It is proved in computability theory that these recursive-only languages are Turing complete; this means that they are as powerful (they can be used to solve the same problems) as imperative languages based on control structures such as and . Repeatedly calling a function from within itse ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Nondeterministic Programming
A nondeterministic programming language is a programming language, language which can specify, at certain points in the Computer program, program (called "choice points"), various alternatives for Control flow, program flow. Unlike an Conditional (computer programming), if-then statement, the method of choice between these alternatives is not directly specified by the programmer; the program must decide at runtime (program lifecycle phase), run time between the alternatives, via some general method applied to all choice points. A programmer specifies a limited number of alternatives, but the program must later choose between them. ("Choose" is, in fact, a typical name for the nondeterministic operator.) A hierarchy of choice points may be formed, with higher-level choices leading to branches that contain lower-level choices within them. One method of choice is embodied in backtracking systems (such as Amb (evaluator), Amb, or unification in Prolog), in which some alternatives may " ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Computer History Museum
The Computer History Museum (CHM) is a computer museum in Mountain View, California. The museum presents stories and artifacts of Silicon Valley and the Information Age, and explores the Digital Revolution, computing revolution and its impact on society. History The museum's origins date to 1968 when Gordon Bell began a quest for a historical collection and, at that same time, others were looking to preserve the Whirlwind (computer), Whirlwind computer. The resulting ''Museum Project'' had its first exhibit in 1975, located in a converted coat closet in a Digital Equipment Corporation, DEC lobby. In 1978, the museum, now ''The Digital Computer Museum'' (TDCM), moved to a larger DEC lobby in Marlborough, Massachusetts and opened to the public in September 1979. Maurice Wilkes presented the first lecture at TDCM in 1979 – the presentation of such lectures has continued to the present time. TDCM incorporated as ''The Computer Museum, Boston, The Computer Museum'' (TCM) in 1982. ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  




Porting
In software engineering, porting is the process of adapting software for the purpose of achieving some form of execution in a computing environment that is different from the one that a given program (meant for such execution) was originally designed for (e.g., different CPU, operating system, or third party library). The term is also used when software/hardware is changed to make them usable in different environments. Software is ''portable'' when the cost of porting it to a new platform is significantly less than the cost of writing it from scratch. The lower the cost of porting software relative to its implementation cost, the more portable it is said to be. This is distinct from cross-platform software, which is designed from the ground up without any single " native" platform. Etymology The term "port" is derived from the Latin '' portāre'', meaning "to carry". When code is not compatible with a particular operating system or architecture, the code must be "carried" to ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language, low-level programming language (e.g. assembly language, object code, or machine code) to create an executable program.Compilers: Principles, Techniques, and Tools by Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman - Second Edition, 2007 There are many different types of compilers which produce output in different useful forms. A ''cross-compiler'' produces code for a different Central processing unit, CPU or operating system than the one on which the cross-compiler itself runs. A ''bootstrap compiler'' is often a temporary compiler, used for compiling a more permanent or better optimised compiler for a language. Related software ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Abstract Machine
In computer science, an abstract machine is a theoretical model that allows for a detailed and precise analysis of how a computer system functions. It is similar to a mathematical function in that it receives inputs and produces outputs based on predefined rules. Abstract machines vary from literal machines in that they are expected to perform correctly and independently of hardware. Abstract machines are "machines" because they allow step-by-step execution of programs; they are " abstract" because they ignore many aspects of actual ( hardware) machines. A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. They can be used for purely theoretical reasons as well as models for real-world computer systems. In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyse the complexity of algorithms. This use of abstract mac ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Lisp (programming Language)
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in the late 1950s, it is the second-oldest high-level programming language still in common use, after Fortran. Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Common Lisp, Scheme, Racket, and Clojure. Lisp was originally created as a practical mathematical notation for computer programs, influenced by (though not originally derived from) the notation of Alonzo Church's lambda calculus. It quickly became a favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order function ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


picture info

Virtual Machine
In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve specialized hardware, software, or a combination of the two. Virtual machines differ and are organized by their function, shown here: * ''System virtual machines'' (also called full virtualization VMs, or SysVMs) provide a substitute for a real machine. They provide the functionality needed to execute entire operating systems. A hypervisor uses native code, native execution to share and manage hardware, allowing for multiple environments that are isolated from one another yet exist on the same physical machine. Modern hypervisors use hardware-assisted virtualization, with virtualization-specific hardware features on the host CPUs providing assistance to hypervisors. * ''Process virtual machines'' are designed to execute computer programs ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]  


Lazy Evaluation
In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an Expression (computer science), expression until its value is needed (non-strict evaluation) and which avoids repeated evaluations (by the use of Sharing (computer science), sharing). The benefits of lazy evaluation include: * The ability to define control flow (structures) as abstractions instead of Language primitive, primitives. * The ability to define actual infinity, potentially infinite data structures. This allows for more straightforward implementation of some algorithms. * The ability to define partly-defined data structures where some elements are errors. This allows for rapid prototyping. Lazy evaluation is often combined with memoization, as described in Jon Bentley (computer scientist), Jon Bentley's ''Writing Efficient Programs''. After a function's value is computed for that Parameter (computer programming), parameter or set of parameters, th ...
[...More Info...]      
[...Related Items...]     OR:     [Wikipedia]   [Google]   [Baidu]