diff --git a/.gitignore b/.gitignore index 7050558..332b6cf 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /bower_components/ /node_modules/ /output/ +package-lock.json diff --git a/LICENSE b/LICENSE index d3249fe..311379c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,20 +1,26 @@ -The MIT License (MIT) +Copyright 2018 PureScript -Copyright (c) 2015 PureScript +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation and/or +other materials provided with the distribution. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +3. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/bower.json b/bower.json index aefc25b..43250f5 100644 --- a/bower.json +++ b/bower.json @@ -1,8 +1,7 @@ { "name": "purescript-effect", "homepage": "https://github.com/purescript/purescript-effect", - "description": "The Effect monad, for handling native side effects", - "license": "MIT", + "license": "BSD-3-Clause", "repository": { "type": "git", "url": "git://github.com/purescript/purescript-effect.git" @@ -17,7 +16,6 @@ "package.json" ], "dependencies": { - "purescript-prelude": "^3.0.0", - "purescript-monoid": "^3.3.0" + "purescript-prelude": "^4.0.0" } } diff --git a/package.json b/package.json index 26d81a7..02e36ea 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "build": "eslint src && pulp build -- --censor-lib --strict" }, "devDependencies": { - "eslint": "^3.17.1", - "pulp": "^10.0.4", - "purescript-psa": "^0.5.0-rc.1", - "rimraf": "^2.6.1" + "eslint": "^4.19.1", + "pulp": "^12.2.0", + "purescript-psa": "^0.6.0", + "rimraf": "^2.6.2" } } diff --git a/src/Effect.purs b/src/Effect.purs index af60bcd..95a1e58 100644 --- a/src/Effect.purs +++ b/src/Effect.purs @@ -3,15 +3,9 @@ module Effect , untilE, whileE, forE, foreachE ) where -import Control.Applicative (class Applicative, liftA1) -import Control.Apply (class Apply, lift2) -import Control.Bind (class Bind) -import Control.Monad (class Monad, ap) +import Prelude -import Data.Functor (class Functor) -import Data.Monoid (class Monoid, mempty) -import Data.Semigroup (class Semigroup, append) -import Data.Unit (Unit) +import Control.Apply (lift2) -- | The `Effect` type constructor is used to represent _native_ effects. -- | @@ -30,12 +24,6 @@ instance applyEffect :: Apply Effect where instance applicativeEffect :: Applicative Effect where pure = pureE -instance semigroupEffect :: Semigroup a => Semigroup (Effect a) where - append = lift2 append - -instance monoidEffect :: Monoid a => Monoid (Effect a) where - mempty = pureE mempty - foreign import pureE :: forall a. a -> Effect a instance bindEffect :: Bind Effect where @@ -45,6 +33,12 @@ foreign import bindE :: forall a b. Effect a -> (a -> Effect b) -> Effect b instance monadEffect :: Monad Effect +instance semigroupEffect :: Semigroup a => Semigroup (Effect a) where + append = lift2 append + +instance monoidEffect :: Monoid a => Monoid (Effect a) where + mempty = pureE mempty + -- | Loop until a condition becomes `true`. -- | -- | `untilE b` is an effectful computation which repeatedly runs the effectful diff --git a/src/Effect/Class.purs b/src/Effect/Class.purs index 3962eec..6bdbd6b 100644 --- a/src/Effect/Class.purs +++ b/src/Effect/Class.purs @@ -1,6 +1,6 @@ module Effect.Class where -import Control.Category (id) +import Control.Category (identity) import Control.Monad (class Monad) import Effect (Effect) @@ -16,4 +16,4 @@ class Monad m <= MonadEffect m where liftEffect :: forall a. Effect a -> m a instance monadEffectEffect :: MonadEffect Effect where - liftEffect = id + liftEffect = identity