yukigo-haskell-parser 0.1.0

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 (63) hide show
  1. package/.mocharc.json +4 -0
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +10 -0
  4. package/dist/index.d.ts +7 -0
  5. package/dist/index.js +54 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/parser/grammar.d.ts +28 -0
  8. package/dist/parser/grammar.js +404 -0
  9. package/dist/parser/grammar.js.map +1 -0
  10. package/dist/parser/layoutPreprocessor.d.ts +1 -0
  11. package/dist/parser/layoutPreprocessor.js +22 -0
  12. package/dist/parser/layoutPreprocessor.js.map +1 -0
  13. package/dist/parser/lexer.d.ts +42 -0
  14. package/dist/parser/lexer.js +75 -0
  15. package/dist/parser/lexer.js.map +1 -0
  16. package/dist/parser/preprocessor.d.ts +28 -0
  17. package/dist/parser/preprocessor.js +453 -0
  18. package/dist/parser/preprocessor.js.map +1 -0
  19. package/dist/prelude.d.ts +1 -0
  20. package/dist/prelude.js +205 -0
  21. package/dist/prelude.js.map +1 -0
  22. package/dist/typechecker/DeclarationCollector.d.ts +15 -0
  23. package/dist/typechecker/DeclarationCollector.js +80 -0
  24. package/dist/typechecker/DeclarationCollector.js.map +1 -0
  25. package/dist/typechecker/TypeBuilder.d.ts +12 -0
  26. package/dist/typechecker/TypeBuilder.js +113 -0
  27. package/dist/typechecker/TypeBuilder.js.map +1 -0
  28. package/dist/typechecker/checker.d.ts +80 -0
  29. package/dist/typechecker/checker.js +269 -0
  30. package/dist/typechecker/checker.js.map +1 -0
  31. package/dist/typechecker/core.d.ts +14 -0
  32. package/dist/typechecker/core.js +142 -0
  33. package/dist/typechecker/core.js.map +1 -0
  34. package/dist/typechecker/inference.d.ts +69 -0
  35. package/dist/typechecker/inference.js +984 -0
  36. package/dist/typechecker/inference.js.map +1 -0
  37. package/dist/utils/helpers.d.ts +2 -0
  38. package/dist/utils/helpers.js +25 -0
  39. package/dist/utils/helpers.js.map +1 -0
  40. package/dist/utils/types.d.ts +6 -0
  41. package/dist/utils/types.js +53 -0
  42. package/dist/utils/types.js.map +1 -0
  43. package/package.json +36 -0
  44. package/src/index.ts +55 -0
  45. package/src/parser/grammar.ne +463 -0
  46. package/src/parser/grammar.ts +512 -0
  47. package/src/parser/layoutPreprocessor.ts +21 -0
  48. package/src/parser/lexer.ts +77 -0
  49. package/src/parser/preprocessor.ne +375 -0
  50. package/src/parser/preprocessor.ts +502 -0
  51. package/src/prelude.ts +206 -0
  52. package/src/typechecker/DeclarationCollector.ts +104 -0
  53. package/src/typechecker/TypeBuilder.ts +148 -0
  54. package/src/typechecker/checker.ts +395 -0
  55. package/src/typechecker/core.ts +162 -0
  56. package/src/typechecker/inference.ts +1327 -0
  57. package/src/utils/helpers.ts +29 -0
  58. package/src/utils/types.ts +56 -0
  59. package/tests/parser.spec.ts +823 -0
  60. package/tests/prelude.spec.ts +22 -0
  61. package/tests/preprocessor.spec.ts +69 -0
  62. package/tests/typechecker.spec.ts +310 -0
  63. package/tsconfig.json +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../../src/parser/preprocessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const preludeCode = "data Ordering = LT | EQ | GT\ndata Maybe a = Nothing | Just a\n(,) :: a -> b -> (a, b)\n(,) x y = (x, y)\n($) :: (a -> b) -> a -> b\n($) f x = f x\n(.) :: (b -> c) -> (a -> b) -> a -> c\n(.) f g a = (\\x -> f (g x)) a\n(:) :: a -> [a] -> [a]\n(:) x xs = x : xs\n(++) :: [a] -> [a] -> [a]\n(++) [] ys = ys\n(++) (x:xs) ys = x : (xs ++ ys)\n(&&) :: (Eq a) => a -> a -> Boolean\n(||) :: (Eq a) => a -> a -> Boolean\n(&&) x y = x && y\n(||) x y = x || y\n(==) :: (Ord a) => a -> a -> Boolean\n(/=) :: (Ord a) => a -> a -> Boolean\n(<) :: (Ord a) => a -> a -> Boolean\n(>) :: (Ord a) => a -> a -> Boolean\n(<=) :: (Ord a) => a -> a -> Boolean\n(>=) :: (Ord a) => a -> a -> Boolean\n(==) x y = x == y\n(/=) x y = x /= y\n(<) x y = x < y\n(>) x y = x > y\n(<=) x y = x <= y\n(>=) x y = x >= y\n(+) :: Num a => a -> a -> a\n(-) :: Num a => a -> a -> a\n(+) x y = x + y\n(-) x y = x - y\n(**) :: (Floating a) => a -> a -> a\n(**) x y = x ** y\n(^) :: (Num a, Integral b) => a -> b -> a\n(^) x y = x ^ y\n(^^) :: (Fractional a, Integral b) => a -> b -> a\n(^^) x y = x ^^ y\n(*) :: (Num a) => a -> a -> a\n(*) x y = x * y\n(/) :: Fractional a => a -> a -> a\n(/) _ 0 = error \"Prelude./: divide by zero\"\n(/) x y = x / y\n(!!) :: [a] -> Int -> a\n(!!) xs n | n < 0 = error \"Prelude.!!: negative index\"\n(!!) [] _ = error \"Prelude.!!: index too large\"\n(!!) (x:_) 0 = x\n(!!) (_:xs) n = xs !! (n - 1)\nnot :: Bool -> Bool\nnot True = False\nnot False = True\nquot :: Integral a => a -> a -> a\nquot _ 0 = error \"divide by zero\"\nquot 0 _ = 0\nquot a b = let { absA = abs a; absB = abs b; result = quotPositive absA absB } in if (a < 0) == (b < 0) then result else -result\nrem :: Integral a => a -> a -> a\nrem _ 0 = error \"divide by zero\"\nrem 0 _ = 0\nrem a b = let { absA = abs a; absB = abs b; remainder = remPositive absA absB } in if a < 0 then -remainder else remainder\nquotPositive :: Integral a => a -> a -> a\nquotPositive n d | n < d = 0 | otherwise = 1 + quotPositive (n - d) d\nremPositive :: Integral a => a -> a -> a\nremPositive n d | n < d = n | otherwise = remPositive (n - d) d\ndiv :: Integral a => a -> a -> a\ndiv _ 0 = error \"divide by zero\"\ndiv 0 _ = 0\ndiv a b = let { q = quot a b; r = rem a b } in if r == 0 || (a < 0) == (b < 0) then q else q - 1\nmod :: Integral a => a -> a -> a\nmod _ 0 = error \"divide by zero\"\nmod 0 _ = 0\nmod a b = a - (div a b) * b\nsignum :: (Num a) => a -> a\nsignum x | x == 0 = 0 | x > 0 = 1 | otherwise = -1\nabs :: (Num a) => a -> a\nabs n = if n < 0 then -n else n\nsqrt :: (Num a) => a -> a\nsqrt x = x ** 0.5\nmax :: a -> a -> a\nmax x y = if x <= y then y else x\nmin :: a -> a -> a\nmin x y = if x <= y then x else y\neven :: (Integral a) => a -> Bool\nodd :: (Integral a) => a -> Bool\neven n = n `rem` 2 == 0\nodd n = (not . even) n\nlength :: [a] -> Int\nlength [] = 0\nlength (_:l) = 1 + length l\ngenericLength :: (Integral a) => [b] -> a\ngenericLength [] = 0\ngenericLength (x:xs) = 1 + genericLength xs\nnull :: [a] -> Bool\nnull [] = True\nnull (_:_) = False\nunion :: (Eq a) => [a] -> [a] -> [a]\nunion xs ys = unionBy (==) xs ys\ndeleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]\ndeleteBy eq x [] = []\ndeleteBy eq x (y:ys) = if x `eq` y then ys else y : deleteBy eq x ys\ndeleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]\ndeleteFirstsBy eq xs ys = foldl (flip (deleteBy eq)) xs ys\nnubBy :: (a -> a -> Bool) -> [a] -> [a]\nnubBy eq [] = []\nnubBy eq (x:xs) = x : nubBy eq (filter (\\y -> not (eq x y)) xs)\nunionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]\nunionBy eq xs ys = xs ++ deleteFirstsBy eq (nubBy eq ys) xs\nintersect :: (Eq a) => [a] -> [a] -> [a]\nintersect xs ys = intersectBy (==) xs ys\nintersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]\nintersectBy eq xs ys = [x | x <- xs, any (eq x) ys]\nelem :: (Eq a) => a -> [a] -> Bool\nnotElem :: (Eq a) => a -> [a] -> Bool\nelem x xs = any (\\y -> y == x) xs\nnotElem x xs = all (\\y -> y /= x) xs\nmaximum :: (Ord a) => [a] -> a\nminimum :: (Ord a) => [a] -> a\nmaximum [] = error \"Prelude.maximum: empty list\"\nmaximum xs = foldl1 max xs\nminimum [] = error \"Prelude.minimum: empty list\"\nminimum xs = foldl1 min xs\nsum :: (Num a) => [a] -> a\nproduct :: (Num a) => [a] -> a\nsum xs = foldl (+) 0 xs\nproduct xs = foldl (*) 1 xs\nconcat :: [[a]] -> [a]\nconcat xss = foldr (++) [] xss\nconcatMap :: (a -> [b]) -> [a] -> [b]\nconcatMap f xs = (concat . map) f xs\ntake :: Int -> [a] -> [a]\ntake n _ | n <= 0 = []\ntake _ [] = []\ntake n (x:xs) = x : take (n - 1) xs\ndrop :: Int -> [a] -> [a]\ndrop n xs | n <= 0 = xs\ndrop _ [] = []\ndrop n (_:xs) = drop (n - 1) xs\nhead :: [a] -> a\nhead (x:_) = x\nhead [] = error \"Prelude.head: empty list\"\ntail :: [a] -> [a]\ntail (_:xs) = xs\ntail [] = error \"Prelude.tail: empty list\"\nlast :: [a] -> a\nlast [x] = x\nlast (_:xs) = last xs\nlast [] = error \"Prelude.last: empty list\"\ninit :: [a] -> [a]\ninit [x] = []\ninit (x:xs) = x : init xs\ninit [] = error \"Prelude.init: empty list\"\nzip :: [a] -> [b] -> [(a, b)]\nzip xs ys = zipWith (,) xs ys\nzipWith :: (a -> b -> c) -> [a] -> [b] -> [c]\nzipWith z (a:as) (b:bs) = z a b : zipWith z as bs\nzipWith _ _ _ = []\nreverse :: [a] -> [a]\nreverse xs = foldl (flip (:)) [] xs\nfilter :: (a -> Bool) -> [a] -> [a]\nfilter p [] = []\nfilter p (x:xs) | p x = x : filter p xs | otherwise = filter p xs\nmap :: (a -> b) -> [a] -> [b]\nmap f [] = []\nmap f (x:xs) = f x : map f xs\nany :: (a -> Bool) -> [a] -> Bool\nall :: (a -> Bool) -> [a] -> Bool\nany f (x:xs) = f x || any f xs\nall f (x:xs) = f x && all f xs\nfoldl :: (a -> b -> a) -> a -> [b] -> a\nfoldl f z [] = z\nfoldl f z (x:xs) = foldl f (f z x) xs\nfoldl1 :: (a -> a -> a) -> [a] -> a\nfoldl1 f (x:xs) = foldl f x xs\nfoldl1 _ [] = error \"Prelude.foldl1: empty list\"\nfoldr :: (a -> b -> b) -> b -> [a] -> b\nfoldr f z [] = z\nfoldr f z (x:xs) = f x (foldr f z xs)\nfoldr1 :: (a -> a -> a) -> [a] -> a\nfoldr1 f [x] = x\nfoldr1 f (x:xs) = f x (foldr1 f xs)\nfoldr1 _ [] = error \"Prelude.foldr1: empty list\"\nfind :: Ord a => (a -> Bool) -> [a] -> Maybe a\nfind _ [] = Nothing\nfind f (x:xs) | f x = Just x | otherwise = find f xs\nsort :: (Ord a) => [a] -> [a]\nsort xs = sortBy compare xs\nsortBy :: (a -> a -> Ordering) -> [a] -> [a]\nsortBy cmp xs = foldr (insertBy cmp) [] xs\ncompare :: a -> a -> Ordering\ncompare x y | x == y = EQ | x <= y = LT | otherwise = GT\ninsertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]\ninsertBy cmp x [] = [x]\ninsertBy cmp x ys@(y:ys') = case cmp x y of { GT -> y : insertBy cmp x ys'; _ -> x : ys }\nflip :: (a -> b -> c) -> b -> a -> c\nflip f x y = f y x\nrepeat :: a -> [a]\nrepeat x = x : (repeat x)\niterate :: (a -> a) -> a -> [a]\niterate f x = x : iterate f (f x)\nreplicate :: Int -> a -> [a]\nreplicate n x = take n (repeat x)\ncycle :: [a] -> [a]\ncycle [] = error \"Prelude.cycle: empty list\"\ncycle xs = xs ++ (cycle xs)";
@@ -0,0 +1,205 @@
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)`;
205
+ //# sourceMappingURL=prelude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prelude.js","sourceRoot":"","sources":["../src/prelude.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA2MC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { ASTNode, Record, TypeAlias, TypeSignature, Visitor } from "@yukigo/ast";
2
+ import { Type, TypeScheme } from "./checker.js";
3
+ import { CoreHM } from "./core.js";
4
+ export declare class DeclarationCollectorVisitor implements Visitor<void> {
5
+ private errors;
6
+ private typeAliasMap;
7
+ private recordMap;
8
+ private signatureMap;
9
+ private coreHM;
10
+ constructor(errors: string[], typeAliasMap: Map<string, Type>, recordMap: Map<string, Type>, signatureMap: Map<string, TypeScheme>, coreHM: CoreHM);
11
+ visitTypeAlias(node: TypeAlias): void;
12
+ visitRecord(node: Record): void;
13
+ visitTypeSignature(node: TypeSignature): void;
14
+ visit(node: ASTNode): void;
15
+ }
@@ -0,0 +1,80 @@
1
+ import { functionType, } from "./checker.js";
2
+ import { CoreHM } from "./core.js";
3
+ import { TypeBuilder } from "./TypeBuilder.js";
4
+ const builder = new TypeBuilder(new CoreHM());
5
+ export class DeclarationCollectorVisitor {
6
+ errors;
7
+ typeAliasMap;
8
+ recordMap;
9
+ signatureMap;
10
+ coreHM;
11
+ constructor(errors, typeAliasMap, recordMap, signatureMap, coreHM) {
12
+ this.errors = errors;
13
+ this.typeAliasMap = typeAliasMap;
14
+ this.recordMap = recordMap;
15
+ this.signatureMap = signatureMap;
16
+ this.coreHM = coreHM;
17
+ }
18
+ visitTypeAlias(node) {
19
+ const typeAliasIdentifier = node.identifier.value;
20
+ if (this.typeAliasMap.has(typeAliasIdentifier) ||
21
+ this.recordMap.has(typeAliasIdentifier)) {
22
+ this.errors.push(`Multiple declaration of '${typeAliasIdentifier}'.`);
23
+ return;
24
+ }
25
+ const { type, constraints } = builder.build(node.value);
26
+ this.typeAliasMap.set(typeAliasIdentifier, type);
27
+ }
28
+ visitRecord(node) {
29
+ const recordIdentifier = node.name.value;
30
+ if (this.typeAliasMap.has(recordIdentifier) ||
31
+ this.recordMap.has(recordIdentifier)) {
32
+ this.errors.push(`Multiple declaration of '${recordIdentifier}'.`);
33
+ return;
34
+ }
35
+ // Save the record type itself
36
+ const recordType = {
37
+ type: "TypeConstructor",
38
+ name: recordIdentifier,
39
+ args: [],
40
+ };
41
+ this.recordMap.set(recordIdentifier, recordType);
42
+ // Add constructors to signature map as type schemes
43
+ for (const cons of node.contents) {
44
+ if (this.signatureMap.has(cons.name.value)) {
45
+ this.errors.push(`Constructor '${cons.name}' is already defined`);
46
+ continue;
47
+ }
48
+ const paramTypes = cons.fields.map((field) => builder.build(field.value));
49
+ const returnType = {
50
+ type: "TypeConstructor",
51
+ name: recordIdentifier,
52
+ args: paramTypes.map(() => this.coreHM.freshVar()),
53
+ };
54
+ const funcType = paramTypes.reduceRight((acc, param) => functionType(param.type, acc), returnType);
55
+ // Generalize all free variables in the constructor type
56
+ const scheme = this.coreHM.generalize(new Map(), funcType);
57
+ this.signatureMap.set(cons.name.value, scheme);
58
+ }
59
+ }
60
+ visitTypeSignature(node) {
61
+ const functionName = node.identifier.value;
62
+ if (this.signatureMap.has(functionName)) {
63
+ this.errors.push(`Function '${functionName}' has multiple type signatures`);
64
+ return;
65
+ }
66
+ const typeVarMap = new Map();
67
+ const { type, constraints } = builder.build(node.body, typeVarMap);
68
+ const quantifiers = Array.from(typeVarMap.values()).map((tv) => tv.id);
69
+ this.signatureMap.set(functionName, {
70
+ type: "TypeScheme",
71
+ quantifiers,
72
+ body: type,
73
+ constraints,
74
+ });
75
+ }
76
+ visit(node) {
77
+ node.accept(this);
78
+ }
79
+ }
80
+ //# sourceMappingURL=DeclarationCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeclarationCollector.js","sourceRoot":"","sources":["../../src/typechecker/DeclarationCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Type as YukigoType } from "@yukigo/ast";
2
+ import { CoreHM } from "./core.js";
3
+ import { Type, TypeVar } from "./checker.js";
4
+ export declare class TypeBuilder {
5
+ private coreHM;
6
+ constructor(coreHM: CoreHM);
7
+ build(node: YukigoType, typeVarMap?: Map<string, TypeVar>): {
8
+ type: Type;
9
+ constraints: Map<number, string[]>;
10
+ };
11
+ private processConstraint;
12
+ }
@@ -0,0 +1,113 @@
1
+ import { SimpleType, TypeVar as ASTTypeVar, } from "@yukigo/ast";
2
+ import { typeMappings } from "../utils/types.js";
3
+ import { functionType } from "./checker.js";
4
+ export class TypeBuilder {
5
+ coreHM;
6
+ constructor(coreHM) {
7
+ this.coreHM = coreHM;
8
+ }
9
+ build(node, typeVarMap = new Map()) {
10
+ const constraintsMap = new Map();
11
+ // Local visitor to walk Yukigo type AST
12
+ const visitor = {
13
+ visitSimpleType: (n) => {
14
+ if (/^[a-z]/.test(n.value)) {
15
+ // Lowercase = type variable
16
+ if (!typeVarMap.has(n.value)) {
17
+ typeVarMap.set(n.value, {
18
+ type: "TypeVar",
19
+ ...this.coreHM.freshVar(),
20
+ name: n.value,
21
+ });
22
+ }
23
+ // Collect constraints on this type var
24
+ for (const constraint of n.constraints) {
25
+ this.processConstraint(constraint, typeVarMap, constraintsMap);
26
+ }
27
+ return typeVarMap.get(n.value);
28
+ }
29
+ // Uppercase = type constructor (e.g., Int, Bool, List)
30
+ const primitive = typeMappings[n.value] || n.value;
31
+ return {
32
+ type: "TypeConstructor",
33
+ name: primitive,
34
+ args: [],
35
+ };
36
+ },
37
+ visitTypeVar: (n) => {
38
+ // Same as SimpleType for type variables
39
+ if (!typeVarMap.has(n.value)) {
40
+ typeVarMap.set(n.value, {
41
+ type: "TypeVar",
42
+ ...this.coreHM.freshVar(),
43
+ name: n.value,
44
+ });
45
+ }
46
+ for (const constraint of n.constraints) {
47
+ this.processConstraint(constraint, typeVarMap, constraintsMap);
48
+ }
49
+ return typeVarMap.get(n.value);
50
+ },
51
+ visitListType: (n) => {
52
+ const elementType = n.values.accept(visitor);
53
+ return {
54
+ type: "TypeConstructor",
55
+ name: "List",
56
+ args: [elementType],
57
+ };
58
+ },
59
+ visitTupleType: (n) => {
60
+ const elementTypes = n.values.map((v) => v.accept(visitor));
61
+ return {
62
+ type: "TypeConstructor",
63
+ name: "Tuple",
64
+ args: elementTypes,
65
+ };
66
+ },
67
+ visitTypeApplication: (n) => {
68
+ return this.coreHM.freshVar();
69
+ },
70
+ visitParameterizedType: (n) => {
71
+ // This represents function types with constraints, e.g.:
72
+ // (a, b) => c with Eq a
73
+ const returnType = n.returnType.accept(visitor);
74
+ const paramTypes = n.inputs.map((input) => input.accept(visitor));
75
+ // Build function type: a -> b -> c
76
+ const funcType = paramTypes.reduceRight((acc, param) => functionType(param, acc), returnType);
77
+ // Process constraints
78
+ for (const constraint of n.constraints) {
79
+ this.processConstraint(constraint, typeVarMap, constraintsMap);
80
+ }
81
+ return funcType;
82
+ },
83
+ visitConstrainedType: (n) => {
84
+ // This is unusual at top level; usually constraints appear on type vars or signatures
85
+ // For now, ignore or throw
86
+ throw new Error("ConstrainedType not expected in this context");
87
+ },
88
+ visit(node) {
89
+ return node.accept(visitor);
90
+ },
91
+ };
92
+ const type = node.accept(visitor);
93
+ return { type, constraints: constraintsMap };
94
+ }
95
+ processConstraint(constraint, typeVarMap, constraintsMap) {
96
+ // Assume constraint is of form `Eq a`, so first param is a type var
97
+ if (constraint.parameters.length === 0)
98
+ return;
99
+ const firstParam = constraint.parameters[0];
100
+ // Only handle if it's a type variable
101
+ if ((firstParam instanceof SimpleType || firstParam instanceof ASTTypeVar) &&
102
+ /^[a-z]/.test(firstParam.value)) {
103
+ const tv = typeVarMap.get(firstParam.value);
104
+ if (tv) {
105
+ if (!constraintsMap.has(tv.id)) {
106
+ constraintsMap.set(tv.id, []);
107
+ }
108
+ constraintsMap.get(tv.id).push(constraint.name);
109
+ }
110
+ }
111
+ }
112
+ }
113
+ //# sourceMappingURL=TypeBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeBuilder.js","sourceRoot":"","sources":["../../src/typechecker/TypeBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,OAAO,IAAI,UAAU,GAStB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAkC,MAAM,cAAc,CAAC;AAE5E,MAAM,OAAO,WAAW;IACF;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC,KAAK,CACH,IAAgB,EAChB,aAAmC,IAAI,GAAG,EAAE;QAE5C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAC;QAEnD,wCAAwC;QACxC,MAAM,OAAO,GAAG;YACd,eAAe,EAAE,CAAC,CAAa,EAAQ,EAAE;gBACvC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,4BAA4B;oBAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;4BACtB,IAAI,EAAE,SAAS;4BACf,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;4BACzB,IAAI,EAAE,CAAC,CAAC,KAAK;yBACd,CAAC,CAAC;oBACL,CAAC;oBACD,uCAAuC;oBACvC,KAAK,MAAM,UAAU,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;wBACvC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;oBACjE,CAAC;oBACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC;gBAClC,CAAC;gBAED,uDAAuD;gBACvD,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;gBACnD,OAAO;oBACL,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,EAAE;iBACT,CAAC;YACJ,CAAC;YAED,YAAY,EAAE,CAAC,CAAa,EAAQ,EAAE;gBACpC,wCAAwC;gBACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;wBACtB,IAAI,EAAE,SAAS;wBACf,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACzB,IAAI,EAAE,CAAC,CAAC,KAAK;qBACd,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,MAAM,UAAU,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACvC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC;YAClC,CAAC;YAED,aAAa,EAAE,CAAC,CAAW,EAAQ,EAAE;gBACnC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7C,OAAO;oBACL,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,CAAC,WAAW,CAAC;iBACpB,CAAC;YACJ,CAAC;YAED,cAAc,EAAE,CAAC,CAAY,EAAQ,EAAE;gBACrC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5D,OAAO;oBACL,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,YAAY;iBACnB,CAAC;YACJ,CAAC;YAED,oBAAoB,EAAE,CAAC,CAAkB,EAAQ,EAAE;gBACjD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChC,CAAC;YAED,sBAAsB,EAAE,CAAC,CAAoB,EAAQ,EAAE;gBACrD,yDAAyD;gBACzD,wBAAwB;gBACxB,MAAM,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAElE,mCAAmC;gBACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CACrC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,EACxC,UAAU,CACX,CAAC;gBAEF,sBAAsB;gBACtB,KAAK,MAAM,UAAU,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACvC,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;gBACjE,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,oBAAoB,EAAE,CAAC,CAAkB,EAAQ,EAAE;gBACjD,sFAAsF;gBACtF,2BAA2B;gBAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,KAAK,CAAC,IAAa;gBACjB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;SACF,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IAC/C,CAAC;IAEO,iBAAiB,CACvB,UAAsB,EACtB,UAAwD,EACxD,cAAqC;QAErC,oEAAoE;QACpE,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/C,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5C,sCAAsC;QACtC,IACE,CAAC,UAAU,YAAY,UAAU,IAAI,UAAU,YAAY,UAAU,CAAC;YACtE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAC/B,CAAC;YACD,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC/B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAChC,CAAC;gBACD,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;CACF"}