ShenDoc 30


 

 

The Primitive Functions of KLambda

The following set represents the set of 46 primitive functions which Shen requires and which are used in Kλ. All other functions are included in the Shen sources. The CL definitions are given to explain the semantics of these functions. Note in some cases these primitives can be reduced still further (e.g and in terms of if etc). In fact lambda alone is sufficient, but impractical. The instruction set is therefore a balance between economy of primitives (easy to implement but inefficient in execution) and practicality (more difficult to implement but possibly faster).

Kλ uses strict applicative order evaluation except for the boolean operations etc. which follow the usual pattern. NIL is just a symbol with no special status. () denotes the empty list.

Boolean Operations (4)

if boolean test boolean --> A --> A --> A
and boolean and boolean --> boolean --> boolean
or boolean or boolean --> boolean --> boolean
cond case form none

Symbols (1)

intern maps a string containing a symbol to a symbol none

Strings (7)

pos given a natural number 0 ... n
and a string S returns
the nth unit string in S
string --> number --> string
tlstr returns all but the first
unit string of a string
string --> string
cn concatenates two strings string --> string --> string
str maps any atom to a string A --> string
string? test for strings A --> boolean
n->string maps a code point in decimal
to the corresponding unit string
number --> string
string->n maps a unit string to the
corresponding decimal
string --> number

Assignments (2)

set assigns a value to a symbol (value X) : A;
X : symbol;
Y : A;
______________
(set X Y) : A;
value retrieves the value of a symbol

Error Handling (3)

simple-error prints an exception string --> A
trap-error evaluates its first argument A;
if it is not an exception
returns the normal form of A
else applies its second argument
to the exception
A --> (exception --> A) --> A
error-to-string maps an exception to a string exception --> string

Lists (4)

cons add an element to the front of a list A --> (list A) --> (list A)
hd take the head of a list none
tl return the tail of a list (list A) --> (list A)
cons? test for non-empty list A --> boolean

Generic Functions (7)

defun basic Lisp function definer none
lambda lambda function X : A >> Y : B;
_____________________
(lambda X Y) : (A --> B);
let local assignment Y : B;
X : B >> Z : A;
_______________
(let X Y Z ) : A;
= equality A --> A --> boolean
eval-kl evaluation function none
freeze creates a continuation A --> (lazy A)
type labels the type of an expression X : A;
___________
(type X A) : A;

Vectors (4)

absvector creates a vector in the native platform none
address-> destructively assigns a value to a vector address none
<-address retrieves a value from a vector address none
absvector? recognises vectors A --> boolean

Streams and I/O (6)

write-byte writes an unsigned 8 bit byte
to a stream
number --> (stream out) --> number
read-byte reads an unsigned 8 bit byte
from a stream
(stream in) --> number
open open a stream if D = in or D = out
Path : string;
_______________
(open P D) : (stream D);
close close a stream (stream A) --> (list B)

Time (1)

get-time get the run/real time symbol --> number

Arithmetic (9)

+ addition number --> number --> number
- subtraction number --> number --> number
* multiplication number --> number --> number
/ division number --> number --> number
> greater than number --> number --> boolean
< less than number --> number --> boolean
>= greater than or equal to number --> number --> boolean
<= less than or equal to number --> number --> boolean
number? number test A --> boolean

Total 46 functions

Acknowledgements

History
Basic Types in Shen and Kλ
The Primitive Functions of Kλ
The Syntax of Kλ
Notes on the Implementation of Kλ
Boolean Operators
The Syntax of Symbols
The Semantics of Symbols in Shen and Kλ
Packages
Prolog
Shen-YACC
Strings
Strings and Pattern Matching
Lists
Streams
Character Streams and Byte Streams
Bytes and Unicode
Reader Macros
Vectors
Standard Vectors and Pattern Matching
Non-standard Vectors and Tuples
Equality
I/O
Generic Functions
Eval
Type Declarations
External Global Variables
Property Lists and Hashing
Error Handling
Numbers
Floats and Integers
The Timer
Comments
Special Forms

Built by Shen Technology (c) Mark Tarver, September 2021