magistrsko delo
Abstract
V delu si pogledamo programski jezik Æff in $\lambda_æ$-račun, na katerem temelji. Glavna lastnost $\lambda_æ$-računa je možnost asinhronega izvajanja v navezi z vzporednim izvajanjem. To dosežemo tako, da prestreznik naprej izvaja svoje nadaljevanje, medtem ko čaka, da dobi odgovor v obliki učinka iz drugega procesa. Ko prestreže želeni učinek, ga primerno obdela in izvajanje se spet nadaljuje. Osnovno verzijo $\lambda_æ$-računa razširimo z rekurzivnimi obljubami, mobilnimi tipi in dinamičnimi procesi. Rekurzivne obljube omogočijo, da bo program lahko reagiral na več učinkov z istim imenom operacije. Mobilni tipi omogočijo pošiljanje vrednosti višjega reda, predvsem funkcij. Dinamični procesi omogočijo ustvarjanje novih procesov sproti po potrebi. Dokažemo izreka o napredku in ohranitvi za osnovni in razširjen $\lambda_æ$-račun. Omenimo tudi nekatere razlike med $\lambda_æ$-računom in dejansko implementacijo jezika Æff.
Keywords
asinhrono izvajanje;algebrajski učinki;vzporedno izvajanje;prestrezniki;signali;
Data
Language: |
Slovenian |
Year of publishing: |
2021 |
Typology: |
2.09 - Master's Thesis |
Organization: |
UL FMF - Faculty of Mathematics and Physics |
Publisher: |
[J. Radešček] |
UDC: |
004.42 |
COBISS: |
83902723
|
Views: |
1172 |
Downloads: |
76 |
Average score: |
0 (0 votes) |
Metadata: |
|
Other data
Secondary language: |
English |
Secondary title: |
Asynchronous algebraic effects |
Secondary abstract: |
We take a look at the programming language Æff and $\lambda_æ$-calculus on which Æff is based. The main feature of the $\lambda_æ$-calculus is the ability to run asynchronously in conjunction with parallel execution. This is accomplished by continuing to perform operation’s continuation while it waits to receive a response in the form of an effect from another process. Once it receives the response, it processes it appropriately and execution resumes. We extend the basic version of the $\lambda_æ$-calculus with recursive promises, mobile types, and dynamic processes. Recursive promises allow the program to be able to respond to multiple effects with the same operation name. Mobile types allow you to send higher-order values between parallel processes, especially functions. Dynamic processes allow you to create new processes on the fly as needed. We prove the progress and preservation theorem for the basic and extended $\lambda_æ$-calculus. We also mention some differences between the $\lambda_æ$-calculus and the actual implementation of the Æff language. |
Secondary keywords: |
asynchronous execution;algebraic effects;parallel execution;handlers;signals; |
Type (COBISS): |
Master's thesis/paper |
Study programme: |
0 |
Thesis comment: |
Univ. v Ljubljani, Fak. za matematiko in fiziko, Oddelek za matematiko, Matematika - 2. stopnja |
Pages: |
IX, 65 str. |
ID: |
13854621 |