| ...
| Let of ((name * prog) list * prog)
| ...
Как мне сделать следущее:
let eval env p =
match p with
| Let (decls, body) ->
let rec frame = lazy List.fold addDecl env decls
and addDecl env (name, body) = Map.add name (delayEval frame body) env
eval (frame.Force()) body
Чтобы frame не спотыкался сам о себя? Если что, delayEval ожидает на вход env Lazy и не делает ему .Force(), но один хрен всё падает с NPE при инициализации frame.
У нас жадные вычисления, поэтому передача frame в delay в мучуал рекурсив let печально кончится да.
Обсуждают сегодня