@@ -4,9 +4,9 @@ This project implements an IVOA-compliant TAP (Table Access Protocol) and DataLi
## Philosophy
## Philosophy
The codebase adopts a Haskell-like programming model, embracing **pure functional programming** principles. The design is **language-agnostic**, meaning the business logic can be implemented consistently across different languages and runtimes.
The codebase adopts a Haskell-like programming model, embracing **pure functional** programming principles. The design is **language-agnostic**, meaning the business logic can be implemented consistently across different languages and runtimes.
This system enforces an **explicit separation between pure computations and impure side effects**, following established functional programming paradigms. Side effects (e.g., file I/O, networking, and database access) are modeled in a controlled and isolated way using **implicit continuation-passing style (CPS)**.
This system enforces an explicit separation between **pure computations** and **impure side effects**, following established functional programming paradigms. Side effects (e.g., file I/O, networking, and database access) are modeled in a controlled and isolated way using **implicit continuation-passing style (CPS)**.
In this model, all effectful computations are represented as higher-order functions.
In this model, all effectful computations are represented as higher-order functions.
@@ -23,8 +23,8 @@ Callable[[IO], Awaitable[T]]
```
```
In these examples:
In these examples:
-`IO` is a token that represents the "impure world" and must be explicitly passed to authorize the execution of effects.
-`IO` is a token that represents the **impure world** and must be explicitly passed to authorize the execution of effects.
- The return value (`Promise<T>` or `Awaitable[T]`) represents a deferred, possibly asynchronous computation producing a value of type `T`.
- The return value (`Promise<T>` or `Awaitable[T]`) represents a deferred, possibly asynchronous computation, producing a value of type `T`.
These functions do **not** perform any side effects immediately. Instead, they return deferred computations that only execute once the `IO` token is provided.
These functions do **not** perform any side effects immediately. Instead, they return deferred computations that only execute once the `IO` token is provided.