isPerfectSquare :: (Num a, Eq a, Ord a, Enum a) => a -> Bool
isPerfectSquare x = if x == (sumUntil (>= x) [1,3..])
                    then True
                    else False
isPerfectSquare :: (Num a, Eq a, Ord a, Enum a) => a -> Bool
isPerfectSquare x = if x == (sumUntil (>= x) [1,3..])
                    then True
                    else False
isPerfectSquare x = if x == (sumUntil (>= x) [1,3..])
                    then True
                    else False