18
18
- [ Kind] ( #lambdabuffers-compiler-Kind )
19
19
- [ Kind.KindArrow] ( #lambdabuffers-compiler-Kind-KindArrow )
20
20
- [ KindCheckError] ( #lambdabuffers-compiler-KindCheckError )
21
- - [ KindCheckError.ImpossibleUnificationError ] ( #lambdabuffers-compiler-KindCheckError-ImpossibleUnificationError )
21
+ - [ KindCheckError.CyclicKindError ] ( #lambdabuffers-compiler-KindCheckError-CyclicKindError )
22
22
- [ KindCheckError.InconsistentTypeError] ( #lambdabuffers-compiler-KindCheckError-InconsistentTypeError )
23
- - [ KindCheckError.RecursiveKindError] ( #lambdabuffers-compiler-KindCheckError-RecursiveKindError )
24
- - [ KindCheckError.UnboundTermError] ( #lambdabuffers-compiler-KindCheckError-UnboundTermError )
23
+ - [ KindCheckError.UnboundTyRefError] ( #lambdabuffers-compiler-KindCheckError-UnboundTyRefError )
24
+ - [ KindCheckError.UnboundTyVarError] ( #lambdabuffers-compiler-KindCheckError-UnboundTyVarError )
25
+ - [ KindCheckError.UnificationError] ( #lambdabuffers-compiler-KindCheckError-UnificationError )
25
26
- [ Module] ( #lambdabuffers-compiler-Module )
26
27
- [ ModuleName] ( #lambdabuffers-compiler-ModuleName )
27
28
- [ ModuleNamePart] ( #lambdabuffers-compiler-ModuleNamePart )
61
62
- [ TyVar] ( #lambdabuffers-compiler-TyVar )
62
63
- [ Tys] ( #lambdabuffers-compiler-Tys )
63
64
- [ VarName] ( #lambdabuffers-compiler-VarName )
64
-
65
+
65
66
- [ Kind.KindRef] ( #lambdabuffers-compiler-Kind-KindRef )
66
-
67
+
67
68
- [ Scalar Value Types] ( #scalar-value-types )
68
69
69
70
@@ -191,34 +192,6 @@ Compiler Result ~ a successful Compilation Output.
191
192
192
193
193
194
194
- <a name =" lambdabuffers-compiler-CompilerOutput " ></a >
195
-
196
- ### CompilerOutput
197
- Output of the Compiler.
198
-
199
-
200
- | Field | Type | Label | Description |
201
- | ----- | ---- | ----- | ----------- |
202
- | compilation_error | [ CompilerError] ( #lambdabuffers-compiler-CompilerError ) | | |
203
- | compilation_result | [ CompilerResult] ( #lambdabuffers-compiler-CompilerResult ) | | |
204
-
205
-
206
-
207
-
208
-
209
-
210
- <a name =" lambdabuffers-compiler-CompilerResult " ></a >
211
-
212
- ### CompilerResult
213
- Compiler Result ~ a successful Compilation Output.
214
-
215
- equivalent of unit.
216
-
217
-
218
-
219
-
220
-
221
-
222
195
<a name =" lambdabuffers-compiler-ConstrName " ></a >
223
196
224
197
### ConstrName
@@ -348,34 +321,39 @@ Kind checking errors.
348
321
349
322
| Field | Type | Label | Description |
350
323
| ----- | ---- | ----- | ----------- |
351
- | unbound_term_error | [ KindCheckError.UnboundTermError] ( #lambdabuffers-compiler-KindCheckError-UnboundTermError ) | | |
352
- | unification_error | [ KindCheckError.ImpossibleUnificationError] ( #lambdabuffers-compiler-KindCheckError-ImpossibleUnificationError ) | | |
353
- | recursive_subs_error | [ KindCheckError.RecursiveKindError] ( #lambdabuffers-compiler-KindCheckError-RecursiveKindError ) | | |
324
+ | unbound_ty_ref_error | [ KindCheckError.UnboundTyRefError] ( #lambdabuffers-compiler-KindCheckError-UnboundTyRefError ) | | |
325
+ | unbound_ty_var_error | [ KindCheckError.UnboundTyVarError] ( #lambdabuffers-compiler-KindCheckError-UnboundTyVarError ) | | |
326
+ | unification_error | [ KindCheckError.UnificationError] ( #lambdabuffers-compiler-KindCheckError-UnificationError ) | | |
327
+ | cyclic_kind_error | [ KindCheckError.CyclicKindError] ( #lambdabuffers-compiler-KindCheckError-CyclicKindError ) | | |
354
328
| inconsistent_type_error | [ KindCheckError.InconsistentTypeError] ( #lambdabuffers-compiler-KindCheckError-InconsistentTypeError ) | | |
355
329
356
330
357
331
358
332
359
333
360
334
361
- <a name =" lambdabuffers-compiler-KindCheckError-ImpossibleUnificationError " ></a >
335
+ <a name =" lambdabuffers-compiler-KindCheckError-CyclicKindError " ></a >
362
336
363
- ### KindCheckError.ImpossibleUnificationError
364
- Unification has failed - type is incorrectly defined. Error reads as
365
- follows:
366
- > ; In ty_name definition an error has occurred when trying to unify kind
367
- > ; ty_kind_1 with ty_kind_2.
337
+ ### KindCheckError.CyclicKindError
338
+ A cyclic kind was encountered. Infinite kinds like this are not acceptable,
339
+ and we do not support them. We could not construct infinite kind in ty_def.
368
340
369
- FIXME(cstml): add source of constraint to the error such that user can see
370
- where the constraint was generated - therefore where the error precisely
371
- is.
341
+ As the implementation currently stands such an error is (most likely) not
342
+ representable - therefore not reachable. Such an error would usually occur
343
+ for a term like: λa. a a - in which case the inference would try to unify
344
+ two kinds of the form: m and m -> ; n - because m appears in both terms -
345
+ the cyclic unification error would be thrown.
346
+
347
+ In the case of LambdaBuffers - such an error is not (currently) achievable
348
+ as the kind of the variable is given by the context - (i.e. λa : m . a a,
349
+ where m is a kind) therefore the unification would fail with Unification
350
+ Error. Nevertheless - future features might require it.
372
351
373
352
374
353
| Field | Type | Label | Description |
375
354
| ----- | ---- | ----- | ----------- |
376
- | ty_name | [ TyName] ( #lambdabuffers-compiler-TyName ) | | |
377
- | ty_kind_1 | [ Kind] ( #lambdabuffers-compiler-Kind ) | | |
378
- | ty_kind_2 | [ Kind] ( #lambdabuffers-compiler-Kind ) | | |
355
+ | ty_def | [ TyDef] ( #lambdabuffers-compiler-TyDef ) | | |
356
+ | module_name | [ ModuleName] ( #lambdabuffers-compiler-ModuleName ) | | |
379
357
380
358
381
359
@@ -385,46 +363,72 @@ is.
385
363
<a name =" lambdabuffers-compiler-KindCheckError-InconsistentTypeError " ></a >
386
364
387
365
### KindCheckError.InconsistentTypeError
388
- The inferred type differs from the type as defined.
366
+ The actual_kind differs from the expected_kind.
367
+
368
+
369
+ | Field | Type | Label | Description |
370
+ | ----- | ---- | ----- | ----------- |
371
+ | module_name | [ ModuleName] ( #lambdabuffers-compiler-ModuleName ) | | |
372
+ | ty_def | [ TyDef] ( #lambdabuffers-compiler-TyDef ) | | |
373
+ | actual_kind | [ Kind] ( #lambdabuffers-compiler-Kind ) | | |
374
+ | expected_kind | [ Kind] ( #lambdabuffers-compiler-Kind ) | | |
375
+
376
+
377
+
378
+
379
+
380
+
381
+ <a name =" lambdabuffers-compiler-KindCheckError-UnboundTyRefError " ></a >
382
+
383
+ ### KindCheckError.UnboundTyRefError
384
+ Unbound type reference ty_ref detected in term ty_def.
389
385
390
386
391
387
| Field | Type | Label | Description |
392
388
| ----- | ---- | ----- | ----------- |
393
- | ty_name | [ TyName ] ( #lambdabuffers-compiler-TyName ) | | |
394
- | inferred_kind | [ Kind ] ( #lambdabuffers-compiler-Kind ) | | |
395
- | defined_kind | [ Kind ] ( #lambdabuffers-compiler-Kind ) | | |
389
+ | module_name | [ ModuleName ] ( #lambdabuffers-compiler-ModuleName ) | | |
390
+ | ty_def | [ TyDef ] ( #lambdabuffers-compiler-TyDef ) | | |
391
+ | ty_ref | [ TyRef ] ( #lambdabuffers-compiler-TyRef ) | | |
396
392
397
393
398
394
399
395
400
396
401
397
402
- <a name =" lambdabuffers-compiler-KindCheckError-RecursiveKindError " ></a >
398
+ <a name =" lambdabuffers-compiler-KindCheckError-UnboundTyVarError " ></a >
403
399
404
- ### KindCheckError.RecursiveKindError
405
- Inifinitely recursive term detected in definition ty_name .
400
+ ### KindCheckError.UnboundTyVarError
401
+ Unbound variable ty_var detected in term ty_def .
406
402
407
403
408
404
| Field | Type | Label | Description |
409
405
| ----- | ---- | ----- | ----------- |
410
- | ty_name | [ TyName] ( #lambdabuffers-compiler-TyName ) | | |
406
+ | module_name | [ ModuleName] ( #lambdabuffers-compiler-ModuleName ) | | |
407
+ | ty_def | [ TyDef] ( #lambdabuffers-compiler-TyDef ) | | |
408
+ | ty_var | [ TyVar] ( #lambdabuffers-compiler-TyVar ) | | |
409
+
411
410
412
411
413
412
414
413
415
414
415
+ <a name =" lambdabuffers-compiler-KindCheckError-UnificationError " ></a >
416
416
417
- <a name =" lambdabuffers-compiler-KindCheckError-UnboundTermError " ></a >
417
+ ### KindCheckError.UnificationError
418
+ In ty_def an error has occurred when trying to unify kind ty_kind_lhs
419
+ with ty_kind_rhs.
418
420
419
- ### KindCheckError.UnboundTermError
420
- Error referring to an unbound term. This usually means that the term was
421
- not defined .
421
+ FIXME(cstml): Add source of constraint to the error such that user can see
422
+ where the constraint was generated - therefore where the error precisely
423
+ is .
422
424
423
425
424
426
| Field | Type | Label | Description |
425
427
| ----- | ---- | ----- | ----------- |
426
- | ty_name | [ TyName] ( #lambdabuffers-compiler-TyName ) | | |
427
- | var_name | [ VarName] ( #lambdabuffers-compiler-VarName ) | | |
428
+ | module_name | [ ModuleName] ( #lambdabuffers-compiler-ModuleName ) | | |
429
+ | ty_def | [ TyDef] ( #lambdabuffers-compiler-TyDef ) | | |
430
+ | ty_kind_lhs | [ Kind] ( #lambdabuffers-compiler-Kind ) | | |
431
+ | ty_kind_rhs | [ Kind] ( #lambdabuffers-compiler-Kind ) | | |
428
432
429
433
430
434
@@ -1163,7 +1167,6 @@ Type variable
1163
1167
| Field | Type | Label | Description |
1164
1168
| ----- | ---- | ----- | ----------- |
1165
1169
| var_name | [ VarName] ( #lambdabuffers-compiler-VarName ) | | Variable name. |
1166
- | source_info | [ SourceInfo] ( #lambdabuffers-compiler-SourceInfo ) | | Source information. |
1167
1170
1168
1171
1169
1172
@@ -1200,7 +1203,7 @@ Type variable name
1200
1203
1201
1204
1202
1205
1203
-
1206
+
1204
1207
1205
1208
1206
1209
<a name =" lambdabuffers-compiler-Kind-KindRef " ></a >
@@ -1214,11 +1217,11 @@ A built-in kind.
1214
1217
| KIND_REF_TYPE | 1 | A ` Type ` kind (also know as ` * ` in Haskell) built-in. |
1215
1218
1216
1219
1220
+
1217
1221
1222
+
1218
1223
1219
-
1220
-
1221
-
1224
+
1222
1225
1223
1226
1224
1227
0 commit comments