Мне нужна простая функция
is_square :: Int -> Bool
который определяет, является ли Int N совершенным квадратом (существует целое число x такое, что x * x = N).
Конечно, я могу просто написать что-то вроде
is_square n = sq * sq == n
where sq = floor $ sqrt $ (fromIntegral n::Double)
но это выглядит ужасно! Может быть, существует простой простой способ реализовать такой предикат?