Warum ist "𝚞𝚜𝚎 𝚜𝚝𝚎𝚙" notwendig? Jemand hat darauf hingewiesen, dass Schritte in einem Workflow wie "Spawn-Checkpoints" in einem Videospiel sind. Gute Analogie. Eine interessante Konsequenz davon, eine Funktion als "𝚞𝚜𝚎 𝚠𝚘𝚛𝚔𝚏𝚕𝚘𝚠" zu kennzeichnen, ist, dass du keine I/O außer den Schritten durchführen darfst. Workflows müssen nebenwirkungsfrei und deterministisch sein. Jedes Mal, wenn du 𝚊𝚠𝚊𝚒𝚝, muss diese Funktion ein Schritt sein. Diese Funktionsaufrufe können als serialisierbare Fortsetzungen betrachtet werden. Die Eingaben und Ausgaben dieser Funktionen werden in einem Protokoll festgehalten. Denk an JSON. Wenn du einen Workflow mit 3 Schritten hast und der letzte fehlschlägt, müssen wir in der Lage sein, die gesamte Funktion "neu auszuführen" und einen perfekten Überblick über den Zustand der Welt zu haben. Auf diese Weise ist "𝚞𝚜𝚎 𝚜𝚝𝚎𝚙" tatsächlich sehr ähnlich zu "𝚞𝚜𝚎 𝚌𝚊𝚌𝚑𝚎" oder "𝚐𝚎𝚝𝚂𝚝𝚊𝚝𝚒𝚌𝙿𝚛𝚘𝚙𝚜" — Funktionen, die in Raum und Zeit externalisiert und isoliert werden können, die auf verschiedenen "Computern" laufen.