gpt4 book ai didi

sml - 新泽西州 ML 中的嵌套本地声明

转载 作者:行者123 更新时间:2023-12-04 00:08:26 25 4
gpt4 key购买 nike

大家好,我有这段代码:

local
helper(f, i, j) = local
fun NTimesF(f, n:int) =
if n = 1 then fn (x) => f(x)
else fn (x) => f(NTimesF(f, n - 1)(x));
in
if(i <= j) then NTimesF(f, i) :: helper(f, (i+1), j)
else []
end
in
fun compList f n = helper(f, 1, n);
end;

我需要编写程序来接收一些函数 f 和整数 n 并生成函数列表,例如 [f1, f2, ... fn] <- fn 是函数 n 次的组合,但每次我收到错误时:
- stdIn:1.1-2.9 Error: syntax error: deleting  LOCAL ID LPAREN
stdIn:2.10-2.14 Error: syntax error: deleting COMMA ID COMMA
stdIn:2.16-2.25 Error: syntax error: deleting RPAREN EQUALOP LOCAL
stdIn:3.6-3.17 Error: syntax error: deleting FUN ID
stdIn:4.6-4.10 Error: syntax error: deleting IF ID
stdIn:4.15-4.22 Error: syntax error: deleting THEN FN
stdIn:4.27-4.31 Error: syntax error: deleting DARROW ID
stdIn:5.6-5.13 Error: syntax error: deleting ELSE FN
stdIn:5.16-5.22 Error: syntax error: deleting RPAREN DARROW ID
stdIn:6.8-7.8 Error: syntax error: deleting IN IF
stdIn:7.17-7.29 Error: syntax error: deleting THEN ID
stdIn:8.6-8.13 Error: syntax error: deleting ELSE LBRACKET RBRACKET
stdIn:9.8-11.5 Error: syntax error: deleting END IN FUN

似乎我的嵌套本地声明是错误的,有人可以解释为什么吗?

最佳答案

SML 中定义局部函数和变量有两种方式:local ... in ... endlet ... in ... end .
local的区别和 let是与 local in之间有什么关系和 end是一个或多个变量或函数声明。与 let in之间有什么关系和 end是一个表达式。

不像 local , let是一个表达式和一个 let 的值expression 是 in 之间的表达式的值和 end .

因为在您的情况下,您在 in 之间有一个表达式和 end (并且您希望函数计算该表达式的结果),您需要使用 let ,不是 local .

关于sml - 新泽西州 ML 中的嵌套本地声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com