The reason GHC won't infer the definition of Applicative is because there can be multiple valid `Applicative` instances for a type (unlike `Functor` where there is a unique (non-trivial) instance).
The canonical example of this is lists, with 2 valid instances of `Applicative`.
The author of the post seems to have this realization, but I wanted to call it out, just in case.
The main difference to the work from the article is that RAMPARTS is _not_ a API wrapper. It allows the the Julia Programmer to write the function as they normally would, and then compiles it to FHE. This way the programmer can use _the same_ function for plaintext testing and development and for running under FHE.
Since the JuliaCon talk we've pushed this a bit further and actually coming to a close on the project. We learned a lot about the difficulties of making FHE invisible to the user, which was the aim of the project. We're hoping to continue this work in the future and make it even more seamless for developers.
It's a funny story, but it's also not true. You don't want pencils in space (not because they don't work, but because you don't want graphite dust everywhere).
They weren't made with the thought of being generally consumed, but I do plan on making videos for the wider CS/programming community in the future.