snowdriftcoop / snowdrift

Infrastructure for Snowdrift.coop. This is a MIRROR of https://gitlab.com/snowdrift/snowdrift. Your issue reports and merge requests are welcome, but they will be moved to gitlab.com. You are encouraged to start there instead!
https://snowdrift.coop
GNU Affero General Public License v3.0
92 stars 36 forks source link

Add notes to use my branch if you use GHC 7.10 #309

Closed pharpend closed 9 years ago

wolftune commented 9 years ago

Two thoughts:

  1. I'm not sure "need" is fair. I think it's more like "prefer", no? Like, people could use Vagrant or otherwise figure out how to install 7.8, but this is for avoiding that hassle.
  2. I think we need to document what, if anything, people need to do differently if they stick to 7.10 at this time. Do they need to avoid committing certain things? Are there any other differences or issues that they should know about?
pharpend commented 9 years ago
  1. I'm not sure "need" is fair. I think it's more like "prefer", no? Like, people could use Vagrant or otherwise figure out how to install 7.8, but this is for avoiding that hassle.

I don't know about most people, but I tend to stay away from projects that require me to use some non-standard setup in order to contribute. It's why I shy away from all of this Vagrant nonsense.

  1. I think we need to document what, if anything, people need to do differently if they stick to 7.10 at this time. Do they need to avoid committing certain things? Are there any other differences or issues that they should know about?

On the mailing list, @chreekat voted for moving completely over to 7.10. Since I have full 7.10 support without breaking backward compatibility, I imagine @chreekat will just merge my branch. (There's an open pull request to do this).

The only real difference is that Applicative(..) and Monoid(..) have been moved over to the Prelude. So you no longer have to import Control.Applicative to get mappend, mconcat, or mempty. Likewise you get (<$>) and (<*>) as well. (Although those were already in the Prelude in the form of fmap and ap, respectively).

However, if you want to maintain backward compatibility with 7.8, if you use any of the monoid functions or applicative operators, you have to add something like this to the top of the file:

#if !(MIN_VERSION_base(4,8,0))
import Control.Applicative
import Data.Monoid
#endif

Note that Alternative(..) and (<>) still require the import of Control.Applicative and Data.Monoid, respectively.

wolftune commented 9 years ago

Re: "need", there's never been a requirement to run Vagrant but there's never a requirement not to run Vagrant. My point was the difference between "those who need 7.10" vs "those who prefer 7.10" since the former is not really accurate since Vagrant is an option at least. Or Halcyon for that matter.

But nevermind! I'm all for moving to 7.10. as the main thing, sounds great

chreekat commented 9 years ago

So, pending the 7.10-as-default discussion, I'm gonna leave this PR hangin' for a bit. :)