Function 为什么此SML函数返回语法错误?

Function 为什么此SML函数返回语法错误?,function,functional-programming,sml,smlnj,ml,Function,Functional Programming,Sml,Smlnj,Ml,有些东西把事情搞砸了。。。。。该错误与上次使用的\u a 我没走多远,我已经从很多方面重新安排了逻辑。如您所见,第一个答案返回一个函数并返回一个函数。这就是我在这里所做的,据我所知,我遵循这些类型。可能有一些简单的东西我没有看到。的确很简单:标识符不能以下划线开头。因此,\uA被解析,就像您编写了\uA一样,符合词汇语法的常用最大蒙克规则 编辑:额外提示:您的函数没有类型'a list->'b,因为help返回'b的列表,而不是类型'b的单个值。此外,如文中所述,它可以更容易地实现为 fun f

有些东西把事情搞砸了。。。。。该错误与上次使用的
\u a


我没走多远,我已经从很多方面重新安排了逻辑。如您所见,第一个答案返回一个函数并返回一个函数。这就是我在这里所做的,据我所知,我遵循这些类型。可能有一些简单的东西我没有看到。

的确很简单:标识符不能以下划线开头。因此,
\uA
被解析,就像您编写了
\uA
一样,符合词汇语法的常用最大蒙克规则

编辑:额外提示:您的函数没有类型
'a list->'b
,因为
help
返回
'b
的列表,而不是类型
'b
的单个值。此外,如文中所述,它可以更容易地实现为

fun first_answer(my_f:('a -> 'b option)) : 'a list -> 'b =
let
fun help(_a:'a list) : 'a =
(((List.map valOf)o(List.filter isSome)o(List.map my_f)) _a)
in
help
end;

Error: syntax error: replacing WILD with SEMICOLON
或者说实际上,

fun first_answer f xs = List.mapPartial f xs

其实很简单:标识符不能以下划线开头。因此,
\uA
被解析,就像您编写了
\uA
一样,符合词汇语法的常用最大蒙克规则

编辑:额外提示:您的函数没有类型
'a list->'b
,因为
help
返回
'b
的列表,而不是类型
'b
的单个值。此外,如文中所述,它可以更容易地实现为

fun first_answer(my_f:('a -> 'b option)) : 'a list -> 'b =
let
fun help(_a:'a list) : 'a =
(((List.map valOf)o(List.filter isSome)o(List.map my_f)) _a)
in
help
end;

Error: syntax error: replacing WILD with SEMICOLON
或者说实际上,

fun first_answer f xs = List.mapPartial f xs