I would retort with: Packages are too big to make into a functional dependency.
In the end, in this functions-as-dependencies world, a trig package would be something like:
(name) =>
switch (name) {
case 'sin':
(x) => sin(x);
break;
case 'cos':
(x) => cos(x);
break;
}