Skip to content

Commit a5797c4

Browse files
committed
update: implement sized elements
1 parent 0223834 commit a5797c4

File tree

6 files changed

+169
-137
lines changed

6 files changed

+169
-137
lines changed

lambda-buffers-compiler/lambda-buffers-compiler.cabal

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ common common-language
3737
DeriveLift
3838
DeriveTraversable
3939
DerivingStrategies
40+
DerivingVia
4041
DoAndIfThenElse
4142
DuplicateRecordFields
4243
EmptyCase
@@ -94,6 +95,7 @@ library
9495
build-depends:
9596
, containers >=0.6.5.1
9697
, freer-simple >=1.2
98+
, generic-arbitrary
9799
, generic-lens >=2.2
98100
, lambda-buffers-compiler-pb >=0.1.0.0
99101
, mtl >=2.2
@@ -116,6 +118,7 @@ library
116118
LambdaBuffers.Compiler.ProtoCompat
117119
LambdaBuffers.Compiler.ProtoCompat.Types
118120
LambdaBuffers.Compiler.TypeClassCheck
121+
Orphan.Text
119122

120123
hs-source-dirs: src
121124

@@ -145,8 +148,10 @@ test-suite tests
145148
, lambda-buffers-compiler
146149
, lambda-buffers-compiler-pb >=0.1
147150
, proto-lens >=0.7
151+
, QuickCheck >=2.14
148152
, tasty >=1.4
149153
, tasty-hunit >=0.10
154+
, tasty-quickcheck >=0.10
150155
, text >=1.2
151156

152157
other-modules:

lambda-buffers-compiler/src/LambdaBuffers/Compiler/KindCheck/Type.hs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module LambdaBuffers.Compiler.KindCheck.Type (Type (Var, Abs, App)) where
22

33
import LambdaBuffers.Compiler.KindCheck.Variable (Var)
44
import Prettyprinter (Doc, Pretty (pretty), parens, (<+>))
5+
import Test.QuickCheck (Arbitrary, arbitrary, oneof, sized)
56

67
data Type
78
= Var Var
@@ -20,3 +21,15 @@ instance Pretty Type where
2021
Var a -> pretty a
2122
App t1 t2 -> parens $ show' t1 <+> show' t2
2223
Abs a t1 -> parens $ "λ" <> pretty a <> "." <> show' t1
24+
25+
instance Arbitrary Type where
26+
arbitrary = sized f
27+
where
28+
f n
29+
| n <= 0 = Var <$> arbitrary
30+
| otherwise =
31+
oneof
32+
[ Var <$> arbitrary
33+
, App <$> f (n `div` 2) <*> f (n `div` 2)
34+
, Abs <$> arbitrary <*> f (n - 1)
35+
]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module LambdaBuffers.Compiler.KindCheck.Variable (Atom, Var) where
22

33
import Data.Text (Text)
4+
import Orphan.Text
45

56
type Atom = Text
67
type Var = Text

0 commit comments

Comments
 (0)