【发布时间】:2010-04-03 08:09:34
【问题描述】:
在 F# 中:
> let f x = x + 2;;
val f : int -> int
> let g x = f x;;
val g : int -> int
> g 10;;
val it : int = 12
> let f x = x + 3;;
val f : int -> int
> g 10;;
val it : int = 12
在 Clojure 中:
1:1 user=> (defn f [x] (+ x 2))
#'user/f
1:2 user=> (defn g [x] (f x))
#'user/g
1:3 user=> (g 10)
12
1:4 user=> (defn f [x] (+ x 3))
#'user/f
1:5 user=> (g 10)
13
请注意,在 Clojure 中,最新版本的 f 在最后一行被调用。然而,在 F# 中仍然调用 f 的旧版本。为什么会这样?它是如何工作的?
【问题讨论】:
标签: f# comparison clojure