Skip to content

Commit 834d2ed

Browse files
committed
mixedcomparison class idea
1 parent be080cc commit 834d2ed

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

package.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ default-extensions:
4646
TemplateHaskell
4747
TupleSections
4848
TypeApplications
49+
TypeFamilies
4950
NamedFieldPuns
5051

5152
library:

simplex-method.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ library
5858
hs-source-dirs:
5959
src
6060
default-extensions:
61-
DataKinds DeriveFunctor DeriveGeneric DerivingStrategies DisambiguateRecordFields DuplicateRecordFields FlexibleContexts LambdaCase OverloadedLabels OverloadedRecordDot OverloadedStrings RecordWildCards TemplateHaskell TupleSections TypeApplications NamedFieldPuns
61+
DataKinds DeriveFunctor DeriveGeneric DerivingStrategies DisambiguateRecordFields DuplicateRecordFields FlexibleContexts LambdaCase OverloadedLabels OverloadedRecordDot OverloadedStrings RecordWildCards TemplateHaskell TupleSections TypeApplications TypeFamilies NamedFieldPuns
6262
build-depends:
6363
QuickCheck
6464
, base >=4.14 && <5
@@ -86,7 +86,7 @@ test-suite simplex-method-test
8686
hs-source-dirs:
8787
test
8888
default-extensions:
89-
DataKinds DeriveFunctor DeriveGeneric DerivingStrategies DisambiguateRecordFields DuplicateRecordFields FlexibleContexts LambdaCase OverloadedLabels OverloadedRecordDot OverloadedStrings RecordWildCards TemplateHaskell TupleSections TypeApplications NamedFieldPuns
89+
DataKinds DeriveFunctor DeriveGeneric DerivingStrategies DisambiguateRecordFields DuplicateRecordFields FlexibleContexts LambdaCase OverloadedLabels OverloadedRecordDot OverloadedStrings RecordWildCards TemplateHaskell TupleSections TypeApplications TypeFamilies NamedFieldPuns
9090
build-depends:
9191
QuickCheck
9292
, base >=4.14 && <5

src/Comparison/Types.hs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,30 @@ getMixedComparisonRHS :: MixedComparison a b -> b
3232
getMixedComparisonRHS (_ :<= b) = b
3333
getMixedComparisonRHS (_ :>= b) = b
3434
getMixedComparisonRHS (_ :== b) = b
35+
36+
class MixedComparison2 c where
37+
type LhsType c :: *
38+
type RhsType c :: *
39+
40+
lhs :: c -> LhsType c
41+
rhs :: c -> RhsType c
42+
43+
(.<=) :: c -> Bool
44+
(.>=) :: c -> Bool
45+
46+
(.==) :: c -> Bool
47+
(.==) c = (.>=) c && (.<=) c
48+
49+
data IntComparison = IntComparison Int Int
50+
51+
instance MixedComparison2 IntComparison where
52+
type LhsType IntComparison = Int
53+
type RhsType IntComparison = Int
54+
55+
lhs (IntComparison l _) = l
56+
rhs (IntComparison _ r) = r
57+
58+
(.<=) (IntComparison l r) = l <= r
59+
(.>=) (IntComparison l r) = l >= r
60+
61+
(.==) (IntComparison l r) = l == r

0 commit comments

Comments
 (0)