This commit is contained in:
Mylloon 2023-11-28 01:59:55 +01:00
parent ae2b764821
commit 3ee85d7766
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -67,18 +67,21 @@ let rec synth_expression
: HopixTypes.typing_environment -> HopixAST.expression Position.located : HopixTypes.typing_environment -> HopixAST.expression Position.located
-> HopixTypes.aty -> HopixTypes.aty
= =
fun env Position.{ value = e; position = pos } -> function fun env Position.{ value = e; position = pos } ->
| Literal l -> type_of_literal l.value match e with
| Variable(id,tlist) -> failwith "Students! This is your job! Variable" | Literal l -> type_of_literal l.value
| Tagged(cons,_,[]) -> HopixTypes.hbool (*Pas sûr, j'ai regardé comme dans hopixInterpreter au début*) | Variable (id, tlist) -> failwith "Students! This is your job! Variable"
| Apply(a,b) -> failwith "Students! This is your job! Apply" | Tagged (cons, _, []) ->
| Record(field,tliste) -> failwith "Students! This is your job! Record" HopixTypes.hbool (*Pas sûr, j'ai regardé comme dans hopixInterpreter au début*)
| Fun(_) -> failwith "Students! This is your job! Fun synth" (* TODO : ici on ne peut pas synthesisé. cf Cours*) | Apply (a, b) -> failwith "Students! This is your job! Apply"
| TypeAnnotation(expr,t) -> failwith "Students! This is your job! TypeAnnotation" | Record (field, tliste) -> failwith "Students! This is your job! Record"
| Fun _ ->
failwith "Students! This is your job! Fun synth"
(* TODO : ici on ne peut pas synthesisé. cf Cours*)
| TypeAnnotation (expr, t) -> failwith "Students! This is your job! TypeAnnotation"
and type_of_literal l = and type_of_literal l =
match l with match l with
| LInt _ -> HopixTypes.hint | LInt _ -> HopixTypes.hint
| LChar _ -> HopixTypes.hchar | LChar _ -> HopixTypes.hchar
| LString _ -> HopixTypes.hstring | LString _ -> HopixTypes.hstring
@ -87,16 +90,16 @@ and check_expression
: HopixTypes.typing_environment -> HopixAST.expression Position.located : HopixTypes.typing_environment -> HopixAST.expression Position.located
-> HopixTypes.aty -> unit -> HopixTypes.aty -> unit
= =
fun env (Position.{ value = e; position = pos } as exp) expected -> function fun env (Position.{ value = e; position = pos } as exp) expected ->
| Fun df -> failwith "Students! This is your job! Fun check" match e with
| Fun df -> failwith "Students! This is your job! Fun check"
| _ -> failwith "Students! This is your job! check_expression wildcard"
and check_value_definition and check_value_definition
: HopixTypes.typing_environment -> HopixAST.value_definition : HopixTypes.typing_environment -> HopixAST.value_definition
-> HopixTypes.typing_environment -> HopixTypes.typing_environment
= =
fun env -> function fun env -> function
| SimpleValue (id, Some ty, ex) -> | SimpleValue (id, Some ty, ex) ->
failwith "Students! This is your job! (check_value_definition | SimpleValue)" failwith "Students! This is your job! (check_value_definition | SimpleValue)"
| RecFunctions _ -> | RecFunctions _ ->