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)