mikeizbicki / HLearn

Homomorphic machine learning
Other
1.62k stars 135 forks source link

Error installing HLearn-distributions-1.0.0.1 #37

Closed cumber closed 10 years ago

cumber commented 10 years ago

I attempted to install the HLearn packages using the following command:

cabal install HLearn-classification HLearn-algebra HLearn-distributions HLearn-datastructures HLearn-approximation -j

This was in a completely fresh hsenv, using ghc-7.6.3. Installation failed at HLearn-distributions 1.0.0.1, with the following message:

src/HLearn/Models/Distributions/Multivariate/Interface.hs:98:60:
`Index' is applied to too many type arguments
In the instance declaration for `Marginalize' (Nat1Box n) (Multivariate dp xs
prob)'

After a lot of messing around with various versions of the repository (I wasn't able to figure out what commit in the repository corresponds to the versions uploaded to Hackage, if there is such a commit) and encountering many many other errors, I managed to get it to compile by getting the source from Hackage, and editing src/HLearn/Models/Distributions/Multivariate/Interface.hs to uncomment the type family Index lines, and hide Index from the import of HLearn.Algebra.

mikeizbicki commented 10 years ago

Hmm... which version of HLearn-distributions are you talking about?

The latest one on hackage (1.1.0.2) has the type family Index bit uncommented and hides the import of Index from HLearn.Algebra.

(I agree that the git history is a mess and doesn't correspond well to what's on hackage. I don't think github had the "making a release" feature available at the time. lot's of people have ran into similar problems, and I've tried tracking down the right commit, but can't find it either! So sorry about that.)

cumber commented 10 years ago

Ah, yes, but the latest HLearn-classification (1.0.1.2) isn't compatible with HLearn-distributions 1.1.0.2 (according to #30 that's why HLearn-classification 1.0.1.2 exists, to depend on HLearn-distributions 1.0.0.1), so I got stuck with HLearn-distributions-1.0.0.1, which failed to compile.

It occurred to me that maybe the problem is a similarly too-new HLearn-algebra (I got 1.1.0.1), so I tried restricting HLearn-algebra to <1.1 but then I ran into conflicts with the requirements of HLearn-datastructures (which were impossible to resolve with either of the two versions on Hackage).

cumber commented 10 years ago

If uncommenting type family Index is the right fix for this version (I'm not familiar enough with the code to tell), then I think that publishing that as HLearn-distributions 1.0.0.2 (and a new version of HLearn-classification that depends on this version) would get back to being able to just "shotgun install" all the HLearn packages from Hackage without pegging versions and having everything just work.

mikeizbicki commented 10 years ago

Ahh, yes. Now I understand.

I've uploaded a new version 1.0.0.2 of HLearn-distributions with the changes you suggested.

cumber commented 10 years ago

Great, thanks! I think we also need a 1.0.1.3 of HLearn-classification with a dependency on HLearn-distribution 1.0.0.2 (or maybe >= 1.0.0.2 && < 1.1 ?); at the moment cabal install HLearn-classification HLearn-algebra HLearn-distributions HLearn-datastructures HLearn-approximation is still pulling in HLearn-distributions 1.0.0.1 and failing.

mikeizbicki commented 10 years ago

I've added the constraint and uploaded HLearn-classification. Thanks a bunch for working this out.

cumber commented 10 years ago

Thanks for the quick response!