Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
A
B
C
D
E
F
G
H
I
JK
L
M
N
O
P
QR
S
T
UV
WXYZ+
Get a full dump of the dictionary:
List of Names
Short Form
Full Form
- H
-
Haskell
- Language type:
F - Functional or lambda-based
- Description:
Haskell is a non-strict purely functional
language, usually interpreted, designed
by representatives of the functional
programming community. The motivation
for Haskell was unification of functional
programming through the introduction of
a standard, widespread, modern language.
Haskell is a strongly typed language with
a rich type system. As in all functional
language, computations are performed only
by expressions; every expression has a
type. Primitive data types supplied by the
language include: integers, reals, characters,
lists, enumerations, tuples, and various
function
mappings.
Haskell language implementations perform
static type checking prior to execution.
Haskell functions are defined as mappings
between parts of the type space. Of course,
composition, curried functions, lambda forms,
and higher-order functions are supported.
Haskell uses lazy evaluation.
It
also permits definition of operators as
functions (operator overloading), a convenience
feature that is unusual in functional programming
systems.
Modularity is explicitly supported by Haskell.
Programs consist of named modules. The
module facility provides distinct namespaces
and a means for defining encapsulated
abstract data types.
Haskell's module features allow some degree
of object oriented programming.
The Haskell standard library is written
using the module facility. It provides
additional numeric data types, various
standard aggregate types like arrays
and lists, system
interface and I/O facilities, time and date
handling, and random number generation.
Several free academic implementations of
Haskell are available, and good documentation
is available at the main Haskell web site.
- Origin:
Haskell Committee (Hughes, Wadler, Peterson et al), 1990.
- See Also:
- Remarks:
The language is named after Haskell B. Curry,
a logician and mathematician who
worked on function theory; many ideas in
functional programming originated with Curry
(including the notion of curried functions).
Two main Haskell implementations,
Glasgow Haskell Compiler (GHC) and
Yale/Nottingham Hugs are based on C. GHC
is a Haskell->C translator, and Hugs
is an interpreter coded in C.
As of the end of 1997, the current version
of the Haskell language definition was 1.4.
A revised language definition, to be called
Standard Haskell, should be
finalized in 1998.
- Links:
-
-
-
- Date:
- Sample code:
-- Stable quicksort in Haskell by Lennart Augustsson
--
module QSort(sortLe, sort) where
sortLe :: (a -> a -> Bool) -> [a] -> [a]
sortLe le l = qsort le l []
sort :: (Ord a) => [a] -> [a]
sort l = qsort (<=) l []
-- qsort is stable and does not concatenate.
qsort le [] r = r
qsort le [x] r = x:r
qsort le (x:xs) r = qpart le x xs [] [] r
-- qpart partitions and sorts the sublists
qpart le x [] rlt rge r =
-- rlt and rge are in reverse order and must be sorted with an
-- anti-stable sorting
rqsort le rlt (x:rqsort le rge r)
qpart le x (y:ys) rlt rge r =
if le x y then
qpart le x ys rlt (y:rge) r
else
qpart le x ys (y:rlt) rge r
-
Hope
- Language type:
F - Functional or lambda-based
- Description:
Hope is a small, simple functional language
based function composition and
on the idea of 'call-by-pattern.'
A Hope program consists of a set of
modules, each of which can contain
sets of recursion equations.
Current implementations of Hope
use full lazy evaluation.
Unlike some of the original functional
languages, Hope is strongly typed.
There were a couple of dialects of Hope,
corresponding to different
groups' implementations. The one that seems
available today was originally called Hope .
Data types supported by Hope include
numbers, symbols, strings, lists, and tuples.
(Constituents of a list must be
all the same type, while tuples can
be heterogenous.) A Hope programmer
can define their own primitive and
aggregate types. This ability to
create true abstract data types is
a novel feature in functional languages.
Modern implementations of Hope use
lazy evaluation.
A free implementation of the Hope
interpreter is available for
MS-DOS, Unix, and Macintosh.
- Origin:
Burstall 1978, Perry, Kewley et al 1985.
- See Also:
- Remarks:
Hope was apparently the first
functional language
to employ argument/return pattern-matching
as a polymorphism semantic. This
kind of approach is carried on today
in some symbolic programming
systems, notably Mathematica, as well
as many newer functional languages.
The original language Hope was developed
at Edinburgh U. by Burstall in the late
1970s. A successor, called Hope , was
developed at ICL by J. Kewley, T. Thomson,
and
others in the mid-1980s;
the first implementation used
eager evaluation, but later
ones switch to the more advanced
lazy evaluation strategy.
- Links:
- Date:
- Sample code:
A module for listing the contents of a
tree by breadth-first traversal using
lazy evaluation, from Ross Paterson's
Hope web page.
use lists, functions, products;
type rose_tree alpha == alpha # list(rose_tree alpha);
dec bf_list : rose_tree alpha -> list alpha;
--- bf_list t <= [t].
iterate (concat o map snd).
front_with (/= []).
concat.
map fst;
-
HyperTalk
- Language type:
- Description:
HyperTalk is the scripting language for
Apple's information presentation
system HyperCard. It has a simple and
English-like syntax, a modest set of
general and application-specific
data types, and the usual procedural
control structures. HyperTalk was
designed to allow HyperCard information
collections, which are called "stacks",
to be more dynamic and interactive.
Because Apple envisioned the users
of HyperTalk to be multimedia developers
and not traditional programmers, they
HyperTalk interpreter was designed to
be very forgiving: it allows various
syntactic sugar, type conversion is
automatic, and everything is case-insensitive.
Most of a HyperTalk program will often
consist of handers, subroutines to be
called when the end-user performs some
action or when a certain condition obtains.
HyperTalk supports the notion of
add-on 'external' functions and
commands; these are roughly analogous
to library modules in a language like C.
HyperCard 2 compiles individual HyperTalk
functions into intermediate codes the
first time the function is called. This
is done to reduce start-up time for
HyperCard applications.
There are several versions of HyperTalk.
The two main versions from Apple
correspond to HyperCard releases 1 and 2.
Aldus SuperCard supports a superset of
HyperTalk called SuperTalk.
Commercial implementations of both
are available for the Macintosh. At
one time, SuperCard was also available
for MS-Windows, but that may not be
true anymore.
- Origin:
Atkinson and Winkler, Apple Computer, 1986?
- See Also:
- Remarks:
HyperTalk continues to evolve along with
the HyperCard product (version 3 due soon),
but it is unclear whether it is still
going to be a viable language. Apple
is touting AppleScript as THE scripting
language for all Macintosh applications,
so HyperTalk may be superseded.
HyperTalk was very influential on the
niche area of multimedia scripting
languages. For example, the scripting
language used by the current (c. 1997)
market leader in multimedia authorware
resembles HyperTalk in many respects.
- Links:
-
- Date:
- 3 entries retrieved.
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is ziring@home.com
[Ziring MicroWeb Home]
[Dictionary Start]
[Sign Guestbook]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.