on master help sign in
3 files changed+29−13
since splitsnapshots
unifiedsplit
MemoTrie.cabal+5−6 src/Data/MemoTrie.hs+17−2 stack.yaml+7−5
MemoTrie.cabal+5−6
@@ -1,5 +1,5 @@
11Name: MemoTrie
2−Version: 0.6.7
2+Version: 0.6.10
33Cabal-Version: >= 1.10
44Synopsis: Trie-based memo functions
55Category: Data
@@ -10,11 +10,11 @@ Description:
1010 .
1111 Project wiki page: <http://haskell.org/haskellwiki/MemoTrie>
1212 .
13− &#169; 2008-2016 by Conal Elliott; BSD3 license.
13+ &#199; 2008-2019 by Conal Elliott; BSD3 license.
1414Homepage: https://github.com/conal/MemoTrie
1515Author: Conal Elliott
1616Maintainer: conal@conal.net
17−Copyright: (c) 2008-2015 by Conal Elliott
17+Copyright: (c) 2008-2019 by Conal Elliott
1818License: BSD3
1919License-File: COPYING
2020Stability: experimental
@@ -33,9 +33,9 @@ Library
3333 hs-Source-Dirs: src
3434
3535 if impl(ghc >= 7.10.0)
36− Build-Depends: base >=4.8.0.0 && <5, newtype-generics >= 0.4
36+ Build-Depends: base >=4.8.0.0 && <5, newtype-generics >= 0.5.3
3737 else
38− Build-Depends: base <4.8.0.0, void, newtype-generics >= 0.4
38+ Build-Depends: base <4.8.0.0, void, newtype-generics >= 0.5.3
3939
4040 Exposed-Modules:
4141 Data.MemoTrie
@@ -48,7 +48,6 @@ executable generic
4848 buildable: False
4949 main-is: Generic.hs
5050 ghc-options: -Wall
51− default-language: Haskell2010
5251 hs-source-dirs: examples
5352 default-language: Haskell2010
5453 build-depends: base, MemoTrie
src/Data/MemoTrie.hs+17−2
@@ -9,7 +9,7 @@
99----------------------------------------------------------------------
1010-- |
1111-- Module : Data.MemoTrie
12−-- Copyright : (c) Conal Elliott 2008-2012
12+-- Copyright : (c) Conal Elliott 2008-2016
1313-- License : BSD3
1414--
1515-- Maintainer : conal@conal.net
@@ -76,7 +76,7 @@ import Data.Monoid
7676import Data.Function (on)
7777import GHC.Generics
7878
79−import Control.Newtype
79+import Control.Newtype.Generics
8080
8181import Data.Void (Void)
8282
@@ -315,6 +315,16 @@ if' _ e True = e
315315 BoolTrie f t
316316-}
317317
318+instance HasTrie a => HasTrie (Maybe a) where
319+ data (:->:) (Maybe a) b = MaybeTrie b (a :->: b)
320+ trie f = MaybeTrie (f Nothing) (trie (f . Just))
321+ untrie (MaybeTrie nothing_val a_trie) = maybe nothing_val (untrie a_trie)
322+ enumerate (MaybeTrie nothing_val a_trie) = (Nothing, nothing_val) : enum' Just a_trie
323+
324+instance Newtype (Maybe a :->: x) where
325+ type O (Maybe a :->: x) = (x, a :->: x)
326+ pack (a,f) = MaybeTrie a f
327+ unpack (MaybeTrie a f) = (a,f)
318328
319329instance (HasTrie a, HasTrie b) => HasTrie (Either a b) where
320330 data (Either a b) :->: x = EitherTrie (a :->: x) (b :->: x)
@@ -577,7 +587,12 @@ instance HasTrie a => Monad ((:->:) a) where
577587
578588instance (HasTrie a, Monoid b) => Monoid (a :->: b) where
579589 mempty = trie mempty
590+#if !MIN_VERSION_base(4,11,0)
580591 mappend = inTrie2 mappend
592+#else
593+instance (HasTrie a, Semigroup b) => Semigroup (a :->: b) where
594+ (<>) = inTrie2 (<>)
595+#endif
581596
582597instance HasTrie a => Functor ((:->:) a) where
583598 fmap f = inTrie (fmap f)
stack.yaml+7−5
@@ -1,5 +1,7 @@
1−flags: {}
2−extra-deps:
3−- MemoTrie-0.6.5
4−- newtype-generics-0.4
5−resolver: nightly-2016-07-18
1+# resolver: lts-9.21 # ghc-8.0.2
2+# resolver: lts-11.22 # ghc-8.2.2
3+# resolver: lts-12.14 # ghc-8.4.3
4+# resolver: lts-12.19 # ghc-8.4.4
5+# resolver: lts-13.0 # ghc-8.6.3
6+# resolver: lts-13.13 # ghc-8.6.4
7+resolver: lts-14.6 # ghc-8.6.5