小编efr*_*rey的帖子

词法和静态范围之间的区别是什么?

为来自其他语言的人进行R编程时, John Cook说

R使用词法作用域,而S-PLUS使用静态作用域.差异可能很微妙,特别是在使用闭包时.

我发现这很奇怪,因为我一直认为词法范围和静态范围是同义词.

词汇和静态范围是否有明显的属性,或者这是一种区别,从社区到社区,人与人之间的区别?如果是这样,那么一般的阵营是什么?我如何将它们区分开来,以便在他们使用这些词语时我能更好地理解某些人的意思.

language-agnostic scope lexical-scope

12
推荐指数
1
解决办法
1217
查看次数

为什么OCaml std lib有这么多非尾递归函数?

我最近一直在重写许多OCaml标准库函数,以便进行尾递归.鉴于这需要直接进行CPS转换,我仍然不知道为什么默认版本不是这样编写的.

例如,在标准库中,map定义为:

let rec map f = function
    []   -> []
  | a::l -> let r = f a in r :: map f l
Run Code Online (Sandbox Code Playgroud)

我把它重写为:

let map f l =
  let rec aux l k = match l with
      []   -> k []
    | a::l -> aux l (fun rest -> k (f a :: rest))
  in aux l (fun x -> x)
Run Code Online (Sandbox Code Playgroud)

ocaml tail-recursion continuation-passing

12
推荐指数
2
解决办法
1228
查看次数