yukigo-haskell-parser 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.mocharc.json +3 -3
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +10 -10
  4. package/dist/index.d.ts +13 -2
  5. package/dist/index.js +112 -32
  6. package/dist/index.js.map +1 -1
  7. package/dist/parser/grammar.js +220 -231
  8. package/dist/parser/grammar.js.map +1 -1
  9. package/dist/parser/lexer.d.ts +70 -15
  10. package/dist/parser/lexer.js +259 -50
  11. package/dist/parser/lexer.js.map +1 -1
  12. package/dist/prelude.d.ts +1 -1
  13. package/dist/prelude.js +280 -204
  14. package/dist/prelude.js.map +1 -1
  15. package/dist/typechecker/DeclarationCollector.d.ts +6 -1
  16. package/dist/typechecker/DeclarationCollector.js +39 -0
  17. package/dist/typechecker/DeclarationCollector.js.map +1 -1
  18. package/dist/typechecker/TypeBuilder.d.ts +1 -1
  19. package/dist/typechecker/TypeBuilder.js +6 -2
  20. package/dist/typechecker/TypeBuilder.js.map +1 -1
  21. package/dist/typechecker/checker.d.ts +15 -4
  22. package/dist/typechecker/checker.js +108 -25
  23. package/dist/typechecker/checker.js.map +1 -1
  24. package/dist/typechecker/core.d.ts +4 -0
  25. package/dist/typechecker/core.js +45 -19
  26. package/dist/typechecker/core.js.map +1 -1
  27. package/dist/typechecker/inference.d.ts +5 -1
  28. package/dist/typechecker/inference.js +95 -21
  29. package/dist/typechecker/inference.js.map +1 -1
  30. package/dist/utils/helpers.d.ts +1 -1
  31. package/dist/utils/helpers.js +1 -1
  32. package/dist/utils/helpers.js.map +1 -1
  33. package/dist/utils/types.d.ts +1 -1
  34. package/dist/utils/types.js +7 -0
  35. package/dist/utils/types.js.map +1 -1
  36. package/package.json +3 -3
  37. package/src/index.ts +192 -55
  38. package/src/parser/grammar.ne +519 -463
  39. package/src/parser/grammar.ts +230 -239
  40. package/src/parser/lexer.ts +353 -77
  41. package/src/prelude.ts +282 -206
  42. package/src/typechecker/DeclarationCollector.ts +157 -104
  43. package/src/typechecker/TypeBuilder.ts +150 -148
  44. package/src/typechecker/checker.ts +501 -395
  45. package/src/typechecker/core.ts +192 -162
  46. package/src/typechecker/inference.ts +1421 -1327
  47. package/src/utils/helpers.ts +29 -29
  48. package/src/utils/types.ts +63 -56
  49. package/tests/hspec.spec.ts +92 -0
  50. package/tests/lexer.spec.ts +175 -0
  51. package/tests/parser.spec.ts +829 -823
  52. package/tests/prelude.spec.ts +17 -22
  53. package/tests/typechecker.spec.ts +327 -310
  54. package/tsconfig.json +26 -17
  55. package/tsconfig.tsbuildinfo +1 -0
  56. package/dist/parser/layoutPreprocessor.d.ts +0 -1
  57. package/dist/parser/layoutPreprocessor.js +0 -22
  58. package/dist/parser/layoutPreprocessor.js.map +0 -1
  59. package/dist/parser/preprocessor.d.ts +0 -28
  60. package/dist/parser/preprocessor.js +0 -453
  61. package/dist/parser/preprocessor.js.map +0 -1
  62. package/src/parser/layoutPreprocessor.ts +0 -21
  63. package/src/parser/preprocessor.ne +0 -375
  64. package/src/parser/preprocessor.ts +0 -502
  65. package/tests/preprocessor.spec.ts +0 -69
package/dist/prelude.js CHANGED
@@ -1,205 +1,281 @@
1
- export const preludeCode = `data Ordering = LT | EQ | GT
2
- data Maybe a = Nothing | Just a
3
- (,) :: a -> b -> (a, b)
4
- (,) x y = (x, y)
5
- ($) :: (a -> b) -> a -> b
6
- ($) f x = f x
7
- (.) :: (b -> c) -> (a -> b) -> a -> c
8
- (.) f g a = (\\x -> f (g x)) a
9
- (:) :: a -> [a] -> [a]
10
- (:) x xs = x : xs
11
- (++) :: [a] -> [a] -> [a]
12
- (++) [] ys = ys
13
- (++) (x:xs) ys = x : (xs ++ ys)
14
- (&&) :: (Eq a) => a -> a -> Boolean
15
- (||) :: (Eq a) => a -> a -> Boolean
16
- (&&) x y = x && y
17
- (||) x y = x || y
18
- (==) :: (Ord a) => a -> a -> Boolean
19
- (/=) :: (Ord a) => a -> a -> Boolean
20
- (<) :: (Ord a) => a -> a -> Boolean
21
- (>) :: (Ord a) => a -> a -> Boolean
22
- (<=) :: (Ord a) => a -> a -> Boolean
23
- (>=) :: (Ord a) => a -> a -> Boolean
24
- (==) x y = x == y
25
- (/=) x y = x /= y
26
- (<) x y = x < y
27
- (>) x y = x > y
28
- (<=) x y = x <= y
29
- (>=) x y = x >= y
30
- (+) :: Num a => a -> a -> a
31
- (-) :: Num a => a -> a -> a
32
- (+) x y = x + y
33
- (-) x y = x - y
34
- (**) :: (Floating a) => a -> a -> a
35
- (**) x y = x ** y
36
- (^) :: (Num a, Integral b) => a -> b -> a
37
- (^) x y = x ^ y
38
- (^^) :: (Fractional a, Integral b) => a -> b -> a
39
- (^^) x y = x ^^ y
40
- (*) :: (Num a) => a -> a -> a
41
- (*) x y = x * y
42
- (/) :: Fractional a => a -> a -> a
43
- (/) _ 0 = error "Prelude./: divide by zero"
44
- (/) x y = x / y
45
- (!!) :: [a] -> Int -> a
46
- (!!) xs n | n < 0 = error "Prelude.!!: negative index"
47
- (!!) [] _ = error "Prelude.!!: index too large"
48
- (!!) (x:_) 0 = x
49
- (!!) (_:xs) n = xs !! (n - 1)
50
- not :: Bool -> Bool
51
- not True = False
52
- not False = True
53
- quot :: Integral a => a -> a -> a
54
- quot _ 0 = error "divide by zero"
55
- quot 0 _ = 0
56
- quot a b = let { absA = abs a; absB = abs b; result = quotPositive absA absB } in if (a < 0) == (b < 0) then result else -result
57
- rem :: Integral a => a -> a -> a
58
- rem _ 0 = error "divide by zero"
59
- rem 0 _ = 0
60
- rem a b = let { absA = abs a; absB = abs b; remainder = remPositive absA absB } in if a < 0 then -remainder else remainder
61
- quotPositive :: Integral a => a -> a -> a
62
- quotPositive n d | n < d = 0 | otherwise = 1 + quotPositive (n - d) d
63
- remPositive :: Integral a => a -> a -> a
64
- remPositive n d | n < d = n | otherwise = remPositive (n - d) d
65
- div :: Integral a => a -> a -> a
66
- div _ 0 = error "divide by zero"
67
- div 0 _ = 0
68
- div a b = let { q = quot a b; r = rem a b } in if r == 0 || (a < 0) == (b < 0) then q else q - 1
69
- mod :: Integral a => a -> a -> a
70
- mod _ 0 = error "divide by zero"
71
- mod 0 _ = 0
72
- mod a b = a - (div a b) * b
73
- signum :: (Num a) => a -> a
74
- signum x | x == 0 = 0 | x > 0 = 1 | otherwise = -1
75
- abs :: (Num a) => a -> a
76
- abs n = if n < 0 then -n else n
77
- sqrt :: (Num a) => a -> a
78
- sqrt x = x ** 0.5
79
- max :: a -> a -> a
80
- max x y = if x <= y then y else x
81
- min :: a -> a -> a
82
- min x y = if x <= y then x else y
83
- even :: (Integral a) => a -> Bool
84
- odd :: (Integral a) => a -> Bool
85
- even n = n \`rem\` 2 == 0
86
- odd n = (not . even) n
87
- length :: [a] -> Int
88
- length [] = 0
89
- length (_:l) = 1 + length l
90
- genericLength :: (Integral a) => [b] -> a
91
- genericLength [] = 0
92
- genericLength (x:xs) = 1 + genericLength xs
93
- null :: [a] -> Bool
94
- null [] = True
95
- null (_:_) = False
96
- union :: (Eq a) => [a] -> [a] -> [a]
97
- union xs ys = unionBy (==) xs ys
98
- deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
99
- deleteBy eq x [] = []
100
- deleteBy eq x (y:ys) = if x \`eq\` y then ys else y : deleteBy eq x ys
101
- deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
102
- deleteFirstsBy eq xs ys = foldl (flip (deleteBy eq)) xs ys
103
- nubBy :: (a -> a -> Bool) -> [a] -> [a]
104
- nubBy eq [] = []
105
- nubBy eq (x:xs) = x : nubBy eq (filter (\\y -> not (eq x y)) xs)
106
- unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
107
- unionBy eq xs ys = xs ++ deleteFirstsBy eq (nubBy eq ys) xs
108
- intersect :: (Eq a) => [a] -> [a] -> [a]
109
- intersect xs ys = intersectBy (==) xs ys
110
- intersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
111
- intersectBy eq xs ys = [x | x <- xs, any (eq x) ys]
112
- elem :: (Eq a) => a -> [a] -> Bool
113
- notElem :: (Eq a) => a -> [a] -> Bool
114
- elem x xs = any (\\y -> y == x) xs
115
- notElem x xs = all (\\y -> y /= x) xs
116
- maximum :: (Ord a) => [a] -> a
117
- minimum :: (Ord a) => [a] -> a
118
- maximum [] = error "Prelude.maximum: empty list"
119
- maximum xs = foldl1 max xs
120
- minimum [] = error "Prelude.minimum: empty list"
121
- minimum xs = foldl1 min xs
122
- sum :: (Num a) => [a] -> a
123
- product :: (Num a) => [a] -> a
124
- sum xs = foldl (+) 0 xs
125
- product xs = foldl (*) 1 xs
126
- concat :: [[a]] -> [a]
127
- concat xss = foldr (++) [] xss
128
- concatMap :: (a -> [b]) -> [a] -> [b]
129
- concatMap f xs = (concat . map) f xs
130
- take :: Int -> [a] -> [a]
131
- take n _ | n <= 0 = []
132
- take _ [] = []
133
- take n (x:xs) = x : take (n - 1) xs
134
- drop :: Int -> [a] -> [a]
135
- drop n xs | n <= 0 = xs
136
- drop _ [] = []
137
- drop n (_:xs) = drop (n - 1) xs
138
- head :: [a] -> a
139
- head (x:_) = x
140
- head [] = error "Prelude.head: empty list"
141
- tail :: [a] -> [a]
142
- tail (_:xs) = xs
143
- tail [] = error "Prelude.tail: empty list"
144
- last :: [a] -> a
145
- last [x] = x
146
- last (_:xs) = last xs
147
- last [] = error "Prelude.last: empty list"
148
- init :: [a] -> [a]
149
- init [x] = []
150
- init (x:xs) = x : init xs
151
- init [] = error "Prelude.init: empty list"
152
- zip :: [a] -> [b] -> [(a, b)]
153
- zip xs ys = zipWith (,) xs ys
154
- zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
155
- zipWith z (a:as) (b:bs) = z a b : zipWith z as bs
156
- zipWith _ _ _ = []
157
- reverse :: [a] -> [a]
158
- reverse xs = foldl (flip (:)) [] xs
159
- filter :: (a -> Bool) -> [a] -> [a]
160
- filter p [] = []
161
- filter p (x:xs) | p x = x : filter p xs | otherwise = filter p xs
162
- map :: (a -> b) -> [a] -> [b]
163
- map f [] = []
164
- map f (x:xs) = f x : map f xs
165
- any :: (a -> Bool) -> [a] -> Bool
166
- all :: (a -> Bool) -> [a] -> Bool
167
- any f (x:xs) = f x || any f xs
168
- all f (x:xs) = f x && all f xs
169
- foldl :: (a -> b -> a) -> a -> [b] -> a
170
- foldl f z [] = z
171
- foldl f z (x:xs) = foldl f (f z x) xs
172
- foldl1 :: (a -> a -> a) -> [a] -> a
173
- foldl1 f (x:xs) = foldl f x xs
174
- foldl1 _ [] = error "Prelude.foldl1: empty list"
175
- foldr :: (a -> b -> b) -> b -> [a] -> b
176
- foldr f z [] = z
177
- foldr f z (x:xs) = f x (foldr f z xs)
178
- foldr1 :: (a -> a -> a) -> [a] -> a
179
- foldr1 f [x] = x
180
- foldr1 f (x:xs) = f x (foldr1 f xs)
181
- foldr1 _ [] = error "Prelude.foldr1: empty list"
182
- find :: Ord a => (a -> Bool) -> [a] -> Maybe a
183
- find _ [] = Nothing
184
- find f (x:xs) | f x = Just x | otherwise = find f xs
185
- sort :: (Ord a) => [a] -> [a]
186
- sort xs = sortBy compare xs
187
- sortBy :: (a -> a -> Ordering) -> [a] -> [a]
188
- sortBy cmp xs = foldr (insertBy cmp) [] xs
189
- compare :: a -> a -> Ordering
190
- compare x y | x == y = EQ | x <= y = LT | otherwise = GT
191
- insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]
192
- insertBy cmp x [] = [x]
193
- insertBy cmp x ys@(y:ys') = case cmp x y of { GT -> y : insertBy cmp x ys'; _ -> x : ys }
194
- flip :: (a -> b -> c) -> b -> a -> c
195
- flip f x y = f y x
196
- repeat :: a -> [a]
197
- repeat x = x : (repeat x)
198
- iterate :: (a -> a) -> a -> [a]
199
- iterate f x = x : iterate f (f x)
200
- replicate :: Int -> a -> [a]
201
- replicate n x = take n (repeat x)
202
- cycle :: [a] -> [a]
203
- cycle [] = error "Prelude.cycle: empty list"
204
- cycle xs = xs ++ (cycle xs)`;
1
+ export const preludeCode = `data Ordering = LT | EQ | GT
2
+ data Maybe a = Nothing | Just a
3
+ id :: a -> a
4
+ id x = x
5
+ const :: a -> b -> a
6
+ const x _ = x
7
+ (,) :: a -> b -> (a, b)
8
+ (,) x y = (x, y)
9
+ ($) :: (a -> b) -> a -> b
10
+ ($) f x = f x
11
+ ($!) :: (a -> b) -> a -> b
12
+ ($!) f x = f x
13
+ (.) :: (b -> c) -> (a -> b) -> a -> c
14
+ (.) f g a = (\\x -> f (g x)) a
15
+ (:) :: a -> [a] -> [a]
16
+ (:) x xs = x : xs
17
+ (++) :: [a] -> [a] -> [a]
18
+ (++) [] ys = ys
19
+ (++) (x:xs) ys = x : (xs ++ ys)
20
+ (&&) :: Bool -> Bool -> Bool
21
+ (||) :: Bool -> Bool -> Bool
22
+ (&&) x y = x && y
23
+ (||) x y = x || y
24
+ (==) :: (Ord a) => a -> a -> Boolean
25
+ (==) x y = x == y
26
+ (/=) :: (Ord a) => a -> a -> Boolean
27
+ (/=) x y = x /= y
28
+ (<) :: (Ord a) => a -> a -> Boolean
29
+ (<) x y = x < y
30
+ (>) :: (Ord a) => a -> a -> Boolean
31
+ (>) x y = x > y
32
+ (<=) :: (Ord a) => a -> a -> Boolean
33
+ (<=) x y = x <= y
34
+ (>=) :: (Ord a) => a -> a -> Boolean
35
+ (>=) x y = x >= y
36
+ (+) :: Num a => a -> a -> a
37
+ (-) :: Num a => a -> a -> a
38
+ (+) x y = x + y
39
+ (-) x y = x - y
40
+ (**) :: (Floating a) => a -> a -> a
41
+ (**) x y = x ** y
42
+ (^) :: (Num a, Integral b) => a -> b -> a
43
+ (^) x y = x ^ y
44
+ (^^) :: (Fractional a, Integral b) => a -> b -> a
45
+ (^^) x y = x ^^ y
46
+ (*) :: (Num a) => a -> a -> a
47
+ (*) x y = x * y
48
+ (/) :: Fractional a => a -> a -> a
49
+ (/) _ 0 = error "Prelude./: divide by zero"
50
+ (/) x y = x / y
51
+ (!!) :: [a] -> Int -> a
52
+ (!!) xs n | n < 0 = error "Prelude.!!: negative index"
53
+ (!!) [] _ = error "Prelude.!!: index too large"
54
+ (!!) (x:_) 0 = x
55
+ (!!) (_:xs) n = xs !! (n - 1)
56
+ not :: Bool -> Bool
57
+ not True = False
58
+ not False = True
59
+ quot :: Integral a => a -> a -> a
60
+ quot _ 0 = error "divide by zero"
61
+ quot 0 _ = 0
62
+ quot a b = let { absA = abs a; absB = abs b; result = quotPositive absA absB } in if (a < 0) == (b < 0) then result else -result
63
+ rem :: Integral a => a -> a -> a
64
+ rem _ 0 = error "divide by zero"
65
+ rem 0 _ = 0
66
+ rem a b = let { absA = abs a; absB = abs b; remainder = remPositive absA absB } in if a < 0 then -remainder else remainder
67
+ quotPositive :: Integral a => a -> a -> a
68
+ quotPositive n d | n < d = 0 | otherwise = 1 + quotPositive (n - d) d
69
+ remPositive :: Integral a => a -> a -> a
70
+ remPositive n d | n < d = n | otherwise = remPositive (n - d) d
71
+ div :: Integral a => a -> a -> a
72
+ div _ 0 = error "divide by zero"
73
+ div 0 _ = 0
74
+ div a b = let { q = quot a b; r = rem a b } in if r == 0 || (a < 0) == (b < 0) then q else q - 1
75
+ mod :: Integral a => a -> a -> a
76
+ mod _ 0 = error "divide by zero"
77
+ mod 0 _ = 0
78
+ mod a b = a - (div a b) * b
79
+ signum :: (Num a) => a -> a
80
+ signum x | x == 0 = 0 | x > 0 = 1 | otherwise = -1
81
+ abs :: (Num a) => a -> a
82
+ abs n = if n < 0 then -n else n
83
+ succ :: (Num a) => a -> a
84
+ succ x = x + 1
85
+ pred :: (Num a) => a -> a
86
+ pred x = x - 1
87
+ sqrt :: (Num a) => a -> a
88
+ sqrt x = x ** 0.5
89
+ max :: Ord a => a -> a -> a
90
+ max x y = if x <= y then y else x
91
+ min :: Ord a => a -> a -> a
92
+ min x y = if x <= y then x else y
93
+ even :: (Integral a) => a -> Bool
94
+ odd :: (Integral a) => a -> Bool
95
+ even n = n \`rem\` 2 == 0
96
+ odd n = (not . even) n
97
+ length :: [a] -> Int
98
+ length [] = 0
99
+ length (_:l) = 1 + length l
100
+ genericLength :: (Integral a) => [b] -> a
101
+ genericLength [] = 0
102
+ genericLength (x:xs) = 1 + genericLength xs
103
+ null :: [a] -> Bool
104
+ null [] = True
105
+ null (_:_) = False
106
+ union :: (Eq a) => [a] -> [a] -> [a]
107
+ union xs ys = unionBy (==) xs ys
108
+ deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]
109
+ deleteBy eq x [] = []
110
+ deleteBy eq x (y:ys) = if x \`eq\` y then ys else y : deleteBy eq x ys
111
+ deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
112
+ deleteFirstsBy eq xs ys = foldl (flip (deleteBy eq)) xs ys
113
+ nubBy :: (a -> a -> Bool) -> [a] -> [a]
114
+ nubBy eq [] = []
115
+ nubBy eq (x:xs) = x : nubBy eq (filter (\\y -> not (eq x y)) xs)
116
+ unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
117
+ unionBy eq xs ys = xs ++ deleteFirstsBy eq (nubBy eq ys) xs
118
+ intersect :: (Eq a) => [a] -> [a] -> [a]
119
+ intersect xs ys = intersectBy (==) xs ys
120
+ intersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]
121
+ intersectBy eq xs ys = [x | x <- xs, any (eq x) ys]
122
+ elem :: (Eq a) => a -> [a] -> Bool
123
+ notElem :: (Eq a) => a -> [a] -> Bool
124
+ elem x xs = any (\\y -> y == x) xs
125
+ notElem x xs = all (\\y -> y /= x) xs
126
+ maximum :: (Ord a) => [a] -> a
127
+ minimum :: (Ord a) => [a] -> a
128
+ maximum [] = error "Prelude.maximum: empty list"
129
+ maximum xs = foldl1 max xs
130
+ minimum [] = error "Prelude.minimum: empty list"
131
+ minimum xs = foldl1 min xs
132
+ sum :: (Num a) => [a] -> a
133
+ product :: (Num a) => [a] -> a
134
+ sum xs = foldl (+) 0 xs
135
+ product xs = foldl (*) 1 xs
136
+ concat :: [[a]] -> [a]
137
+ concat xss = foldr (++) [] xss
138
+ concatMap :: (a -> [b]) -> [a] -> [b]
139
+ concatMap f xs = (concat . map) f xs
140
+ take :: Int -> [a] -> [a]
141
+ take n _ | n <= 0 = []
142
+ take _ [] = []
143
+ take n (x:xs) = x : take (n - 1) xs
144
+ drop :: Int -> [a] -> [a]
145
+ drop n xs | n <= 0 = xs
146
+ drop _ [] = []
147
+ drop n (_:xs) = drop (n - 1) xs
148
+ head :: [a] -> a
149
+ head (x:_) = x
150
+ head [] = error "Prelude.head: empty list"
151
+ tail :: [a] -> [a]
152
+ tail (_:xs) = xs
153
+ tail [] = error "Prelude.tail: empty list"
154
+ last :: [a] -> a
155
+ last [x] = x
156
+ last (_:xs) = last xs
157
+ last [] = error "Prelude.last: empty list"
158
+ init :: [a] -> [a]
159
+ init [x] = []
160
+ init (x:xs) = x : init xs
161
+ init [] = error "Prelude.init: empty list"
162
+ zip :: [a] -> [b] -> [(a, b)]
163
+ zip xs ys = zipWith (,) xs ys
164
+ zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
165
+ zipWith z (a:as) (b:bs) = z a b : zipWith z as bs
166
+ zipWith _ _ _ = []
167
+ reverse :: [a] -> [a]
168
+ reverse xs = foldl (flip (:)) [] xs
169
+ filter :: (a -> Bool) -> [a] -> [a]
170
+ filter p [] = []
171
+ filter p (x:xs) | p x = x : filter p xs | otherwise = filter p xs
172
+ map :: (a -> b) -> [a] -> [b]
173
+ map f [] = []
174
+ map f (x:xs) = f x : map f xs
175
+ any :: (a -> Bool) -> [a] -> Bool
176
+ any f [] = False
177
+ any f (x:xs) = f x || any f xs
178
+ all :: (a -> Bool) -> [a] -> Bool
179
+ all f [] = True
180
+ all f (x:xs) = f x && all f xs
181
+ foldl :: (a -> b -> a) -> a -> [b] -> a
182
+ foldl f z [] = z
183
+ foldl f z (x:xs) = foldl f (f z x) xs
184
+ foldl1 :: (a -> a -> a) -> [a] -> a
185
+ foldl1 f (x:xs) = foldl f x xs
186
+ foldl1 _ [] = error "Prelude.foldl1: empty list"
187
+ foldr :: (a -> b -> b) -> b -> [a] -> b
188
+ foldr f z [] = z
189
+ foldr f z (x:xs) = f x (foldr f z xs)
190
+ foldr1 :: (a -> a -> a) -> [a] -> a
191
+ foldr1 f [x] = x
192
+ foldr1 f (x:xs) = f x (foldr1 f xs)
193
+ foldr1 _ [] = error "Prelude.foldr1: empty list"
194
+ find :: Ord a => (a -> Bool) -> [a] -> Maybe a
195
+ find _ [] = Nothing
196
+ find f (x:xs) | f x = Just x | otherwise = find f xs
197
+ sort :: (Ord a) => [a] -> [a]
198
+ sort xs = sortBy compare xs
199
+ sortBy :: (a -> a -> Ordering) -> [a] -> [a]
200
+ sortBy cmp xs = foldr (insertBy cmp) [] xs
201
+ compare :: Ord a => a -> a -> Ordering
202
+ compare x y | x == y = EQ | x <= y = LT | otherwise = GT
203
+ insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]
204
+ insertBy cmp x [] = [x]
205
+ insertBy cmp x ys@(y:ys') = case cmp x y of { GT -> y : insertBy cmp x ys'; _ -> x : ys }
206
+ flip :: (a -> b -> c) -> b -> a -> c
207
+ flip f x y = f y x
208
+ repeat :: a -> [a]
209
+ repeat x = x : (repeat x)
210
+ iterate :: (a -> a) -> a -> [a]
211
+ iterate f x = x : iterate f (f x)
212
+ replicate :: Int -> a -> [a]
213
+ replicate n x = take n (repeat x)
214
+ cycle :: [a] -> [a]
215
+ cycle [] = error "Prelude.cycle: empty list"
216
+ cycle xs = xs ++ (cycle xs)
217
+ fst :: (a,b) -> a
218
+ fst (x,_) = x
219
+ snd :: (a,b) -> b
220
+ snd (_,y) = y
221
+ between :: Ord a => a -> a -> a -> Bool
222
+ between m n p | n >= m && n <= p = True | otherwise = False
223
+ truncate :: (Num a, Integral b) => a -> b
224
+ truncate x = quot x 1
225
+ floor :: (Num a, Integral b) => a -> b
226
+ floor x = div x 1
227
+ negate :: Num a => a -> a
228
+ negate n = 0 - n
229
+ ceiling :: (Num a, Integral b) => a -> b
230
+ ceiling x = negate (floor (negate x))
231
+ round :: (Num a, Integral b) => a -> b
232
+ round x | r < 0.5 = n | r > 0.5 = n + 1 | even n = n | otherwise = n + 1 where { n = floor x; r = x - n }
233
+ dropWhile :: (a -> Bool) -> [a] -> [a]
234
+ dropWhile _ [] = []
235
+ dropWhile p xs@(x:xs') | p x = dropWhile p xs' | otherwise = xs
236
+ break :: (a -> Bool) -> [a] -> ([a], [a])
237
+ break _ [] = ([], [])
238
+ break p (x:xs) | p x = ([], x:xs) | otherwise = (x : fst (break p xs), snd (break p xs))
239
+ words :: String -> [String]
240
+ words s = let { sTrim = dropWhile (\\c -> c == ' ') s } in if null sTrim then [] else fst (break (\\c -> c == ' ') sTrim) : words (snd (break (\\c -> c == ' ') sTrim))
241
+ intersperse :: a -> [a] -> [a]
242
+ intersperse _ [] = []
243
+ intersperse _ [x] = [x]
244
+ intersperse sep (x:xs) = x : sep : intersperse sep xs
245
+ intercalate :: [a] -> [[a]] -> [a]
246
+ intercalate xs xss = concat (intersperse xs xss)
247
+ fromIntegral :: (Integral a, Num b) => a -> b
248
+ fromIntegral x = x
249
+
250
+ anyException = ""
251
+ evaluate x = x
252
+
253
+ class Show a where
254
+ show :: a -> String
255
+
256
+ instance Show Int where
257
+ show x = primShow x
258
+
259
+ instance Show Bool where
260
+ show True = "True"
261
+ show False = "False"
262
+
263
+ instance Show Ordering where
264
+ show LT = "LT"
265
+ show EQ = "EQ"
266
+ show GT = "GT"
267
+
268
+ instance Show (Maybe a) where
269
+ show Nothing = "Nothing"
270
+ show (Just x) = "Just " ++ show x
271
+
272
+ instance Show Char where
273
+ show c = '\\'' : c : '\\'' : []
274
+
275
+ instance Show String where
276
+ show s = primShowString s
277
+
278
+ instance Show [a] where
279
+ show xs = '[' : (intercalate "," (map show xs) ++ "]")
280
+ `;
205
281
  //# sourceMappingURL=prelude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prelude.js","sourceRoot":"","sources":["../src/prelude.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA2MC,CAAA"}
1
+ {"version":3,"file":"prelude.js","sourceRoot":"","sources":["../src/prelude.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuR1B,CAAA"}
@@ -1,4 +1,4 @@
1
- import { ASTNode, Record, TypeAlias, TypeSignature, Visitor } from "@yukigo/ast";
1
+ import { ASTNode, Record, TypeAlias, TypeSignature, Visitor, TestGroup, Test, Assert, TypeClass, Instance } from "yukigo-ast";
2
2
  import { Type, TypeScheme } from "./checker.js";
3
3
  import { CoreHM } from "./core.js";
4
4
  export declare class DeclarationCollectorVisitor implements Visitor<void> {
@@ -10,6 +10,11 @@ export declare class DeclarationCollectorVisitor implements Visitor<void> {
10
10
  constructor(errors: string[], typeAliasMap: Map<string, Type>, recordMap: Map<string, Type>, signatureMap: Map<string, TypeScheme>, coreHM: CoreHM);
11
11
  visitTypeAlias(node: TypeAlias): void;
12
12
  visitRecord(node: Record): void;
13
+ visitTypeClass(node: TypeClass): void;
14
+ visitInstance(node: Instance): void;
13
15
  visitTypeSignature(node: TypeSignature): void;
16
+ visitTestGroup(node: TestGroup): void;
17
+ visitTest(node: Test): void;
18
+ visitAssert(node: Assert): void;
14
19
  visit(node: ASTNode): void;
15
20
  }
@@ -1,6 +1,8 @@
1
+ import { SimpleType, ListType, } from "yukigo-ast";
1
2
  import { functionType, } from "./checker.js";
2
3
  import { CoreHM } from "./core.js";
3
4
  import { TypeBuilder } from "./TypeBuilder.js";
5
+ import { typeMappings } from "../utils/types.js";
4
6
  const builder = new TypeBuilder(new CoreHM());
5
7
  export class DeclarationCollectorVisitor {
6
8
  errors;
@@ -57,6 +59,34 @@ export class DeclarationCollectorVisitor {
57
59
  this.signatureMap.set(cons.name.value, scheme);
58
60
  }
59
61
  }
62
+ visitTypeClass(node) {
63
+ const className = node.name.value;
64
+ if (!this.coreHM.typeClasses.has(className)) {
65
+ this.coreHM.typeClasses.set(className, []);
66
+ }
67
+ // Register method signatures
68
+ for (const sig of node.signatures) {
69
+ this.visitTypeSignature(sig);
70
+ }
71
+ }
72
+ visitInstance(node) {
73
+ const className = node.className.value;
74
+ let yukigoTypeName = "YuUnknown";
75
+ if (node.type instanceof SimpleType) {
76
+ yukigoTypeName = typeMappings[node.type.value] || node.type.value;
77
+ }
78
+ else if (node.type instanceof ListType) {
79
+ yukigoTypeName = "YuList";
80
+ }
81
+ let instances = this.coreHM.typeClasses.get(className);
82
+ if (!instances) {
83
+ instances = [];
84
+ this.coreHM.typeClasses.set(className, instances);
85
+ }
86
+ if (!instances.includes(yukigoTypeName)) {
87
+ instances.push(yukigoTypeName);
88
+ }
89
+ }
60
90
  visitTypeSignature(node) {
61
91
  const functionName = node.identifier.value;
62
92
  if (this.signatureMap.has(functionName)) {
@@ -73,6 +103,15 @@ export class DeclarationCollectorVisitor {
73
103
  constraints,
74
104
  });
75
105
  }
106
+ visitTestGroup(node) {
107
+ node.group.accept(this);
108
+ }
109
+ visitTest(node) {
110
+ node.body.accept(this);
111
+ }
112
+ visitAssert(node) {
113
+ // assertions don't contain declarations
114
+ }
76
115
  visit(node) {
77
116
  node.accept(this);
78
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeclarationCollector.js","sourceRoot":"","sources":["../../src/typechecker/DeclarationCollector.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,YAAY,GAKb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AAE9C,MAAM,OAAO,2BAA2B;IAE5B;IACA;IACA;IACA;IACA;IALV,YACU,MAAgB,EAChB,YAA+B,EAC/B,SAA4B,EAC5B,YAAqC,EACrC,MAAc;QAJd,WAAM,GAAN,MAAM,CAAU;QAChB,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,cAAS,GAAT,SAAS,CAAmB;QAC5B,iBAAY,GAAZ,YAAY,CAAyB;QACrC,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEJ,cAAc,CAAC,IAAe;QAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAClD,IACE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,EACvC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,mBAAmB,IAAI,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IACD,WAAW,CAAC,IAAY;QACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACzC,IACE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,EACpC,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,gBAAgB,IAAI,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAoB;YAClC,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,EAAE;SACT,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAEjD,oDAAoD;QACpD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;gBAClE,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,MAAM,UAAU,GAAoB;gBAClC,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;aACnD,CAAC;YAEF,MAAM,QAAQ,GAAS,UAAU,CAAC,WAAW,CAC3C,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAC7C,UAAU,CACX,CAAC;YAEF,wDAAwD;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,kBAAkB,CAAC,IAAmB;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,aAAa,YAAY,gCAAgC,CAC1D,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC9C,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE;YAClC,IAAI,EAAE,YAAY;YAClB,WAAW;YACX,IAAI,EAAE,IAAI;YACV,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,IAAa;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"DeclarationCollector.js","sourceRoot":"","sources":["../../src/typechecker/DeclarationCollector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Type as YukigoType } from "@yukigo/ast";
1
+ import { Type as YukigoType } from "yukigo-ast";
2
2
  import { CoreHM } from "./core.js";
3
3
  import { Type, TypeVar } from "./checker.js";
4
4
  export declare class TypeBuilder {