@@ -56,7 +56,7 @@ module Constrained.NumOrd (
5656import Constrained.AbstractSyntax
5757import Constrained.Base
5858import Constrained.Conformance
59- import Constrained.Core (Value (.. ), unionWithMaybe )
59+ import Constrained.Core (Value (.. ), unionWithMaybe , nubOrd )
6060import Constrained.FunctionSymbol
6161import Constrained.GenT
6262import Constrained.Generic
@@ -362,17 +362,6 @@ conformsToNumSpec i (NumSpecInterval ml mu) = maybe True (<= i) ml && maybe True
362362-- implementations are found here
363363-- =====================================================================
364364
365- -- | Strip out duplicates (in n-log(n) time, by building an intermediate Set)
366- nubOrd :: Ord a => [a ] -> [a ]
367- nubOrd =
368- loop mempty
369- where
370- loop _ [] = []
371- loop s (a : as)
372- | a `Set.member` s = loop s as
373- | otherwise =
374- let s' = Set. insert a s in s' `seq` a : loop s' as
375-
376365-- | Builds a MemberSpec, but returns an Error spec if the list is empty
377366nubOrdMemberSpec :: Ord a => String -> [a ] -> Specification a
378367nubOrdMemberSpec message xs =
@@ -936,7 +925,7 @@ instance Logic IntW where
936925
937926 propagateMemberSpec AddW (HOLE :<: i) es =
938927 memberSpec
939- (nub $ mapMaybe (safeSubtract i) (NE. toList es))
928+ (nubOrd $ mapMaybe (safeSubtract i) (NE. toList es))
940929 ( NE. fromList
941930 [ " propagateSpecFn on (" ++ show i ++ " +. HOLE)"
942931 , " The Spec is a MemberSpec = " ++ show es -- show (MemberSpec @HasSpec @TS es)
0 commit comments