package attl // Flow deterimes how the flow of execution is // affected by a command type Flow int // No effect const NormalFlow Flow = 0 // Breaks out of the current block const BreakFlow Flow = 1 // Breaks out of the current command const ReturnFlow Flow = 2 // Error, breaks until rescue block is ofound const FailFlow Flow = 4 // Every attl command evaluates to a value, which is the result // of the command itself, but also an Effect that describes // it's special effect on the flow of evaluation itself. // A nil effect simply means "continue to the next command" // But other effects may cause the flow of execution to change // as per the Flow member // The unwrap member returns the Value that // the effect was carrying wrapped in it // and which is unwrapped when the effect has influenced the flow. type Effect interface { Flow() Flow Unwrap() Value }