implementation module SmallExamples import iTasks smallExamples :: [Workflow] smallExamples = [workflow "Examples/Miscellaneous/Calculate sum" "Calculate the sum of two numbers" calculateSum ,workflow "Examples/Miscellaneous/Calculate sum (with stepback)" "Calculate the sum of two numbers, with stepback possibility" calculateSumSteps ,workflow "Examples/Miscellaneous/Calculate sum (parameterised)" "Calculate the sum of two numbers given as parameter" calculateSumParam ] calculateSum :: Task Int calculateSum = enterInformation ("Number 1","Enter a number") [] >>= \num1 -> enterInformation ("Number 2","Enter another number") [] >>= \num2 -> viewInformation ("Sum","The sum of those numbers is:") [] (num1 + num2) calculateSumSteps :: Task Int calculateSumSteps = step1First where step1First = enterInformation ("Number 1","Enter a number") [] >>* [WithResult ActionNext (const True) (\num -> step2First num)] step1Back num1 = updateInformation ("Number 1","Enter a number") [] num1 >>* [WithResult ActionNext (const True) (\num -> step2First num)] step2First num1 = enterInformation ("Number 2","Enter another number") [] >>* [AnyTime ActionPrevious (\_ -> step1Back num1) ,WithResult ActionNext (const True) (\num2 -> step3 num1 num2) ] step2Back num1 num2 = updateInformation ("Number 2","Enter another number") [] num2 >>* [AnyTime ActionPrevious (\_ -> step1Back num1) ,WithResult ActionNext (const True) (\num2` -> step3 num1 num2`) ] step3 num1 num2 = viewInformation("Sum","The sum of those numbers is:") [] (num1 + num2) >>* [AnyTime ActionPrevious (\_ -> step2Back num1 num2) ,WithResult ActionOk (const True) return ] calculateSumParam :: !(Int,Int) -> Task Int calculateSumParam (num1,num2) = viewInformation ("Sum","The sum of those numbers is:") [] (num1 + num2)