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
HOW TO RETURN index doc: PUT {} IN where FOR line.no IN keys doc: TREAT LINE RETURN where TREAT LINE: FOR word IN split doc[line.no]: IF word not.in keys where: PUT {} IN where[word] INSERT line.no IN where[word]
PROGRAM ONE WHEEL " Simple model of a dynamical system " written in ACSL 1, circa 1982. INITIAL CINTERVAL CINT = 0.05 ALGORITHM IALG = 4 $ "RK3" CONSTANT X1IO = 0.0, X2IO=0.0, X1DIC=0.0, X2DIC = 0.0 CONSTANT M1 = 25.0, M2=2.0, DF=100.0, K2=5000 CONSTANT TDONE = 15.0 K1 = 1000.0 END $ "OF INITIALIZATION" DYNAMIC DERIVATIVE X3= STEP(0.0) X1D = INTEG((-DF/M1)*(X1D-X2D) - (K1/M1)*(X1-X2), X1DIC) X2D = INTEG((-DF/M1)*(X1D-X2D) - (K1/M1)*(X1-X2), ... (K2/M2)*(X2-X3*5.0), X2DIC) X1 = INTEG(X1D,X1IO) X2 = INTEG(X2D,X2IO) END "OF DERIVATIVE SECTION" TERMT(T .GE. TDONE) END "OF DYNAMIC SECTION" END "OF PROGRAM"
-- simple programming with floating-point #s with Ada.Float_Text_IO; use Ada.Float_Text_IO; procedure Think is A, B : Float := 0.0; -- A and B initially zero; note the period. I, J : Integer := 1; begin A := B * 7.0; I := J * 3; B := Float(I) / A; Put(B); end Think;
/* An Alef program to parse numbers out of * the string returned from /dev/time, and * print them from a separate proc. This is * a rather lame conglomeration of several * examples from Bob Flandrea's Alef * User's Guide */ tuple(int, uint, byte*) strtoui(byte* str, int base) { int val; while(*str != 0 && whitespace(*str)) str ; if(str == nil || *str == 0) return(0, 0, str); while(*str && !whitespace(*str)) { if(!validdigit(*str, base)) return (-1, val, str 1); /* extract digit into val */ str ; } return(1, val, str); } void receive(chan(uint) c) { int s; s = <-c; print("%d\n", s); if (s == 0) terminate(nil); } void main(void) { chan(uint) c; alloc c; proc receive(c); int ret; uint val; int fd; byte *p, buf[128], *newp; fd = open("/dev/time", OREAD|OCEXEC); if (fd >= 0) { read(fd, buf, sizeof(buf)); for(p = buf; *p; p = newp) { (ret, val, newp) = strtoui(p, 10); if(ret >= 0) c <-= val; if(ret == 0) break; } } }
// the main program, calculate the mean of // some numbers begin integer N; Read Int(N); begin real array Data[1:N]; real sum, avg; integer i; sum:=0; for i:=1 step 1 until N do begin real val; Read Real(val); Data[i]:=if val<0 then -val else val end; for i:=1 step 1 until N do sum:=sum Data[i]; avg:=sum/N; Print Real(avg) end end
Here is a better example, written in the
Algol60 publication language, from
Jean Sammet courtesy of
Glyn Webster.
procedure problem (a, b); value a, b; integer a, b; begin integer k; real e; for k := 2 × (a ÷ 2) 1 step 2 until b do begin e := if prime(k) then sqrt(3 × k sin(k)) else sqrt(4 × k cos(k)); if prime(k) then putlist(k, e, 'prime') else putlist(k, e, 'nonprime') end end problem;
-- Use the Finder to close all applications -- (by Joshua D. Baer) property specialApps : {"Finder"} tell application "Finder" set allApps to name of processes end tell repeat with someParticularApp in allApps if specialApps does not contain someParticularApp then tell application someParticularApp activate quit end tell end if end repeat
;; Very simple example of interactive extension ;; for AutoCAD (Defun c:SF2ACRE () (setq SF (getreal "Enter area in square feet: ")) (setq AGREAGE (/ SF 43560.0)) (alert (strcat "\nThe area in acres is " (rtos ARGEAGE 2 2))) )
BEGIN { if ("'$#argv'"==1) Col="'$1'"; else Col=1 } {Total = $Col; }; END { printf "Total for column %d with %d items: %d\n", Col,NR,Total }
# Small Tcl sorting program, after Welch, 1997. proc NameCompare {a, b} { set $asurname = [lindex $a end] set $bsurname = [lindex $b end] set ret [string compare $asurname $bsurname] if { $ret == 0 } { $ret = [string compare $a $b] } return $ret } set namelist {} set line {} while { [gets stdin line] != 0 } { lappend namelist $line } set namelist [lsort -command NameCompare $namelist] set lineno 1 foreach line $namelist { puts stdout "$lineno $line" set lineno [expr $lineno 1] }
! DISPLAY CURRENT LINE'S ASCII CODES, 20 PER DISPLAY-LINE.! ! D F KOENIG, 1989-11-24. ! @^U.L[^[^A Line length = ^A^[ MN0U.0^[QN<Q.0A:=^[^A ^A^[((%.0/10)*10)-Q.0"E^[((Q.0/20)*20)-Q.0"E^[^A ^A^[ ^[|^[^A ^A^[ ^['^['^[>^[^A ^A^[[
code Segment; \ define code Segment.
Org 0100h; \ all .COM programs start at 0100h.
data Segment; \ define data Segment.
' First2 ='1', =13, =10, \ Initial 2 primes message text...
='2', =13, =10, =24h; \ followed by a $ for DOS.
' Primes =" primes.", \ declare message text...
crlf =13, =10, =24h; \ followed by CR, LF and $ for DOS.
EOP Label Byte; \ define End Of Program.
data EndS; \ close data segment, goes after code.
\
\ Computes and displays all of the primes between 0 and 65536 using the
\ Eratosthenes' Sieve method. Note that the first 2 primes (1 and 2)
\ are handled as a special case.
\
\
dx = O(First2); ah = 9; !21h; \* print first 2 primes using DOS.
sp = O(EOP 512); \ set up 256 word stack at end of prog.
bx = sp 15 > 4; \ bx = number of paragraphs we use.
es = ds = ax = cs bx; \ setup ds,es to free space past stack.
cx = 32768; ax = (-1); &di; \ cx = number, ax = value, di = offset.
; <> ** =; \ auto-inc, clear full 64K flags array.
bx = 2; &si; &ch; \ count = 2 (for 1 & 2), i = 0, ch = 0.
{ \ do...
cl = [si]; ?<> \ if flags[i] is non-zero...
{ \ then...
dx = si si 3; <<1; \ prime = i * 2 3, break if done...
ax = dx; =.PrintNum; \* print prime using PrintNum.
ax = H(14) L(13); !10h; \* print CR using BIOS.
ax = H(14) L(10); !10h; \* print LF using BIOS.
di = si dx; >> \ k = i prime, if & while k << limit,
{ [di] = ch; di dx; }>>; \ do flags[k] = 0, k = k prime.
bx ; \ count = count 1;
}; \ endif flags[i] is non-zero.
si ; \ i = i 1.
}.; \ loop forever-- break gets us out.
es = ds = ax = cs; \ restore ds and es.
ax = bx; =.PrintNum; \ print ax in decimal to screen.
dx = O(Primes); ah = 9; !21h; \ print " primes." using DOS.
!20h; \ return to DOS.
% Code to test whether a given year is % a leap-year. From % S. Bechtolsheim's "TeX in Practice" volume 3. \InputD{imodn.tip} \newif\if@LeapYear \def\LeapYearConditional #1{% TT\fi {% \count0 = #1\relax \IModN{\count0}{4}{\count1}% \ifnum\count1 = 0 \global\@LeapYeartrue \IModN{\count0}{100}{\count2}% \IModN{\count0}{400}{\count3}% \ifnum\count2 = 0 \global\@LeapYearfalse \fi \ifnum\count3 = 0 \global\@LeapYeartrue \fi \else \global\@LeapYearfalse \fi }% \if@LeapYear }
% Roll a die until you get 6. (This is a comment) var die : int loop randint (die, 1, 6) exit when die = 6 put "This roll is ", die end loop put "Stopping with roll of 6"
(* Oberon module to read in numbers *) (* average them. *) MODULE Stats; IMPORT Texts, Oberon; TYPE Stat* = POINTER TO StatRec; StatRec *= RECORD count: LONGINT; total: REAL; END; PROCEDURE (s: Stat) Add* (REAL val); VAR this: Stat; BEGIN this := s; this.total := this.total + val; this.count := this.count + 1; END Add; PROCEDURE (s: Stat) Reset*; VAR this: Stat; BEGIN this := s; this.total := 0.0; this.count := 0; END Reset; PROCEDURE (s: Stat) IsValid*: BOOLEAN; VAR this: Stat; BEGIN this := s; RETURN (this.count > 0); END Reset; PROCEDURE (s: Stat) Average*: REAL; VAR this: Stat; BEGIN this := s; IF this.IsValid^() THEN RETURN 0.0 ELSE RETURN (this.total / this.count) END Average; END Stats;
/* still need an example here */
Server side:
(* A server for computing factorials. *) module FactServer; let fact = net_export("fact","", { m => meth(s,n) if n is 0 then 1 else n * s.m(n-1) end end });
Client side:
module FactClient; let fact = net_import("fact",""); fact.m(13);
-- Pipelined parallel sort in occam --(from Pountain and May, A Tutorial -- Introduction to Occam Programming) VAL numbers IS 100 : [numbers + 1] CHAN OF INT pipe: PAR PAR i = 0 FOR numbers input IS pipe[i] : output IS pipe[i+1] : INT highest : SEQ input ? highest SEQ j = 0 FOR numbers - 1 INT next: SEQ input ? next IF next <= highest output ! highest next > highest SEQ output ! highest highest := next SEQ i = 0 FOR numbers -- get unsorted INT unsortednumber : -- numbers SEQ input ? unsortednumber pipe[0] ! unsortednumber SEQ i = 0 FOR numbers -- dump sorted INT sortednumber : -- numbers SEQ pipe[numbers] ? sortednumber output ! sortednumber
; An OPS5 program that implements a model of ; rock climbers, from exercise solutions of ; "Expert Systems Programming in OPS5" (literalize rock-climber age ; young or old style ; timid or bold ) (p old-not-bold (rock-climber ^age old ^style <> bold) ---> (write (crlf) that is plausible)) (p bold-not-old (rock-climber ^age <> old ^style bold) ---> (write (crlf) that is quite possible)) (p error::old-and-bold (rock-climber ^age old ^style bold) ---> (write (crlf) There are no old, bold rock climbers)) (make rock-climber ^age young ^style bold)
# An example object from the paper # "Experiences with the Orca Programming Language" # by Bal and Wilson OBJECT IMPLEMENTATION buffer; CONST MAXSIZE = 10; # Maximum size of the buffer # Local state of the object: buf:ARRAY[integer 0..MAXSIZE-1] OF integer; # the buffer itself in, out: integer; # index of next element to put/get size: integer; # current size OPERATION put(x: integer); BEGIN GUARD size ! MAXSIZE DO # blocks until there is room buf[in] := x; # store element in := (in + 1) % MAXSIZE; # bump input index size +:= 1; # increment size OD; END; OPERATION get(x: OUT integer); BEGIN GUARD size ? 0 DO # blocks while buffer is empty x := buf[out]; # retrieve element out := (out + 1) % MAXSIZE; # bump output index size -:= 1; # decrement size OD; END; END;
local proc {AndThen BP1 BP2 ?B} case {BP1} then case {BP2} then B = true else B = false end else B = false end end in proc {BinaryTree T ?B} case T of nil then B = true [] tree(K V T1 T2) then {AndThen proc {$ B1}{BinaryTree T1 B1} end proc {$ B2}{BinaryTree T2 B2} end B} else B = false end end end
# Small Tcl sorting program, after Welch, 1997. proc NameCompare {a, b} { set $asurname = [lindex $a end] set $bsurname = [lindex $b end] set ret [string compare $asurname $bsurname] if { $ret == 0 } { $ret = [string compare $a $b] } return $ret } set namelist {} set line {} while { [gets stdin line] != 0 } { lappend namelist $line } set namelist [lsort -command NameCompare $namelist] set lineno 1 foreach line $namelist { puts stdout "$lineno $line" set lineno [expr $lineno 1] }
! DISPLAY CURRENT LINE'S ASCII CODES, 20 PER DISPLAY-LINE.! ! D F KOENIG, 1989-11-24. ! @^U.L[^[^A Line length = ^A^[ MN0U.0^[QN<Q.0A:=^[^A ^A^[((%.0/10)*10)-Q.0"E^[((Q.0/20)*20)-Q.0"E^[^A ^A^[ ^[|^[^A ^A^[ ^['^['^[>^[^A ^A^[[
code Segment; \ define code Segment.
Org 0100h; \ all .COM programs start at 0100h.
data Segment; \ define data Segment.
' First2 ='1', =13, =10, \ Initial 2 primes message text...
='2', =13, =10, =24h; \ followed by a $ for DOS.
' Primes =" primes.", \ declare message text...
crlf =13, =10, =24h; \ followed by CR, LF and $ for DOS.
EOP Label Byte; \ define End Of Program.
data EndS; \ close data segment, goes after code.
\
\ Computes and displays all of the primes between 0 and 65536 using the
\ Eratosthenes' Sieve method. Note that the first 2 primes (1 and 2)
\ are handled as a special case.
\
\
dx = O(First2); ah = 9; !21h; \* print first 2 primes using DOS.
sp = O(EOP 512); \ set up 256 word stack at end of prog.
bx = sp 15 > 4; \ bx = number of paragraphs we use.
es = ds = ax = cs bx; \ setup ds,es to free space past stack.
cx = 32768; ax = (-1); &di; \ cx = number, ax = value, di = offset.
; <> ** =; \ auto-inc, clear full 64K flags array.
bx = 2; &si; &ch; \ count = 2 (for 1 & 2), i = 0, ch = 0.
{ \ do...
cl = [si]; ?<> \ if flags[i] is non-zero...
{ \ then...
dx = si si 3; <<1; \ prime = i * 2 3, break if done...
ax = dx; =.PrintNum; \* print prime using PrintNum.
ax = H(14) L(13); !10h; \* print CR using BIOS.
ax = H(14) L(10); !10h; \* print LF using BIOS.
di = si dx; >> \ k = i prime, if & while k << limit,
{ [di] = ch; di dx; }>>; \ do flags[k] = 0, k = k prime.
bx ; \ count = count 1;
}; \ endif flags[i] is non-zero.
si ; \ i = i 1.
}.; \ loop forever-- break gets us out.
es = ds = ax = cs; \ restore ds and es.
ax = bx; =.PrintNum; \ print ax in decimal to screen.
dx = O(Primes); ah = 9; !21h; \ print " primes." using DOS.
!20h; \ return to DOS.
% Code to test whether a given year is % a leap-year. From % S. Bechtolsheim's "TeX in Practice" volume 3. \InputD{imodn.tip} \newif\if@LeapYear \def\LeapYearConditional #1{% TT\fi {% \count0 = #1\relax \IModN{\count0}{4}{\count1}% \ifnum\count1 = 0 \global\@LeapYeartrue \IModN{\count0}{100}{\count2}% \IModN{\count0}{400}{\count3}% \ifnum\count2 = 0 \global\@LeapYearfalse \fi \ifnum\count3 = 0 \global\@LeapYeartrue \fi \else \global\@LeapYearfalse \fi }% \if@LeapYear }
% Roll a die until you get 6. (This is a comment) var die : int loop randint (die, 1, 6) exit when die = 6 put "This roll is ", die end loop put "Stopping with roll of 6"
HOW TO RETURN index doc: PUT {} IN where FOR line.no IN keys doc: TREAT LINE RETURN where TREAT LINE: FOR word IN split doc[line.no]: IF word not.in keys where: PUT {} IN where[word] INSERT line.no IN where[word]
PROGRAM ONE WHEEL " Simple model of a dynamical system " written in ACSL 1, circa 1982. INITIAL CINTERVAL CINT = 0.05 ALGORITHM IALG = 4 $ "RK3" CONSTANT X1IO = 0.0, X2IO=0.0, X1DIC=0.0, X2DIC = 0.0 CONSTANT M1 = 25.0, M2=2.0, DF=100.0, K2=5000 CONSTANT TDONE = 15.0 K1 = 1000.0 END $ "OF INITIALIZATION" DYNAMIC DERIVATIVE X3= STEP(0.0) X1D = INTEG((-DF/M1)*(X1D-X2D) - (K1/M1)*(X1-X2), X1DIC) X2D = INTEG((-DF/M1)*(X1D-X2D) - (K1/M1)*(X1-X2), ... (K2/M2)*(X2-X3*5.0), X2DIC) X1 = INTEG(X1D,X1IO) X2 = INTEG(X2D,X2IO) END "OF DERIVATIVE SECTION" TERMT(T .GE. TDONE) END "OF DYNAMIC SECTION" END "OF PROGRAM"
-- simple programming with floating-point #s with Ada.Float_Text_IO; use Ada.Float_Text_IO; procedure Think is A, B : Float := 0.0; -- A and B initially zero; note the period. I, J : Integer := 1; begin A := B * 7.0; I := J * 3; B := Float(I) / A; Put(B); end Think;
/* An Alef program to parse numbers out of * the string returned from /dev/time, and * print them from a separate proc. This is * a rather lame conglomeration of several * examples from Bob Flandrea's Alef * User's Guide */ tuple(int, uint, byte*) strtoui(byte* str, int base) { int val; while(*str != 0 && whitespace(*str)) str ; if(str == nil || *str == 0) return(0, 0, str); while(*str && !whitespace(*str)) { if(!validdigit(*str, base)) return (-1, val, str 1); /* extract digit into val */ str ; } return(1, val, str); } void receive(chan(uint) c) { int s; s = <-c; print("%d\n", s); if (s == 0) terminate(nil); } void main(void) { chan(uint) c; alloc c; proc receive(c); int ret; uint val; int fd; byte *p, buf[128], *newp; fd = open("/dev/time", OREAD|OCEXEC); if (fd >= 0) { read(fd, buf, sizeof(buf)); for(p = buf; *p; p = newp) { (ret, val, newp) = strtoui(p, 10); if(ret >= 0) c <-= val; if(ret == 0) break; } } }
// the main program, calculate the mean of // some numbers begin integer N; Read Int(N); begin real array Data[1:N]; real sum, avg; integer i; sum:=0; for i:=1 step 1 until N do begin real val; Read Real(val); Data[i]:=if val<0 then -val else val end; for i:=1 step 1 until N do sum:=sum Data[i]; avg:=sum/N; Print Real(avg) end end
Here is a better example, written in the
Algol60 publication language, from
Jean Sammet courtesy of
Glyn Webster.
procedure problem (a, b); value a, b; integer a, b; begin integer k; real e; for k := 2 × (a ÷ 2) 1 step 2 until b do begin e := if prime(k) then sqrt(3 × k sin(k)) else sqrt(4 × k cos(k)); if prime(k) then putlist(k, e, 'prime') else putlist(k, e, 'nonprime') end end problem;
-- Use the Finder to close all applications -- (by Joshua D. Baer) property specialApps : {"Finder"} tell application "Finder" set allApps to name of processes end tell repeat with someParticularApp in allApps if specialApps does not contain someParticularApp then tell application someParticularApp activate quit end tell end if end repeat
;; Very simple example of interactive extension ;; for AutoCAD (Defun c:SF2ACRE () (setq SF (getreal "Enter area in square feet: ")) (setq AGREAGE (/ SF 43560.0)) (alert (strcat "\nThe area in acres is " (rtos ARGEAGE 2 2))) )
BEGIN { if ("'$#argv'"==1) Col="'$1'"; else Col=1 } {Total = $Col; }; END { printf "Total for column %d with %d items: %d\n", Col,NR,Total }
{ Table data structure, adapted from an example in "Multiparadigm Data Structures in Leda" by Tim Budd, 1993 Assumes the list data structure is already defined. } class Association [X, Y : equality] of equality[Association]; var key : X; value : Y; function equals(argValue : Association[X, Y])->boolean; begin return key = argValue.key; end; end; class Table [X, Y : equality] { of equality[Association] }; var data : List[Association[X, Y]]; function add (newKey : X, newValue : Y); begin if ~ defined(data) then data := List[Association[X, Y]](); data.add(Association[X, Y](newKey, newValue)); end; function onEach (theFun : function(X, Y)); begin if defined(data) then data.onEach(function (item : Association[X, Y]); begin theFun(item.key, item.value); end); end; function items (byRef key : X, byRef value : Y)->relation; var element : Association[X, Y]; begin return defined(data) & data.items(element) & unify[X](key, element.key) & unify[Y](value, element.value); end; function includesKey (key : X)->boolean; var value : Y; begin if items(key, value) then return true; return false; end; function at (key : X)->Y; var value : Y; begin if items(key, value) then return value; return NIL; end; function atPut (key : X, value : Y); var element : Association[X, Y]; begin if defined(data) & data.items(element) & element.key = key then element.value := value else add(key, value); end; end;
global(sieve)? global(limit)? main :- write("N=?"), read_token(limit & int), next_prime(2), nl. remove_multiples(P,M) :- cond(M < limit, (sieve.M <-multiple_of(P),remove_multiples(P,M+P)) ). next_prime(P) :- P < limit, !, SP=sieve.P, ( SP=prime(P), !, write(P,' '), remove_multiples(P,2*P) ; succeed ), next_prime(P+1). next_prime(P).
# A simple program to sum up some numbers # presented on the command line, from # Bob Pike's forthcoming book on Limbo. implement Sum; include "sys.m"; sys: Sys; include "draw.m"; Sum: module { init: fn(context: ref Draw->Context, argl: list of string); }; init(context: ref Draw->Context, argl: list of string) { sys = load Sys Sys->PATH; argl = tl argl; # ignore command name if(len argl == 0){ sys->print("usage: sum numbers....\n"); return; } sum := 0.0; while(argl != nil){ arg := hd argl; sys->print("%s", arg); sum += real arg; argl = tl argl; if(argl != nil) sys->print(" + "); } sys->print(" = %g\n", sum); }
;; Simple factorial routine ;; (until I get a better example written) (defun fact1 (num) (cond ((not (integerp num)) nil) ((<= num 1) 1) (t (* num (fact1 (- num 1))))) )
; Recursive procedure to line, fractalized to DrawFractalLine :level :length ifelse :level < 1 [ fd :length] [ DrawFractalLine (sum -1 :level) (quotient :length 3.00) left 60 DrawFractalLine (sum -1 :level) (quotient :length 3.00) right 120 DrawFractalLine (sum -1 :level) (quotient :length 3.00) left 60 DrawFractalLine (sum -1 :level) (quotient :length 3.00) ] end ; procedure to clear screen and position turtle to SetupTurtle cs setpos [-160 -10] right 60 clean end ; setup turtle then draw Koch's snowflake(5) SetupTurtle setpensize [2 2] repeat 3 [DrawFractalLine 5 330 right 120]
' Find agents owned by the current user ' and remove them (Adapted from examples at ' www.lotus.com) Dim session As New NotesSession Dim db As NotesDatabase Dim agentArray(1 To 10) As NotesAgent Dim count as Integer Dim answer as string count = 0 Set db = session.CurrentDatabase Forall a In db.Agents If ( a.Owner = session.UserName ) Then Set agentArray(count) = a count = count + 1 If (count > 10) Then Exit Forall End If End If End Forall answer = Inputbox$( "You have " & count & " agents. Delete them?" ) If (answer = "y") Or (answer = "yes") Then Forall a in agentArray Call a.Remove End Foreall End If
-- Simple Lua program that implements the -- bisection method for solving non-linear equations function bisect(f,a,b,fa,fb) write(n," a=",a," fa=",fa," b=",b," fb=",fb,"\n") local c=(a+b)/2 if abs(a-b) < delta then return c end n=n+1 local fc=f(c) if fa*fc < 0 then return bisect(f,a,c,fa,fc) else return bisect(f,c,b,fc,fb) end end -- find root of f in the inverval [a,b]. -- bisection requires that f(a)*f(b) < 0 function solve(f,a,b) delta=1e-6 -- tolerance n=0 local z=bisect(f,a,b,f(a),f(b)) write(format("after %d steps, root is %.10g\n",n,z)) end -- test the bisection code with -- a function: x^3 - x - 1 function f(x) return x*x*x - x - 1 end solve(f,1,2)
h where h = 1 fby merge(merge(2 * h, 3 * h), 5 * h); merge(x,y) = if xx <= yy then xx else yy fi where xx = x upon xx <= yy; yy = y upon yy <= xx; end; end;
Information about the dictionary:
Here are some other sites that have surveys or dictionaries of programming languages.
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.