[英]Nested functions in F#
我有一个简单的函数,列出给定输入数的每个素数因子。 它由以下组成:
let rec f n x a =
if x = n then
x::a
elif n % x = 0 then
f (n/x) x (x::a)
else
f n (x+1) a
let fact n = f n 2 []
fact 315
val factors : int list = [7; 5; 3; 3]
它有效,但我想把它作为一个单一的函数:如何用直接嵌套的f
定义fact
? 我试图应用这里出色表达的概念,但我没有抽象如何在一个参数中嵌套三个参数函数( f
)( fact
)。
fact
的函数体移动到新线。 确保它缩进。 fact
声明和刚刚移动的函数体之间添加一个空行。 fun
定义, 并将其粘贴到您在第二步中创建的空白行中。 fact.
的本地函数fact.
您需要做的就是将递归函数f
移到fact
,然后调用它。 它将使用传递给fact
的参数:
let fact n =
let rec f n x a =
if x = n then
x::a
elif n % x = 0 then
f (n/x) x (x::a)
else
f n (x+1) a
f n 2 []
fact 315
//val it : int list = [7; 5; 3; 3]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.