-
Notifications
You must be signed in to change notification settings - Fork 4
Home
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.
- Sequential composition ".":
f{m, n} ↔ f1{m, k}.f2{k, n}
f(a) ↔ f2(f1(a))
- 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)
- 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.
- 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.