weedConstructor :: Constructor -> WeedError
weedConstructor (Cons modifiers name params invocation definition info)
  | isJust definitionError = definitionError
  | isJust invocationError = invocationError
  | otherwise = Nothing
  where definitionError = weedStatementBlock definition
        invocationError = if isJust invocation then weedExpression $ fromJust invocation else Nothing
weedConstructor :: Constructor -> WeedError
weedConstructor (Cons modifiers name params invocation definition info)
  | isJust definitionError = definitionError
  | isJust invocationError = invocationError
  | otherwise = Nothing
  where definitionError = weedStatementBlock definition
        invocationError = if isJust invocation then weedExpression $ fromJust invocation else Nothing
weedConstructor (Cons modifiers name params invocation definition info)
  | isJust definitionError = definitionError
  | isJust invocationError = invocationError
  | otherwise = Nothing
  where definitionError = weedStatementBlock definition
        invocationError = if isJust invocation then weedExpression $ fromJust invocation else Nothing