Если вам действительно нужна функция, а не метод, вы можете просто обернуть ее:
(defn pow [b e] (Math/pow b e))
И в этой функции вы можете привести ее к int
или подобному.Функции часто более полезны, чем методы, потому что вы можете передавать их как параметры другим функциям - в этом случае мне приходит в голову map
.
Если вам действительно нужно избегать взаимодействия с Java, вы можете написать свои собственные возможностифункция.Например, это простая функция:
(defn pow [n p] (let [result (apply * (take (abs p) (cycle [n])))]
(if (neg? p) (/ 1 result) result)))
, которая вычисляет мощность для целого показателя степени (т.е. без корней).
Кроме того, если вы имеете дело с large числа, вы можете использовать BigInteger
вместо int
.
И если вы имеете дело с очень большими числами, вы можете выразить их в виде списков цифр, инапишите свои собственные арифметические функции для потоковой передачи по ним, поскольку они вычисляют результат и выводят результат в некоторый другой поток.