From 31755220d5a4b00ddf780bd6122512254cbb18f8 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 5 Aug 2015 22:36:46 +0200 Subject: Typo --- provider/posts/beuteltier-2.lhs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/posts/beuteltier-2.lhs b/provider/posts/beuteltier-2.lhs index bca4c86..c60ba71 100644 --- a/provider/posts/beuteltier-2.lhs +++ b/provider/posts/beuteltier-2.lhs @@ -113,7 +113,7 @@ Sometimes we just really want to translate an `ObjectGen` to an `Object`. > oMeta .= return (obj ^. oMeta') We expect implementations of `insert` to perform what we call nubbing. That is removal of -'Object's that are, in some sense, `Equivalent` to the new one we´re currently +`Object`s that are, in some sense, `Equivalent` to the new one we´re currently inserting. Thus we provide a definition of what we mean, when we say `Equivalent`. > class Equivalent a where -- cgit v1.2.3 From fccf1d6ddac8066f9e1698318bc5be0765b678aa Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 5 Aug 2015 22:50:03 +0200 Subject: Followed commit to beuteltier --- provider/posts/beuteltier-2.lhs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/provider/posts/beuteltier-2.lhs b/provider/posts/beuteltier-2.lhs index c60ba71..4ffd75f 100644 --- a/provider/posts/beuteltier-2.lhs +++ b/provider/posts/beuteltier-2.lhs @@ -53,6 +53,9 @@ mostly of the canonical invocations of > import Data.Map (Map) > import qualified Data.Map as Map > +> import Data.Set (Set) +> import qualified Data.Set as Set +> > import Data.Hashable (Hashable(..), hashUsing) > > import Data.Monoid ((<>)) @@ -150,6 +153,9 @@ all objects sharing a hash to determine true equivalency. > -- | Two 'Object's´ hashes are a first indication of whether they are 'Equivalent' > instance Hashable Object where > hashWithSalt = hashUsing $ \a -> (a ^. oMeta', Map.keys $ content a) +> +> instance Hashable MetaData where +> hashWithSalt = hashUsing $ Set.toList . (^. mTags) > > content :: Object -> Map SubObjectName (Maybe SubObject) > content obj = promised obj <> actual obj -- cgit v1.2.3 From 07edcf47c71cc4552a406a4f7b7d9ae1d7fe8a23 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 5 Aug 2015 22:54:02 +0200 Subject: fixed code example --- provider/posts/beuteltier-2.lhs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/provider/posts/beuteltier-2.lhs b/provider/posts/beuteltier-2.lhs index 4ffd75f..d5e0294 100644 --- a/provider/posts/beuteltier-2.lhs +++ b/provider/posts/beuteltier-2.lhs @@ -69,10 +69,10 @@ Quite often we find ourselves in the position that we want to alter some small p complicated structure. We would therefore like to write the following: ~~~ {.haskell .numberLines} -updateFoo :: Monad m => Foo -> m Foo -updateFoo = alter $ do - bar <~ constructNewBarInM - buz .= makeConstantBuz +updateFoo :: Foo -> Monad Foo +updateFoo x = alter x $ do + bar <~ (constructNewBar :: Monad Bar) + buz .= (makeConstantBuz :: Buz) ~~~ The definitions below allow us not only to do so, but also provide some convenience -- cgit v1.2.3