Ajout des types et des fonctions à implémenter.
This commit is contained in:
parent
107cef8edd
commit
1d760b1565
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
_build
|
||||
pieuvre
|
||||
main.native
|
||||
|
||||
*.kate-swp
|
||||
|
||||
28
pieuvre.ml
28
pieuvre.ml
@ -0,0 +1,28 @@
|
||||
open Structs
|
||||
|
||||
exception TODOException;;
|
||||
|
||||
(* Affiche un λ-terme avec la même syntaxe qu’en entrée *)
|
||||
let affiche_lam (l: lam) : unit =
|
||||
raise TODOException
|
||||
;;
|
||||
|
||||
(* Teste si les deux λ-termes l1 et l2 sont α-convertibles *)
|
||||
let alpha (l1: lam) (l2: lam) : bool =
|
||||
raise TODOException
|
||||
;;
|
||||
|
||||
(* Fait un pas de β-réduction, et renvoie None si on a une forme normale *)
|
||||
let betastep (l: lam) : lam option =
|
||||
raise TODOException
|
||||
;;
|
||||
|
||||
(* Affiche les réductions du λ-terme l jusqu’à atteindre une forme normale, ou part en boucle infinie *)
|
||||
let reduce (l:lam) : unit =
|
||||
raise TODOException
|
||||
;;
|
||||
|
||||
(* Vérifie que le λ-terme l sous l'environnement env a bien le type t *)
|
||||
let typecheck (env: gam) (l: lam) (t: ty) : bool =
|
||||
raise TODOException
|
||||
;;
|
||||
16
structs.ml
Normal file
16
structs.ml
Normal file
@ -0,0 +1,16 @@
|
||||
(* Variables des λ-termes *)
|
||||
type var = string;;
|
||||
(* Variable des types simples *)
|
||||
type tvar = string;;
|
||||
|
||||
(* Type complexe *)
|
||||
type ty = TSimple of tvar | TImpl of ty * ty | TFalse;;
|
||||
|
||||
(* λ-terme *)
|
||||
type lam = LFun of var * ty * lam | LApp of lam * lam | LVar of var | LExf of lam * ty;;
|
||||
|
||||
(* Environnement de typage *)
|
||||
type gam = (tvar * ty) list;;
|
||||
|
||||
(* λ-terme avec des trous *)
|
||||
type lho = (lam list) -> lam;;
|
||||
Loading…
x
Reference in New Issue
Block a user