Function 表达式中的函数数-SML

Function 表达式中的函数数-SML,function,sml,smlnj,Function,Sml,Smlnj,此表达式中有多少个函数?: 'a -> 'a -> ('a*'a) 另外,如何实现返回此类型的函数?我创建了一些函数,例如: 'a -> 'b -> ('a * b) 我是这样做的: fun function x y = (x,y); 但我尝试使用两个x输入,但在尝试输出第一个类型表达式时出错 谢谢你的帮助 为了能够有两个相同alpha类型的输入,我必须指定alpha的两个输入的类型 例如 ==> 假设这是家庭作业,我不想说太多->表示函数'a->'a->('a*'

此表达式中有多少个函数?:

'a -> 'a -> ('a*'a)
另外,如何实现返回此类型的函数?我创建了一些函数,例如:

'a -> 'b -> ('a * b)
我是这样做的:

fun function x y = (x,y);
但我尝试使用两个x输入,但在尝试输出第一个类型表达式时出错


谢谢你的帮助

为了能够有两个相同alpha类型的输入,我必须指定alpha的两个输入的类型

例如

==>


假设这是家庭作业,我不想说太多<类型表达式中的代码>->表示函数<代码>'a->'a->('a*'a)有两个箭头,所以2可能是你第一个问题的答案,尽管我觉得这个问题很模糊。每个
fun
恰好定义了一个函数,这个函数可能会为其输出返回一个函数。另外,你会问“表达式中有多少个函数…”,然后给出一个字符串,它实际上包含0个函数(类型描述描述描述函数,但不包含函数),所以答案可能是0


如果您想要一个
int->int->int*int
的自然示例,可以实现函数
divmod
,其中
divmod x y
返回一个元组,该元组由
x
除以
y
后的商和余数组成。例如,您希望
divmod 17 5
返回
(3,2)
。这是Python中的内置函数,但不是SML中的函数,但是可以使用内置运算符
div
mod
在SML中轻松定义。结果函数的类型应为
'a->'a->'a*'a
——但对于特定类型(即
int
)。你必须做一些不太自然的事情(比如你在回答问题时所做的事情)才能想出一个多态的例子。

对不起,我已经意识到我所做的,我是说函数x y=(x,y)我编辑了我的问题我删除了我的评论…我已经找到了答案。要做到这一点,我必须将每个输入转换为alphaNot“cast”,您只需要指定类型。SML不“做”铸造。这是一个很好的答案。如果没有对类型的任何假设,除了从传递的2中提取元素的表单元组之外,您真的不能做任何事情。很容易看出,给定类型只有4个不同的多态纯函数。
fun function (x:'a) (y:'a) = (x, y);
a' -> 'a -> (a' * 'a)