From 1e9c3955bf2c17206c6dd536ebaf96a7e6f4f22d Mon Sep 17 00:00:00 2001 From: William Carroll Date: Mon, 24 Oct 2022 17:51:48 -0400 Subject: refactor(wpcarro/compiler): Modularize debug fns Define `debug.ml` and `prettify.ml` to clean-up some code. Change-Id: Iee2e1ed666f2ccb5e56cc50054ca85b8ba513f3b Reviewed-on: https://cl.tvl.fyi/c/depot/+/7078 Tested-by: BuildkiteCI Reviewed-by: wpcarro --- users/wpcarro/scratch/compiler/types.ml | 49 --------------------------------- 1 file changed, 49 deletions(-) (limited to 'users/wpcarro/scratch/compiler/types.ml') diff --git a/users/wpcarro/scratch/compiler/types.ml b/users/wpcarro/scratch/compiler/types.ml index 99f35cd5a57d..79c51c681240 100644 --- a/users/wpcarro/scratch/compiler/types.ml +++ b/users/wpcarro/scratch/compiler/types.ml @@ -9,23 +9,6 @@ type value = | ValueVarApplication of string * value | ValueBinder of string * value * value -let rec debug_value (x : value) : string = - match x with - | ValueLiteral (LiteralInt x) -> - Printf.sprintf "Int %d" x - | ValueLiteral (LiteralBool x) -> - Printf.sprintf "Bool %b" x - | ValueVariable x -> - Printf.sprintf "Var %s" x - | ValueFunction (name, x) -> - Printf.sprintf "Fn %s %s" name (debug_value x) - | ValueApplication (f, x) -> - Printf.sprintf "App %s %s" (debug_value f) (debug_value x) - | ValueVarApplication (name, x) -> - Printf.sprintf "App %s %s" name (debug_value x) - | ValueBinder (name, x, body) -> - Printf.sprintf "Bind %s %s %s" name (debug_value x) (debug_value body) - module FromString = Map.Make (String) type _type = @@ -34,43 +17,11 @@ type _type = | TypeVariable of string | TypeArrow of _type * _type -let rec debug_type (t : _type) : string = - match t with - | TypeInt -> "Integer" - | TypeBool -> "Boolean" - | TypeVariable k -> Printf.sprintf "%s" k - | TypeArrow (a, b) -> Printf.sprintf "%s -> %s" (debug_type a) (debug_type b) - type quantified_type = QuantifiedType of string list * _type -let debug_quantified_type (q : quantified_type) : string = - let QuantifiedType (vars, t) = q in - if List.length vars == 0 then - Printf.sprintf "%s" (debug_type t) - else - Printf.sprintf "forall %s. %s" (String.concat "," vars) (debug_type t) - type set = bool FromString.t type substitution = _type FromString.t -let debug_substitution (s : substitution) : string = - FromString.fold (fun k v acc -> Printf.sprintf "%s\"%s\" |-> %s;" acc k (debug_type v)) s "" - |> Printf.sprintf "{ %s }" - type env = quantified_type FromString.t -let debug_env (s : env) : string = - FromString.fold (fun k v acc -> Printf.sprintf "%s\"%s\" |-> %s;" acc k (debug_quantified_type v)) s "" - |> Printf.sprintf "{ %s }" - type inference = Inference of substitution * _type - -let debug_inference (Inference (s, t)) = - Printf.sprintf "type: %s; sub: %s" (debug_type t) (debug_substitution s) - -let rec pretty (t : _type) : string = - match t with - | TypeInt -> "Integer" - | TypeBool -> "Boolean" - | TypeVariable k -> Printf.sprintf "%s" k - | TypeArrow (a, b) -> Printf.sprintf "%s -> %s" (pretty a) (pretty b) -- cgit 1.4.1