1818 - [ Kind] ( #lambdabuffers-compiler-Kind )
1919 - [ Kind.KindArrow] ( #lambdabuffers-compiler-Kind-KindArrow )
2020 - [ KindCheckError] ( #lambdabuffers-compiler-KindCheckError )
21- - [ KindCheckError.ImpossibleUnificationError ] ( #lambdabuffers-compiler-KindCheckError-ImpossibleUnificationError )
21+ - [ KindCheckError.CyclicKindError ] ( #lambdabuffers-compiler-KindCheckError-CyclicKindError )
2222 - [ 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 )
2526 - [ Module] ( #lambdabuffers-compiler-Module )
2627 - [ ModuleName] ( #lambdabuffers-compiler-ModuleName )
2728 - [ ModuleNamePart] ( #lambdabuffers-compiler-ModuleNamePart )
6162 - [ TyVar] ( #lambdabuffers-compiler-TyVar )
6263 - [ Tys] ( #lambdabuffers-compiler-Tys )
6364 - [ VarName] ( #lambdabuffers-compiler-VarName )
64-
65+
6566 - [ Kind.KindRef] ( #lambdabuffers-compiler-Kind-KindRef )
66-
67+
6768- [ Scalar Value Types] ( #scalar-value-types )
6869
6970
@@ -191,34 +192,6 @@ Compiler Result ~ a successful Compilation Output.
191192
192193
193194
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-
222195<a name =" lambdabuffers-compiler-ConstrName " ></a >
223196
224197### ConstrName
@@ -348,34 +321,39 @@ Kind checking errors.
348321
349322| Field | Type | Label | Description |
350323| ----- | ---- | ----- | ----------- |
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 ) | | |
354328| inconsistent_type_error | [ KindCheckError.InconsistentTypeError] ( #lambdabuffers-compiler-KindCheckError-InconsistentTypeError ) | | |
355329
356330
357331
358332
359333
360334
361- <a name =" lambdabuffers-compiler-KindCheckError-ImpossibleUnificationError " ></a >
335+ <a name =" lambdabuffers-compiler-KindCheckError-CyclicKindError " ></a >
362336
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.
368340
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.
372351
373352
374353| Field | Type | Label | Description |
375354| ----- | ---- | ----- | ----------- |
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 ) | | |
379357
380358
381359
@@ -385,46 +363,72 @@ is.
385363<a name =" lambdabuffers-compiler-KindCheckError-InconsistentTypeError " ></a >
386364
387365### 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.
389385
390386
391387| Field | Type | Label | Description |
392388| ----- | ---- | ----- | ----------- |
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 ) | | |
396392
397393
398394
399395
400396
401397
402- <a name =" lambdabuffers-compiler-KindCheckError-RecursiveKindError " ></a >
398+ <a name =" lambdabuffers-compiler-KindCheckError-UnboundTyVarError " ></a >
403399
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 .
406402
407403
408404| Field | Type | Label | Description |
409405| ----- | ---- | ----- | ----------- |
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+
411410
412411
413412
414413
415414
415+ <a name =" lambdabuffers-compiler-KindCheckError-UnificationError " ></a >
416416
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.
418420
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 .
422424
423425
424426| Field | Type | Label | Description |
425427| ----- | ---- | ----- | ----------- |
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 ) | | |
428432
429433
430434
@@ -1163,7 +1167,6 @@ Type variable
11631167| Field | Type | Label | Description |
11641168| ----- | ---- | ----- | ----------- |
11651169| var_name | [ VarName] ( #lambdabuffers-compiler-VarName ) | | Variable name. |
1166- | source_info | [ SourceInfo] ( #lambdabuffers-compiler-SourceInfo ) | | Source information. |
11671170
11681171
11691172
@@ -1200,7 +1203,7 @@ Type variable name
12001203
12011204
12021205
1203-
1206+
12041207
12051208
12061209<a name =" lambdabuffers-compiler-Kind-KindRef " ></a >
@@ -1214,11 +1217,11 @@ A built-in kind.
12141217| KIND_REF_TYPE | 1 | A ` Type ` kind (also know as ` * ` in Haskell) built-in. |
12151218
12161219
1220+
12171221
1222+
12181223
1219-
1220-
1221-
1224+
12221225
12231226
12241227
0 commit comments