--- Optimization ---

redundantCall_O :: QProg -> QProg
redundantCall_O (viewl -> (QQuote (viewl -> EmptyL) b) :< (viewl -> (QFunc "call") :< rest)) = b >< (redundantCall_O rest)
redundantCall_O :: QProg -> QProg
redundantCall_O (viewl -> (QQuote (viewl -> EmptyL) b) :< (viewl -> (QFunc "call") :< rest)) = b >< (redundantCall_O rest)
redundantCall_O (viewl -> (QQuote (viewl -> EmptyL) b) :< (viewl -> (QFunc "call") :< rest)) = b >< (redundantCall_O rest)