Guest User

Untitled

a guest
Jul 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. let println expr : string =
  2. let rec print expr =
  3. match expr with
  4. | Application(expr1, expr2) ->
  5. // Function application.
  6. print expr1 + " " + print expr2
  7.  
  8. | SpecificCall <@@ (+) @@> (_, _, exprList) ->
  9. // Matches a call to (+). Must appear before Call pattern.
  10. print exprList.Head + " + " + print exprList.Tail.Head
  11.  
  12. | Int32(n) -> n.ToString()
  13. | Lambda(param, body) ->
  14. // Lambda expression.
  15. "fun (%s:%s) -> " + param.Name + (param.Type.ToString()) + print body
  16. | Let(var, expr1, expr2) ->
  17. let letPart = var.IsMutable |> function
  18. // Let binding.
  19. | true -> "let mutable %s = " + var.Name
  20. | _ -> "let %s = " + var.Name
  21. letPart + print expr1 + " in " + print expr2
  22. | PropertyGet(_, propOrValInfo, _) ->
  23. propOrValInfo.Name
  24. | String(str) ->
  25. str
  26. | Value(value, typ) ->(value.ToString())
  27. | Var(var) ->
  28. var.Name
  29. | _ -> (expr.ToString())
  30. print expr
Add Comment
Please, Sign In to add comment