Skip to content
zumisha edited this page Dec 10, 2019 · 1 revision

Functional Parallel Typified Language (FPTL) is a language in which the programmer does not need to explicitly work with the mechanisms for organizing parallel computing.

Data in the language is represented in the form of tuples - sequences in the general case of heterogeneous elements. Functions in a language are typed {m, n}-arity relations between data tuples.

For m and n equal to 0, we have a tuple of zero length, denoted by λ, with the properties λα = αλ = α, where α is an arbitrary tuple.

Formally, functions are defined as systems of functional equations Fi = Tj, where Tj are functional terms constructed from basis functions and functional variables Fi by applying the operations of composition of functions: "+", "->", "*", "." (in order of increasing priority of operations).

Let f{m, n} be an {m, n}-arity function (m, n ⩾ 0), f(a) be the result of applying it to a tuple a, and f1, f2 be given functions. The syntax and semantics of composition operations are defined as follows.

  1. Sequential composition ".":

f{m, n} ↔ f1{m, k}.f2{k, n}

f(a) ↔ f2(f1(a))

  1. The operation of concatenation of tuples of function values (parallel composition) "*":

f{m, n1 + n2} ↔ f1{m, n1} * f2{m, n2}

f(a) ↔ f1(a) * f2(a)

  1. The conditional composition operation "->":

f{m, n1 | n2} ↔ f1{m, k} -> f2{m, n1}, f3{m, n2};

f(a) ↔ f2(α) if f1(α) is different from false and undefined, f3(α) otherwise.

  1. The operation of combining orthogonal functions "+":

f{m, n} ↔ f1{m, n} + f2{m, n}

f(a) ↔ f1(α) if the value f1(α) is calculated first, f2(α) if the value f2(α) is calculated first, undefined if the values of f1(α) and f2(α) are undefined.

Clone this wiki locally