This commit is contained in:
Adrien Guatto 2023-11-15 19:08:33 +01:00
parent 3342201162
commit 6355f88c0f
339 changed files with 1101 additions and 29 deletions

Binary file not shown.

View file

@ -3,8 +3,6 @@ open HopixASTHelper
let type_error = Error.error "typechecking" let type_error = Error.error "typechecking"
type variable = type_variable
type aty = type aty =
| ATyVar of type_variable | ATyVar of type_variable
| ATyCon of type_constructor * aty list | ATyCon of type_constructor * aty list
@ -82,12 +80,6 @@ let tvar x =
let ( --> ) tys ty = let ( --> ) tys ty =
List.fold_left (fun ty aty -> ATyArrow (aty, ty)) ty (List.rev tys) List.fold_left (fun ty aty -> ATyArrow (aty, ty)) ty (List.rev tys)
exception NotAFunction
let output_type_of_function = function
| ATyArrow (_, ty) -> ty
| _ -> raise NotAFunction
let constant x = TCon x, ATyCon (TCon x, []) let constant x = TCon x, ATyCon (TCon x, [])
let tcunit, hunit = constant "unit" let tcunit, hunit = constant "unit"
let tcbool, hbool = constant "bool" let tcbool, hbool = constant "bool"
@ -98,8 +90,6 @@ let tcchar, hchar = constant "char"
let tcref = TCon "mut" let tcref = TCon "mut"
let href ty = ATyCon (tcref, [ty]) let href ty = ATyCon (tcref, [ty])
exception NotAReference
let type_error_wrong_shape shape pos given = let type_error_wrong_shape shape pos given =
type_error pos type_error pos
(Printf.sprintf (Printf.sprintf
@ -249,7 +239,7 @@ let free_type_variables_env_values { values; _ } =
TypeVariableSet.empty TypeVariableSet.empty
values values
let generalize_type_scheme env aty = let generalize_type env aty =
let open TypeVariableSet in let open TypeVariableSet in
let free_aty = free_type_variables aty in let free_aty = free_type_variables aty in
let free_env = free_type_variables_env_values env in let free_env = free_type_variables_env_values env in

View file

@ -1,23 +1,51 @@
(** {1 Internal Types} *)
(** This module defines an (OCaml) type of (Hopix) types as manipulated by the
typechecker. Such {i internal} types differ from the source-level {i
external} types defined in {! HopixAST} in that they are not annotated with
source-level positions.
In a more realistic compiler, the distance between internal and external
types would be greater. *)
open HopixAST open HopixAST
(** Abstract syntax for types. (** Internal types. *)
The following internal syntax for types is the same as the one for the types
[ty] defined in {!HopixAST} except that all positions have been erased. *)
type aty = type aty =
| ATyVar of type_variable | ATyVar of type_variable
| ATyCon of type_constructor * aty list | ATyCon of type_constructor * aty list
| ATyTuple of aty list | ATyTuple of aty list
| ATyArrow of aty * aty | ATyArrow of aty * aty
(** Internal type schemes. *)
type aty_scheme = Scheme of type_variable list * aty type aty_scheme = Scheme of type_variable list * aty
(** {2 Error management} *)
val type_error : Position.t -> string -> 'a
(** {2 Utility functions} *)
val string_of_aty : aty -> string val string_of_aty : aty -> string
val monomorphic_type_scheme : aty -> aty_scheme val monomorphic_type_scheme : aty -> aty_scheme
val instantiate_type_scheme : aty_scheme -> aty list -> aty val instantiate_type_scheme : aty_scheme -> aty list -> aty
(** {3 Type construction and destruction} *)
val hunit : aty
val hint : aty
val hbool : aty
val hstring : aty
val hchar : aty
val hprod : aty list -> aty
val href : aty -> aty
(** The type of destructuring functions, which receive a type and destruct it
into its constituents. Such functions fail by raising an exception if the
type is not of the expected shape, e.g., [destruct_function_type (ATyVar x)]
always raise an exception. *)
type 'res destruction_fun = Position.t -> aty -> 'res type 'res destruction_fun = Position.t -> aty -> 'res
val destruct_function_type : (aty * aty) destruction_fun val destruct_function_type : (aty * aty) destruction_fun
@ -30,6 +58,8 @@ val destruct_constructed_type : (type_constructor * aty list) destruction_fun
val destruct_reference_type : aty destruction_fun val destruct_reference_type : aty destruction_fun
(** {2 Typing Contexts} *)
type typing_environment type typing_environment
val initial_typing_environment : unit -> typing_environment val initial_typing_environment : unit -> typing_environment
@ -42,6 +72,8 @@ val bind_type_variable :
val bind_type_variables : val bind_type_variables :
Position.t -> typing_environment -> type_variable list -> typing_environment Position.t -> typing_environment -> type_variable list -> typing_environment
(** [internalize_ty env ety] internalizes the external type [ety]. It signals an
error when [ety] is not well-formed in [env]. *)
val internalize_ty : typing_environment -> ty Position.located -> aty val internalize_ty : typing_environment -> ty Position.located -> aty
type binding = type binding =
@ -79,16 +111,6 @@ val bind_type_definition
: type_constructor -> type_variable list -> type_definition : type_constructor -> type_variable list -> type_definition
-> typing_environment -> typing_environment -> typing_environment -> typing_environment
val type_error : Position.t -> string -> 'a
val hunit : aty
val hint : aty
val hbool : aty
val hstring : aty
val hchar : aty
val hprod : aty list -> aty
val href : aty -> aty
val generalize_type_scheme : typing_environment -> aty -> aty_scheme
val string_of_typing_environment : typing_environment -> string val string_of_typing_environment : typing_environment -> string
val generalize_type : typing_environment -> aty -> aty_scheme

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
string
Given:
int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Literal((value(LInt 42))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""2 17 21))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""2 17 25))(end_p(""2 17 31)))))))(position((start_p(""2 17 25))(end_p(""2 17 31))))))((value(Literal((value(LInt -42))(position((start_p(""2 17 34))(end_p(""2 17 37)))))))(position((start_p(""2 17 34))(end_p(""2 17 37)))))))))(position((start_p(""2 17 17))(end_p(""2 17 37))))))

View file

@ -0,0 +1,2 @@
let x : int = 42
let y : string = -42

View file

@ -0,0 +1,2 @@
x : int
y : int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Literal((value(LInt 42))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))(position((start_p(""1 0 14))(end_p(""1 0 16)))))))))(position((start_p(""1 0 0))(end_p(""1 0 16)))))((value(DefineValue(SimpleValue(((value(Id y))(position((start_p(""2 17 21))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""2 17 25))(end_p(""2 17 28)))))))(position((start_p(""2 17 25))(end_p(""2 17 28))))))((value(Literal((value(LInt -42))(position((start_p(""2 17 31))(end_p(""2 17 34)))))))(position((start_p(""2 17 31))(end_p(""2 17 34)))))))))(position((start_p(""2 17 17))(end_p(""2 17 34))))))

View file

@ -0,0 +1,2 @@
let x : int = 42
let y : int = -42

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int
Given:
string

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LString foo))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 14))(end_p(""1 0 23)))))))))(position((start_p(""1 0 0))(end_p(""1 0 23))))))

View file

@ -0,0 +1 @@
let x : int = 1 + "foo"

View file

@ -0,0 +1 @@
x : int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19))))))

View file

@ -0,0 +1 @@
let x : int = 1 + 1

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int
Given:
char

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LChar a))(position((start_p(""1 0 18))(end_p(""1 0 21)))))))(position((start_p(""1 0 18))(end_p(""1 0 21)))))))(position((start_p(""1 0 14))(end_p(""1 0 21)))))))))(position((start_p(""1 0 0))(end_p(""1 0 21))))))

View file

@ -0,0 +1 @@
let x : int = 1 * 'a'

View file

@ -0,0 +1 @@
x : int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19))))))

View file

@ -0,0 +1 @@
let x : int = 1 * 2

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int
Given:
char

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 18))(end_p(""1 0 19)))))()))(position((start_p(""1 0 18))(end_p(""1 0 19)))))((value(Literal((value(LChar a))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 20))(end_p(""1 0 21)))))))(position((start_p(""1 0 20))(end_p(""1 0 21)))))))(position((start_p(""1 0 14))(end_p(""1 0 21)))))))))(position((start_p(""1 0 0))(end_p(""1 0 21))))))

View file

@ -0,0 +1 @@
let x : int = 'a' - 2

View file

@ -0,0 +1 @@
x : int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19))))))

View file

@ -0,0 +1 @@
let x : int = 1 - 2

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int
Given:
char

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 18))(end_p(""1 0 19)))))()))(position((start_p(""1 0 18))(end_p(""1 0 19)))))((value(Literal((value(LChar a))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))((value(Literal((value(LChar a))(position((start_p(""1 0 20))(end_p(""1 0 23)))))))(position((start_p(""1 0 20))(end_p(""1 0 23)))))))(position((start_p(""1 0 14))(end_p(""1 0 23)))))))))(position((start_p(""1 0 0))(end_p(""1 0 23))))))

View file

@ -0,0 +1 @@
let x : int = 'a' / 'a'

View file

@ -0,0 +1 @@
x : int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))))(position((start_p(""1 0 0))(end_p(""1 0 19))))))

View file

@ -0,0 +1 @@
let x : int = 1 / 2

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
string
Given:
int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 31))(end_p(""1 0 32)))))()))(position((start_p(""1 0 31))(end_p(""1 0 32)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 23))(end_p(""1 0 24)))))()))(position((start_p(""1 0 23))(end_p(""1 0 24)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 19))(end_p(""1 0 20)))))()))(position((start_p(""1 0 19))(end_p(""1 0 20)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 17))(end_p(""1 0 18)))))))(position((start_p(""1 0 17))(end_p(""1 0 18)))))))(position((start_p(""1 0 17))(end_p(""1 0 18)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))(position((start_p(""1 0 21))(end_p(""1 0 22)))))))(position((start_p(""1 0 17))(end_p(""1 0 22)))))))(position((start_p(""1 0 17))(end_p(""1 0 22)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 27))(end_p(""1 0 28)))))()))(position((start_p(""1 0 27))(end_p(""1 0 28)))))((value(Literal((value(LInt 3))(position((start_p(""1 0 25))(end_p(""1 0 26)))))))(position((start_p(""1 0 25))(end_p(""1 0 26)))))))(position((start_p(""1 0 25))(end_p(""1 0 26)))))((value(Literal((value(LInt 5))(position((start_p(""1 0 29))(end_p(""1 0 30)))))))(position((start_p(""1 0 29))(end_p(""1 0 30)))))))(position((start_p(""1 0 25))(end_p(""1 0 30)))))))(position((start_p(""1 0 17))(end_p(""1 0 30)))))))(position((start_p(""1 0 17))(end_p(""1 0 30)))))((value(Literal((value(LInt 6))(position((start_p(""1 0 33))(end_p(""1 0 34)))))))(position((start_p(""1 0 33))(end_p(""1 0 34)))))))(position((start_p(""1 0 17))(end_p(""1 0 34)))))))))(position((start_p(""1 0 0))(end_p(""1 0 34))))))

View file

@ -0,0 +1 @@
let x : string = 1 / 2 + 3 * 5 - 6

View file

@ -0,0 +1 @@
x : int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id x))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Apply((value(Apply((value(Variable((value(Id `-`))(position((start_p(""1 0 28))(end_p(""1 0 29)))))()))(position((start_p(""1 0 28))(end_p(""1 0 29)))))((value(Apply((value(Apply((value(Variable((value(Id `+`))(position((start_p(""1 0 20))(end_p(""1 0 21)))))()))(position((start_p(""1 0 20))(end_p(""1 0 21)))))((value(Apply((value(Apply((value(Variable((value(Id `/`))(position((start_p(""1 0 16))(end_p(""1 0 17)))))()))(position((start_p(""1 0 16))(end_p(""1 0 17)))))((value(Literal((value(LInt 1))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))))(position((start_p(""1 0 14))(end_p(""1 0 15)))))((value(Literal((value(LInt 2))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 18))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))))(position((start_p(""1 0 14))(end_p(""1 0 19)))))((value(Apply((value(Apply((value(Variable((value(Id `*`))(position((start_p(""1 0 24))(end_p(""1 0 25)))))()))(position((start_p(""1 0 24))(end_p(""1 0 25)))))((value(Literal((value(LInt 3))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))))(position((start_p(""1 0 22))(end_p(""1 0 23)))))((value(Literal((value(LInt 5))(position((start_p(""1 0 26))(end_p(""1 0 27)))))))(position((start_p(""1 0 26))(end_p(""1 0 27)))))))(position((start_p(""1 0 22))(end_p(""1 0 27)))))))(position((start_p(""1 0 14))(end_p(""1 0 27)))))))(position((start_p(""1 0 14))(end_p(""1 0 27)))))((value(Literal((value(LInt 6))(position((start_p(""1 0 30))(end_p(""1 0 31)))))))(position((start_p(""1 0 30))(end_p(""1 0 31)))))))(position((start_p(""1 0 14))(end_p(""1 0 31)))))))))(position((start_p(""1 0 0))(end_p(""1 0 31))))))

View file

@ -0,0 +1 @@
let x : int = 1 / 2 + 3 * 5 - 6

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int
Given:
char

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 8))(end_p(""1 0 11)))))))(position((start_p(""1 0 8))(end_p(""1 0 11))))))((value(Literal((value(LChar a))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))(position((start_p(""1 0 14))(end_p(""1 0 17)))))))))(position((start_p(""1 0 0))(end_p(""1 0 17))))))

View file

@ -0,0 +1 @@
let c : int = 'a'

View file

@ -0,0 +1 @@
c : char

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon char)()))(position((start_p(""1 0 8))(end_p(""1 0 12)))))))(position((start_p(""1 0 8))(end_p(""1 0 12))))))((value(Literal((value(LChar a))(position((start_p(""1 0 15))(end_p(""1 0 18)))))))(position((start_p(""1 0 15))(end_p(""1 0 18)))))))))(position((start_p(""1 0 0))(end_p(""1 0 18))))))

View file

@ -0,0 +1 @@
let c : char = 'a'

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
char
Given:
string

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon char)()))(position((start_p(""1 0 8))(end_p(""1 0 12)))))))(position((start_p(""1 0 8))(end_p(""1 0 12))))))((value(Literal((value(LString"Luke, I may be your father!"))(position((start_p(""1 0 43))(end_p(""1 0 44)))))))(position((start_p(""1 0 43))(end_p(""1 0 44)))))))))(position((start_p(""1 0 0))(end_p(""1 0 44))))))

View file

@ -0,0 +1 @@
let c : char = "Luke, I may be your father!"

View file

@ -0,0 +1 @@
c : string

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id c))(position((start_p(""1 0 4))(end_p(""1 0 5)))))(((value(ForallTy()((value(TyCon(TCon string)()))(position((start_p(""1 0 8))(end_p(""1 0 14)))))))(position((start_p(""1 0 8))(end_p(""1 0 14))))))((value(Literal((value(LString"Luke, I may be your father!"))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))(position((start_p(""1 0 45))(end_p(""1 0 46)))))))))(position((start_p(""1 0 0))(end_p(""1 0 46))))))

View file

@ -0,0 +1 @@
let c : string = "Luke, I may be your father!"

View file

@ -0,0 +1,2 @@
Error (typechecking)
Unbound identifier `y'.

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""1 0 4))(end_p(""1 0 8)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 11))(end_p(""1 0 14)))))))(position((start_p(""1 0 11))(end_p(""1 0 14))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 17 25))(end_p(""2 17 26)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""2 17 29))(end_p(""2 17 32)))))))(position((start_p(""2 17 29))(end_p(""2 17 32))))))((value(Literal((value(LInt 1))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))((value(Variable((value(Id y))(position((start_p(""3 38 42))(end_p(""3 38 43)))))()))(position((start_p(""3 38 42))(end_p(""3 38 43)))))))(position((start_p(""2 17 21))(end_p(""3 38 43)))))))))(position((start_p(""1 0 0))(end_p(""3 38 43))))))

View file

@ -0,0 +1,3 @@
let main : int =
let x : int = 1;
y

View file

@ -0,0 +1 @@
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""1 0 4))(end_p(""1 0 8)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""1 0 11))(end_p(""1 0 14)))))))(position((start_p(""1 0 11))(end_p(""1 0 14))))))((value(Define(SimpleValue(((value(Id x))(position((start_p(""2 17 25))(end_p(""2 17 26)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""2 17 29))(end_p(""2 17 32)))))))(position((start_p(""2 17 29))(end_p(""2 17 32))))))((value(Literal((value(LInt 1))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))((value(Variable((value(Id x))(position((start_p(""3 38 42))(end_p(""3 38 43)))))()))(position((start_p(""3 38 42))(end_p(""3 38 43)))))))(position((start_p(""2 17 21))(end_p(""3 38 43)))))))))(position((start_p(""1 0 0))(end_p(""3 38 43))))))

View file

@ -0,0 +1,3 @@
let main : int =
let x : int = 1;
x

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
string
Given:
int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 20 24))(end_p(""2 20 26)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon string)()))(position((start_p(""1 0 13))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 20 28))(end_p(""2 20 29)))))))(position((start_p(""2 20 28))(end_p(""2 20 29)))))((value(TyCon(TCon int)()))(position((start_p(""2 20 32))(end_p(""2 20 35)))))))(position((start_p(""2 20 27))(end_p(""2 20 36)))))((value(Variable((value(Id x))(position((start_p(""2 20 39))(end_p(""2 20 40)))))()))(position((start_p(""2 20 39))(end_p(""2 20 40)))))))))))(position((start_p(""1 0 0))(end_p(""2 20 40)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 42 46))(end_p(""4 42 50)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 42 53))(end_p(""4 42 56)))))))(position((start_p(""4 42 53))(end_p(""4 42 56))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 59 63))(end_p(""5 59 65)))))()))(position((start_p(""5 59 63))(end_p(""5 59 65)))))((value(Literal((value(LInt 42))(position((start_p(""5 59 67))(end_p(""5 59 69)))))))(position((start_p(""5 59 66))(end_p(""5 59 70)))))))(position((start_p(""5 59 63))(end_p(""5 59 70)))))))))(position((start_p(""4 42 42))(end_p(""5 59 70))))))

View file

@ -0,0 +1,5 @@
fun : int -> string
id (x : int) = x
let main : int =
id (42)

View file

@ -0,0 +1,2 @@
id : int -> int
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 17 21))(end_p(""2 17 23)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 25))(end_p(""2 17 26)))))))(position((start_p(""2 17 25))(end_p(""2 17 26)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 29))(end_p(""2 17 32)))))))(position((start_p(""2 17 24))(end_p(""2 17 33)))))((value(Variable((value(Id x))(position((start_p(""2 17 36))(end_p(""2 17 37)))))()))(position((start_p(""2 17 36))(end_p(""2 17 37)))))))))))(position((start_p(""1 0 0))(end_p(""2 17 37)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 39 43))(end_p(""4 39 47)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 39 50))(end_p(""4 39 53)))))))(position((start_p(""4 39 50))(end_p(""4 39 53))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 56 60))(end_p(""5 56 62)))))()))(position((start_p(""5 56 60))(end_p(""5 56 62)))))((value(Literal((value(LInt 42))(position((start_p(""5 56 64))(end_p(""5 56 66)))))))(position((start_p(""5 56 63))(end_p(""5 56 67)))))))(position((start_p(""5 56 60))(end_p(""5 56 67)))))))))(position((start_p(""4 39 39))(end_p(""5 56 67))))))

View file

@ -0,0 +1,5 @@
fun : int -> int
id (x : int) = x
let main : int =
id (42)

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int
Given:
string

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 17 20))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 24))(end_p(""2 17 25)))))))(position((start_p(""2 17 24))(end_p(""2 17 25)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 28))(end_p(""2 17 31)))))))(position((start_p(""2 17 23))(end_p(""2 17 32)))))((value(Apply((value(Variable((value(Id id))(position((start_p(""2 17 35))(end_p(""2 17 37)))))()))(position((start_p(""2 17 35))(end_p(""2 17 37)))))((value(Variable((value(Id x))(position((start_p(""2 17 38))(end_p(""2 17 39)))))()))(position((start_p(""2 17 38))(end_p(""2 17 39)))))))(position((start_p(""2 17 35))(end_p(""2 17 39)))))))))))(position((start_p(""1 0 0))(end_p(""2 17 39)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 41 45))(end_p(""4 41 49)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 41 52))(end_p(""4 41 55)))))))(position((start_p(""4 41 52))(end_p(""4 41 55))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 58 62))(end_p(""5 58 64)))))()))(position((start_p(""5 58 62))(end_p(""5 58 64)))))((value(Literal((value(LString foo))(position((start_p(""5 58 69))(end_p(""5 58 70)))))))(position((start_p(""5 58 69))(end_p(""5 58 70)))))))(position((start_p(""5 58 62))(end_p(""5 58 70)))))))))(position((start_p(""4 41 41))(end_p(""5 58 70))))))

View file

@ -0,0 +1,5 @@
fun : int -> int
id (x : int) = id x
let main : int =
id "foo"

View file

@ -0,0 +1,2 @@
id : int -> int
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 17 20))(end_p(""2 17 22)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 24))(end_p(""2 17 25)))))))(position((start_p(""2 17 24))(end_p(""2 17 25)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 28))(end_p(""2 17 31)))))))(position((start_p(""2 17 23))(end_p(""2 17 32)))))((value(Apply((value(Variable((value(Id id))(position((start_p(""2 17 35))(end_p(""2 17 37)))))()))(position((start_p(""2 17 35))(end_p(""2 17 37)))))((value(Variable((value(Id x))(position((start_p(""2 17 38))(end_p(""2 17 39)))))()))(position((start_p(""2 17 38))(end_p(""2 17 39)))))))(position((start_p(""2 17 35))(end_p(""2 17 39)))))))))))(position((start_p(""1 0 0))(end_p(""2 17 39)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 41 45))(end_p(""4 41 49)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 41 52))(end_p(""4 41 55)))))))(position((start_p(""4 41 52))(end_p(""4 41 55))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""5 58 62))(end_p(""5 58 64)))))()))(position((start_p(""5 58 62))(end_p(""5 58 64)))))((value(Literal((value(LInt 42))(position((start_p(""5 58 65))(end_p(""5 58 67)))))))(position((start_p(""5 58 65))(end_p(""5 58 67)))))))(position((start_p(""5 58 62))(end_p(""5 58 67)))))))))(position((start_p(""4 41 41))(end_p(""5 58 67))))))

View file

@ -0,0 +1,5 @@
fun : int -> int
id (x : int) = id x
let main : int =
id 42

View file

@ -0,0 +1,2 @@
Error (typechecking)
This expression has type int which should be a function type.

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id double_omega))(position((start_p(""2 17 21))(end_p(""2 17 33)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 39))(end_p(""2 17 42)))))))(position((start_p(""2 17 34))(end_p(""2 17 43)))))((value(Apply((value(Apply((value(Variable((value(Id omega))(position((start_p(""3 46 50))(end_p(""3 46 55)))))()))(position((start_p(""3 46 50))(end_p(""3 46 55)))))((value(Variable((value(Id x))(position((start_p(""3 46 57))(end_p(""3 46 58)))))()))(position((start_p(""3 46 56))(end_p(""3 46 59)))))))(position((start_p(""3 46 50))(end_p(""3 46 59)))))((value(Variable((value(Id x))(position((start_p(""3 46 61))(end_p(""3 46 62)))))()))(position((start_p(""3 46 60))(end_p(""3 46 63)))))))(position((start_p(""3 46 50))(end_p(""3 46 63)))))))(((value(Id omega))(position((start_p(""5 81 85))(end_p(""5 81 90)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""4 64 70))(end_p(""4 64 73)))))((value(TyCon(TCon int)()))(position((start_p(""4 64 77))(end_p(""4 64 80)))))))(position((start_p(""4 64 70))(end_p(""4 64 80)))))))(position((start_p(""4 64 70))(end_p(""4 64 80))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 81 92))(end_p(""5 81 93)))))))(position((start_p(""5 81 92))(end_p(""5 81 93)))))((value(TyCon(TCon int)()))(position((start_p(""5 81 95))(end_p(""5 81 98)))))))(position((start_p(""5 81 91))(end_p(""5 81 99)))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""6 102 106))(end_p(""6 102 118)))))()))(position((start_p(""6 102 106))(end_p(""6 102 118)))))((value(Variable((value(Id x))(position((start_p(""6 102 120))(end_p(""6 102 121)))))()))(position((start_p(""6 102 119))(end_p(""6 102 122)))))))(position((start_p(""6 102 106))(end_p(""6 102 122)))))))))))(position((start_p(""1 0 0))(end_p(""6 102 122)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""8 124 128))(end_p(""8 124 132)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""8 124 135))(end_p(""8 124 138)))))))(position((start_p(""8 124 135))(end_p(""8 124 138))))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""8 124 141))(end_p(""8 124 153)))))()))(position((start_p(""8 124 141))(end_p(""8 124 153)))))((value(Literal((value(LInt 73))(position((start_p(""8 124 154))(end_p(""8 124 156)))))))(position((start_p(""8 124 154))(end_p(""8 124 156)))))))(position((start_p(""8 124 141))(end_p(""8 124 156)))))))))(position((start_p(""8 124 124))(end_p(""8 124 156))))))

View file

@ -0,0 +1,8 @@
fun : int -> int
double_omega (x : int) =
omega (x) (x)
and : int -> int
omega (x: int) =
double_omega (x)
let main : int = double_omega 73

View file

@ -0,0 +1,3 @@
double_omega : int -> int
omega : int -> int
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id double_omega))(position((start_p(""2 17 21))(end_p(""2 17 33)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 13))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16)))))))(position((start_p(""1 0 6))(end_p(""1 0 16))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 17 35))(end_p(""2 17 36)))))))(position((start_p(""2 17 35))(end_p(""2 17 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 17 39))(end_p(""2 17 42)))))))(position((start_p(""2 17 34))(end_p(""2 17 43)))))((value(Apply((value(Variable((value(Id omega))(position((start_p(""3 46 50))(end_p(""3 46 55)))))()))(position((start_p(""3 46 50))(end_p(""3 46 55)))))((value(Variable((value(Id x))(position((start_p(""3 46 57))(end_p(""3 46 58)))))()))(position((start_p(""3 46 56))(end_p(""3 46 59)))))))(position((start_p(""3 46 50))(end_p(""3 46 59)))))))(((value(Id omega))(position((start_p(""5 77 81))(end_p(""5 77 86)))))(((value(ForallTy()((value(TyArrow((value(TyCon(TCon int)()))(position((start_p(""4 60 66))(end_p(""4 60 69)))))((value(TyCon(TCon int)()))(position((start_p(""4 60 73))(end_p(""4 60 76)))))))(position((start_p(""4 60 66))(end_p(""4 60 76)))))))(position((start_p(""4 60 66))(end_p(""4 60 76))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 77 88))(end_p(""5 77 89)))))))(position((start_p(""5 77 88))(end_p(""5 77 89)))))((value(TyCon(TCon int)()))(position((start_p(""5 77 91))(end_p(""5 77 94)))))))(position((start_p(""5 77 87))(end_p(""5 77 95)))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""6 98 102))(end_p(""6 98 114)))))()))(position((start_p(""6 98 102))(end_p(""6 98 114)))))((value(Variable((value(Id x))(position((start_p(""6 98 116))(end_p(""6 98 117)))))()))(position((start_p(""6 98 115))(end_p(""6 98 118)))))))(position((start_p(""6 98 102))(end_p(""6 98 118)))))))))))(position((start_p(""1 0 0))(end_p(""6 98 118)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""8 120 124))(end_p(""8 120 128)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""8 120 131))(end_p(""8 120 134)))))))(position((start_p(""8 120 131))(end_p(""8 120 134))))))((value(Apply((value(Variable((value(Id double_omega))(position((start_p(""8 120 137))(end_p(""8 120 149)))))()))(position((start_p(""8 120 137))(end_p(""8 120 149)))))((value(Literal((value(LInt 73))(position((start_p(""8 120 150))(end_p(""8 120 152)))))))(position((start_p(""8 120 150))(end_p(""8 120 152)))))))(position((start_p(""8 120 137))(end_p(""8 120 152)))))))))(position((start_p(""8 120 120))(end_p(""8 120 152))))))

View file

@ -0,0 +1,8 @@
fun : int -> int
double_omega (x : int) =
omega (x)
and : int -> int
omega (x: int) =
double_omega (x)
let main : int = double_omega 73

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int * int
Given:
int * int * int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Variable((value(Id x))(position((start_p(""2 23 58))(end_p(""2 23 59)))))()))(position((start_p(""2 23 58))(end_p(""2 23 59)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 59)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 61 65))(end_p(""4 61 69)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 61 72))(end_p(""4 61 75)))))))(position((start_p(""4 61 72))(end_p(""4 61 75))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 61 78))(end_p(""4 61 81)))))()))(position((start_p(""4 61 78))(end_p(""4 61 81)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""4 61 83))(end_p(""4 61 84)))))))(position((start_p(""4 61 83))(end_p(""4 61 84)))))((value(Literal((value(LInt 4))(position((start_p(""4 61 86))(end_p(""4 61 87)))))))(position((start_p(""4 61 86))(end_p(""4 61 87)))))((value(Literal((value(LInt 4))(position((start_p(""4 61 89))(end_p(""4 61 90)))))))(position((start_p(""4 61 89))(end_p(""4 61 90))))))))(position((start_p(""4 61 82))(end_p(""4 61 91)))))))(position((start_p(""4 61 78))(end_p(""4 61 91)))))))))(position((start_p(""4 61 61))(end_p(""4 61 91))))))

View file

@ -0,0 +1,4 @@
fun : int * int -> int
fst ((x : int), (y : int)) = x
let main : int = fst (3, 4, 4)

View file

@ -0,0 +1,2 @@
fst : int * int -> int
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Variable((value(Id x))(position((start_p(""2 23 58))(end_p(""2 23 59)))))()))(position((start_p(""2 23 58))(end_p(""2 23 59)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 59)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 61 65))(end_p(""4 61 69)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 61 72))(end_p(""4 61 75)))))))(position((start_p(""4 61 72))(end_p(""4 61 75))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 61 78))(end_p(""4 61 81)))))()))(position((start_p(""4 61 78))(end_p(""4 61 81)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""4 61 83))(end_p(""4 61 84)))))))(position((start_p(""4 61 83))(end_p(""4 61 84)))))((value(Literal((value(LInt 4))(position((start_p(""4 61 86))(end_p(""4 61 87)))))))(position((start_p(""4 61 86))(end_p(""4 61 87))))))))(position((start_p(""4 61 82))(end_p(""4 61 88)))))))(position((start_p(""4 61 78))(end_p(""4 61 88)))))))))(position((start_p(""4 61 61))(end_p(""4 61 88))))))

View file

@ -0,0 +1,4 @@
fun : int * int -> int
fst ((x : int), (y : int)) = x
let main : int = fst (3, 4)

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int * int
Given:
int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""2 23 58))(end_p(""2 23 61)))))()))(position((start_p(""2 23 58))(end_p(""2 23 61)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 63))(end_p(""2 23 64)))))()))(position((start_p(""2 23 63))(end_p(""2 23 64)))))((value(Variable((value(Id x))(position((start_p(""2 23 66))(end_p(""2 23 67)))))()))(position((start_p(""2 23 66))(end_p(""2 23 67))))))))(position((start_p(""2 23 62))(end_p(""2 23 68)))))))(position((start_p(""2 23 58))(end_p(""2 23 68)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 68)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 70 74))(end_p(""4 70 78)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 70 81))(end_p(""4 70 84)))))))(position((start_p(""4 70 81))(end_p(""4 70 84))))))((value(Apply((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 70 87))(end_p(""4 70 90)))))()))(position((start_p(""4 70 87))(end_p(""4 70 90)))))((value(Literal((value(LInt 3))(position((start_p(""4 70 91))(end_p(""4 70 92)))))))(position((start_p(""4 70 91))(end_p(""4 70 92)))))))(position((start_p(""4 70 87))(end_p(""4 70 92)))))((value(Literal((value(LInt 4))(position((start_p(""4 70 93))(end_p(""4 70 94)))))))(position((start_p(""4 70 93))(end_p(""4 70 94)))))))(position((start_p(""4 70 87))(end_p(""4 70 94)))))))))(position((start_p(""4 70 70))(end_p(""4 70 94))))))

View file

@ -0,0 +1,4 @@
fun : int * int -> int
fst ((x : int), (y : int)) = fst (y, x)
let main : int = fst 3 4

View file

@ -0,0 +1,2 @@
fst : int * int -> int
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 29))(end_p(""2 23 32)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 35))(end_p(""2 23 36)))))))(position((start_p(""2 23 35))(end_p(""2 23 36)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 39))(end_p(""2 23 42)))))))(position((start_p(""2 23 34))(end_p(""2 23 43)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 46))(end_p(""2 23 47)))))))(position((start_p(""2 23 46))(end_p(""2 23 47)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 50))(end_p(""2 23 53)))))))(position((start_p(""2 23 45))(end_p(""2 23 54))))))))(position((start_p(""2 23 33))(end_p(""2 23 55)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""2 23 58))(end_p(""2 23 61)))))()))(position((start_p(""2 23 58))(end_p(""2 23 61)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 63))(end_p(""2 23 64)))))()))(position((start_p(""2 23 63))(end_p(""2 23 64)))))((value(Variable((value(Id x))(position((start_p(""2 23 66))(end_p(""2 23 67)))))()))(position((start_p(""2 23 66))(end_p(""2 23 67))))))))(position((start_p(""2 23 62))(end_p(""2 23 68)))))))(position((start_p(""2 23 58))(end_p(""2 23 68)))))))))))(position((start_p(""1 0 0))(end_p(""2 23 68)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 70 74))(end_p(""4 70 78)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 70 81))(end_p(""4 70 84)))))))(position((start_p(""4 70 81))(end_p(""4 70 84))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""4 70 87))(end_p(""4 70 90)))))()))(position((start_p(""4 70 87))(end_p(""4 70 90)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""4 70 92))(end_p(""4 70 93)))))))(position((start_p(""4 70 92))(end_p(""4 70 93)))))((value(Literal((value(LInt 4))(position((start_p(""4 70 95))(end_p(""4 70 96)))))))(position((start_p(""4 70 95))(end_p(""4 70 96))))))))(position((start_p(""4 70 91))(end_p(""4 70 97)))))))(position((start_p(""4 70 87))(end_p(""4 70 97)))))))))(position((start_p(""4 70 70))(end_p(""4 70 97))))))

View file

@ -0,0 +1,4 @@
fun : int * int -> int
fst ((x : int), (y : int)) = fst (y, x)
let main : int = fst (3, 4)

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
int * int
Given:
int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 27))(end_p(""2 23 30)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 33))(end_p(""2 23 34)))))))(position((start_p(""2 23 33))(end_p(""2 23 34)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 37))(end_p(""2 23 40)))))))(position((start_p(""2 23 32))(end_p(""2 23 41)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 44))(end_p(""2 23 45)))))))(position((start_p(""2 23 44))(end_p(""2 23 45)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 48))(end_p(""2 23 51)))))))(position((start_p(""2 23 43))(end_p(""2 23 52))))))))(position((start_p(""2 23 31))(end_p(""2 23 53)))))((value(Apply((value(Variable((value(Id snd))(position((start_p(""2 23 56))(end_p(""2 23 59)))))()))(position((start_p(""2 23 56))(end_p(""2 23 59)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 61))(end_p(""2 23 62)))))()))(position((start_p(""2 23 61))(end_p(""2 23 62)))))((value(Variable((value(Id x))(position((start_p(""2 23 64))(end_p(""2 23 65)))))()))(position((start_p(""2 23 64))(end_p(""2 23 65))))))))(position((start_p(""2 23 60))(end_p(""2 23 66)))))))(position((start_p(""2 23 56))(end_p(""2 23 66)))))))(((value(Id snd))(position((start_p(""5 91 95))(end_p(""5 91 98)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""4 68 74))(end_p(""4 68 77)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 80))(end_p(""4 68 83))))))))(position((start_p(""4 68 74))(end_p(""4 68 83)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 87))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 91 101))(end_p(""5 91 102)))))))(position((start_p(""5 91 101))(end_p(""5 91 102)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 105))(end_p(""5 91 108)))))))(position((start_p(""5 91 100))(end_p(""5 91 109)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""5 91 112))(end_p(""5 91 113)))))))(position((start_p(""5 91 112))(end_p(""5 91 113)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 116))(end_p(""5 91 119)))))))(position((start_p(""5 91 111))(end_p(""5 91 120))))))))(position((start_p(""5 91 99))(end_p(""5 91 121)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""5 91 124))(end_p(""5 91 127)))))()))(position((start_p(""5 91 124))(end_p(""5 91 127)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""5 91 129))(end_p(""5 91 130)))))()))(position((start_p(""5 91 129))(end_p(""5 91 130)))))((value(Variable((value(Id y))(position((start_p(""5 91 132))(end_p(""5 91 133)))))()))(position((start_p(""5 91 132))(end_p(""5 91 133))))))))(position((start_p(""5 91 128))(end_p(""5 91 134)))))))(position((start_p(""5 91 124))(end_p(""5 91 134)))))))))))(position((start_p(""1 0 0))(end_p(""5 91 134)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""7 136 140))(end_p(""7 136 144)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""7 136 147))(end_p(""7 136 150)))))))(position((start_p(""7 136 147))(end_p(""7 136 150))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""7 136 153))(end_p(""7 136 156)))))()))(position((start_p(""7 136 153))(end_p(""7 136 156)))))((value(Literal((value(LInt 3))(position((start_p(""7 136 157))(end_p(""7 136 158)))))))(position((start_p(""7 136 157))(end_p(""7 136 158)))))))(position((start_p(""7 136 153))(end_p(""7 136 158)))))))))(position((start_p(""7 136 136))(end_p(""7 136 158))))))

View file

@ -0,0 +1,7 @@
fun : int * int -> int
fst ((x : int), (y : int)) = snd (y, x)
and : int * int -> int
snd ((x : int), (y : int)) = fst (x, y)
let main : int = fst 3

View file

@ -0,0 +1,3 @@
fst : int * int -> int
snd : int * int -> int
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id fst))(position((start_p(""2 23 27))(end_p(""2 23 30)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""1 0 6))(end_p(""1 0 9)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 12))(end_p(""1 0 15))))))))(position((start_p(""1 0 6))(end_p(""1 0 15)))))((value(TyCon(TCon int)()))(position((start_p(""1 0 19))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22)))))))(position((start_p(""1 0 6))(end_p(""1 0 22))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 23 33))(end_p(""2 23 34)))))))(position((start_p(""2 23 33))(end_p(""2 23 34)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 37))(end_p(""2 23 40)))))))(position((start_p(""2 23 32))(end_p(""2 23 41)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""2 23 44))(end_p(""2 23 45)))))))(position((start_p(""2 23 44))(end_p(""2 23 45)))))((value(TyCon(TCon int)()))(position((start_p(""2 23 48))(end_p(""2 23 51)))))))(position((start_p(""2 23 43))(end_p(""2 23 52))))))))(position((start_p(""2 23 31))(end_p(""2 23 53)))))((value(Apply((value(Variable((value(Id snd))(position((start_p(""2 23 56))(end_p(""2 23 59)))))()))(position((start_p(""2 23 56))(end_p(""2 23 59)))))((value(Tuple(((value(Variable((value(Id y))(position((start_p(""2 23 61))(end_p(""2 23 62)))))()))(position((start_p(""2 23 61))(end_p(""2 23 62)))))((value(Variable((value(Id x))(position((start_p(""2 23 64))(end_p(""2 23 65)))))()))(position((start_p(""2 23 64))(end_p(""2 23 65))))))))(position((start_p(""2 23 60))(end_p(""2 23 66)))))))(position((start_p(""2 23 56))(end_p(""2 23 66)))))))(((value(Id snd))(position((start_p(""5 91 95))(end_p(""5 91 98)))))(((value(ForallTy()((value(TyArrow((value(TyTuple(((value(TyCon(TCon int)()))(position((start_p(""4 68 74))(end_p(""4 68 77)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 80))(end_p(""4 68 83))))))))(position((start_p(""4 68 74))(end_p(""4 68 83)))))((value(TyCon(TCon int)()))(position((start_p(""4 68 87))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90)))))))(position((start_p(""4 68 74))(end_p(""4 68 90))))))(FunctionDefinition((value(PTuple(((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""5 91 101))(end_p(""5 91 102)))))))(position((start_p(""5 91 101))(end_p(""5 91 102)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 105))(end_p(""5 91 108)))))))(position((start_p(""5 91 100))(end_p(""5 91 109)))))((value(PTypeAnnotation((value(PVariable((value(Id y))(position((start_p(""5 91 112))(end_p(""5 91 113)))))))(position((start_p(""5 91 112))(end_p(""5 91 113)))))((value(TyCon(TCon int)()))(position((start_p(""5 91 116))(end_p(""5 91 119)))))))(position((start_p(""5 91 111))(end_p(""5 91 120))))))))(position((start_p(""5 91 99))(end_p(""5 91 121)))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""5 91 124))(end_p(""5 91 127)))))()))(position((start_p(""5 91 124))(end_p(""5 91 127)))))((value(Tuple(((value(Variable((value(Id x))(position((start_p(""5 91 129))(end_p(""5 91 130)))))()))(position((start_p(""5 91 129))(end_p(""5 91 130)))))((value(Variable((value(Id y))(position((start_p(""5 91 132))(end_p(""5 91 133)))))()))(position((start_p(""5 91 132))(end_p(""5 91 133))))))))(position((start_p(""5 91 128))(end_p(""5 91 134)))))))(position((start_p(""5 91 124))(end_p(""5 91 134)))))))))))(position((start_p(""1 0 0))(end_p(""5 91 134)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""7 136 140))(end_p(""7 136 144)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""7 136 147))(end_p(""7 136 150)))))))(position((start_p(""7 136 147))(end_p(""7 136 150))))))((value(Apply((value(Variable((value(Id fst))(position((start_p(""7 136 153))(end_p(""7 136 156)))))()))(position((start_p(""7 136 153))(end_p(""7 136 156)))))((value(Tuple(((value(Literal((value(LInt 3))(position((start_p(""7 136 158))(end_p(""7 136 159)))))))(position((start_p(""7 136 158))(end_p(""7 136 159)))))((value(Literal((value(LInt 4))(position((start_p(""7 136 161))(end_p(""7 136 162)))))))(position((start_p(""7 136 161))(end_p(""7 136 162))))))))(position((start_p(""7 136 157))(end_p(""7 136 163)))))))(position((start_p(""7 136 153))(end_p(""7 136 163)))))))))(position((start_p(""7 136 136))(end_p(""7 136 163))))))

View file

@ -0,0 +1,7 @@
fun : int * int -> int
fst ((x : int), (y : int)) = snd (y, x)
and : int * int -> int
snd ((x : int), (y : int)) = fst (x, y)
let main : int = fst (3, 4)

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
`a
Given:
int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 20 26))(end_p(""2 20 28)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 11))(end_p(""1 0 13)))))((value(TyVar(TId `a)))(position((start_p(""1 0 17))(end_p(""1 0 19)))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 20 30))(end_p(""2 20 31)))))))(position((start_p(""2 20 30))(end_p(""2 20 31)))))((value(TyCon(TCon int)()))(position((start_p(""2 20 34))(end_p(""2 20 37)))))))(position((start_p(""2 20 29))(end_p(""2 20 38)))))((value(Variable((value(Id x))(position((start_p(""2 20 41))(end_p(""2 20 42)))))()))(position((start_p(""2 20 41))(end_p(""2 20 42)))))))))))(position((start_p(""1 0 0))(end_p(""2 20 42)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 44 48))(end_p(""4 44 52)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 44 55))(end_p(""4 44 58)))))))(position((start_p(""4 44 55))(end_p(""4 44 58))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""4 44 61))(end_p(""4 44 63)))))((((value(TyCon(TCon int)()))(position((start_p(""4 44 64))(end_p(""4 44 67)))))))))(position((start_p(""4 44 61))(end_p(""4 44 68)))))((value(Literal((value(LInt 37))(position((start_p(""4 44 70))(end_p(""4 44 72)))))))(position((start_p(""4 44 69))(end_p(""4 44 73)))))))(position((start_p(""4 44 61))(end_p(""4 44 73)))))))))(position((start_p(""4 44 44))(end_p(""4 44 73))))))

View file

@ -0,0 +1,4 @@
fun : [`a] `a -> `a
id (x : int) = x
let main : int = id<int> (37)

View file

@ -0,0 +1,2 @@
id : [`a] `a -> `a
main : int

View file

@ -0,0 +1 @@
(((value(DefineValue(RecFunctions((((value(Id id))(position((start_p(""2 20 26))(end_p(""2 20 28)))))(((value(ForallTy(((value(TId `a))(position((start_p(""1 0 7))(end_p(""1 0 9))))))((value(TyArrow((value(TyVar(TId `a)))(position((start_p(""1 0 11))(end_p(""1 0 13)))))((value(TyVar(TId `a)))(position((start_p(""1 0 17))(end_p(""1 0 19)))))))(position((start_p(""1 0 11))(end_p(""1 0 19)))))))(position((start_p(""1 0 6))(end_p(""1 0 19))))))(FunctionDefinition((value(PTypeAnnotation((value(PVariable((value(Id x))(position((start_p(""2 20 30))(end_p(""2 20 31)))))))(position((start_p(""2 20 30))(end_p(""2 20 31)))))((value(TyVar(TId `a)))(position((start_p(""2 20 34))(end_p(""2 20 36)))))))(position((start_p(""2 20 29))(end_p(""2 20 37)))))((value(Variable((value(Id x))(position((start_p(""2 20 40))(end_p(""2 20 41)))))()))(position((start_p(""2 20 40))(end_p(""2 20 41)))))))))))(position((start_p(""1 0 0))(end_p(""2 20 41)))))((value(DefineValue(SimpleValue(((value(Id main))(position((start_p(""4 43 47))(end_p(""4 43 51)))))(((value(ForallTy()((value(TyCon(TCon int)()))(position((start_p(""4 43 54))(end_p(""4 43 57)))))))(position((start_p(""4 43 54))(end_p(""4 43 57))))))((value(Apply((value(Variable((value(Id id))(position((start_p(""4 43 60))(end_p(""4 43 62)))))((((value(TyCon(TCon int)()))(position((start_p(""4 43 63))(end_p(""4 43 66)))))))))(position((start_p(""4 43 60))(end_p(""4 43 67)))))((value(Literal((value(LInt 37))(position((start_p(""4 43 69))(end_p(""4 43 71)))))))(position((start_p(""4 43 68))(end_p(""4 43 72)))))))(position((start_p(""4 43 60))(end_p(""4 43 72)))))))))(position((start_p(""4 43 43))(end_p(""4 43 72))))))

View file

@ -0,0 +1,4 @@
fun : [`a] `a -> `a
id (x : `a) = x
let main : int = id<int> (37)

View file

@ -0,0 +1,6 @@
Error (typechecking)
Type mismatch.
Expected:
`a
Given:
`b

Some files were not shown because too many files have changed in this diff Show more