Localized V2 rewrite for this language is in progress. Showing English-first content for now.

Επιδράσεις (Effects)

Κάντε τα side effects ρητά με `with IO`, `with Panic`, `with Async` και custom effects.

Επιδράσεις (Effects)

Το Sounio παρακολουθεί side effects στις υπογραφές συναρτήσεων μέσω μιας ρητής ρήτρας with ....

Pure vs Effectful

fn double(x: i32) -> i32 {
    x * 2
}

fn greet() with IO {
    println("Hello")
}

Built-in Effects (Συνηθισμένα)

  • IO: κονσόλα + filesystem + εξωτερικό I/O
  • Panic: operations που μπορεί να trap/abort (π.χ. division by zero, out-of-bounds indexing)
  • Async: async/await και concurrency primitives
  • Alloc: heap allocation
  • Mut: mutable state (όπου εφαρμόζεται)
  • GPU: GPU kernels / device operations (feature-dependent)

Effect Errors

Αν καλέσετε μια effectful συνάρτηση από μια pure συνάρτηση, ο compiler θα εμφανίσει σφάλμα μέχρι να:

  • προσθέσετε τα απαιτούμενα effects στην υπογραφή του caller, ή
  • κάνετε refactor ώστε το effect να μείνει στο boundary (προτείνεται).

Spec vs Υλοποίηση

Ο στόχος της προδιαγραφής είναι “effects είναι ρητά παντού”. Κάποιες built-in λειτουργίες μπορεί σήμερα να αντιμετωπίζονται πιο χαλαρά από user-defined effectful συναρτήσεις, ανάλογα με compiler mode και feature flags.

Επόμενο