weedField :: Field -> WeedError
weedField (FLD modifiers var val info)
  | (nub modifiers) /= modifiers = Just $ "Field modifiers cannot be repeated" ++ show info
  | "private" `elem` modifiers = Just $ "Class fields cannot be private" ++ show info
  | not (any (`elem` modifiers) ["public", "protected"]) = Just $ "Class field must have access modifier" ++ show info
  | "final" `elem` modifiers && isNothing val = Just $ "Final fields must have values" ++ show info
  | otherwise = Nothing
weedField :: Field -> WeedError
weedField (FLD modifiers var val info)
  | (nub modifiers) /= modifiers = Just $ "Field modifiers cannot be repeated" ++ show info
  | "private" `elem` modifiers = Just $ "Class fields cannot be private" ++ show info
  | not (any (`elem` modifiers) ["public", "protected"]) = Just $ "Class field must have access modifier" ++ show info
  | "final" `elem` modifiers && isNothing val = Just $ "Final fields must have values" ++ show info
  | otherwise = Nothing
weedField (FLD modifiers var val info)
  | (nub modifiers) /= modifiers = Just $ "Field modifiers cannot be repeated" ++ show info
  | "private" `elem` modifiers = Just $ "Class fields cannot be private" ++ show info
  | not (any (`elem` modifiers) ["public", "protected"]) = Just $ "Class field must have access modifier" ++ show info
  | "final" `elem` modifiers && isNothing val = Just $ "Final fields must have values" ++ show info
  | otherwise = Nothing