在SML中有多种书写thunk的方法吗?
基本问题: 我有需要惰性评估的数据,最常用的方法是发出在SML中有多种书写thunk的方法吗?,sml,ml,thunk,Sml,Ml,Thunk,基本问题: 我有需要惰性评估的数据,最常用的方法是发出thunks;我习惯于这样做: fun someFunc () = let fun myThunk () = 2 + 2 in (* body *) end fun someFunc () = let val myThunk = fn () => 2 + 2 in (* body *) end 但是标准ML的每个指南都告诉我它是这样做的: fun someFunc () =
thunk
s;我习惯于这样做:
fun someFunc () =
let
fun myThunk () = 2 + 2
in
(* body *)
end
fun someFunc () =
let
val myThunk = fn () => 2 + 2
in
(* body *)
end
但是标准ML的每个指南都告诉我它是这样做的:
fun someFunc () =
let
fun myThunk () = 2 + 2
in
(* body *)
end
fun someFunc () =
let
val myThunk = fn () => 2 + 2
in
(* body *)
end
所以我的问题是:这真的重要吗?输出结果不是一样吗?创建函数和将lambda绑定到值之间有什么区别?在您的情况下没有明显的区别。
fun
关键字是val rec
的语法糖,它确保您可以以递归方式引用要将函数绑定到的名称
因此
都将产生相同的结果。在您的案例中没有明显的差异。
fun
关键字是val rec
的语法糖,它确保您可以以递归方式引用要将函数绑定到的名称
因此
都将产生相同的结果