Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.51 KB | None | 0 0
  1. module Env
  2.  
  3. type Field =
  4.     | Arg of int
  5.     | Local of int
  6.  
  7. type Env = private Env of int * Map<string, Field>
  8.  
  9. let ofArgs args =
  10.     let map =
  11.         args
  12.         |> List.mapi (fun i local -> (local, Arg i))
  13.         |> Map.ofList
  14.     Env(0, map)
  15.  
  16. let addLocal name env =
  17.     match env with
  18.     | Env(next, map) ->
  19.         let map' = Map.add name (Local next) map
  20.        (Env(next + 1, map'), next)
  21.  
  22. let tryGetField name env =
  23.     match env with
  24.     | Env(_, map) -> Map.tryFind name map
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement