Tại sao cần “𝚞𝚜𝚎 𝚜𝚝𝚎𝚙”? Có người đã chỉ ra rằng các bước trong một quy trình làm việc giống như “điểm kiểm tra” trong một trò chơi video. Một phép ẩn dụ hay. Một hệ quả thú vị của việc đánh dấu một hàm là “𝚞𝚜𝚎 𝚠𝚘𝚛𝚔𝚏𝚕𝚘𝚠” là bạn không được phép thực hiện I/O ngoài các bước. Các quy trình làm việc cần phải không có tác dụng phụ và có tính xác định. Mỗi lần bạn 𝚊𝚠𝚊𝚒𝚝 thì hàm đó phải là một bước. Các cuộc gọi hàm này có thể được coi là các tiếp diễn có thể tuần tự hóa. Các đầu vào và đầu ra của các hàm này được ghi vào một nhật ký. Hãy nghĩ đến JSON. Nếu bạn có một quy trình làm việc với 3 bước và bước cuối cùng thất bại, chúng ta phải có khả năng “chạy lại” toàn bộ hàm và nắm rõ trạng thái của thế giới. Theo cách này, “𝚞𝚜𝚎 𝚜𝚝𝚎𝚙” thực sự rất giống với “𝚞𝚜𝚎 𝚌𝚊𝚌𝚑𝚎” hoặc “𝚐𝚎𝚝𝚂𝚝𝚊𝚝𝚒𝚌𝙿𝚛𝚘𝚙𝚜” — các hàm có thể được ngoại suy và cô lập trong không gian và thời gian, chạy trên các “máy tính” khác nhau.