У меня есть следующий алгоритм, который я написал в модуле Julia
module two_algo
export two
function two(type)
a = construct(type)
b = construct(type)
result = construct(type)
unity(a)
unity(b)
add(a,b,result)
return result
end
end
Когда-то у меня был этот алгоритм, определенный вне модуля, и он компилировался и мог отправлять в любой тип, который определял методы конструкции, единства и добавления. Но внутри модуля он не компилируется. Он не знает, как найти конструкцию, единство и сложение. Я не хочу импортировать их из какого-то конкретного модуля, потому что у меня может быть много модулей, каждый из которых, например, определяет конструкцию, единство и добавление. Что мне нужно сделать, чтобы это скомпилировалось? Помню, как в старые времена, когда я работал с C / C ++, я делал что-то столь же простое, как объявление конструкции extern; внутри модуля. Я действительно надеюсь, что смогу оставить функцию two (), чтобы она принимала один тип, а не передавала функции, которые реализуют конструкцию, единство и добавление. В идеале я бы также хотел избежать дженериков. Спасибо за любые указатели.
Чтобы увидеть небольшой пример кода до того, как я попытался разбить его на модули, см .: github.com/bdezonia / jzorb / tree / master / src — person Barry schedule 18.01.2021
Это небольшая модификация ответа Франсуа, которая решила мою проблему. Я все еще принимаю его ответ, потому что он сделал львиную долю открытий и работы.