我的职能是:
fun x (u,v,w) = (u::[v])::w;的返回类型
fn: 'a * 'a * 'a list list -> 'a list list有人能向我解释这种类型是如何从函数中产生的吗?谢谢!
编辑:还有,我如何调用这个函数?
发布于 2013-12-12 20:45:43
::采用两个参数--一个在左边,一个在右边。如果它的左参数是t类型,那么它的右参数必须是t list类型。
因此,::具有('a * 'a list) -> 'a list类型,因为t是任意的,因此由'a表示。
因此,当您拥有代码(u::[v])时,您将告诉SML u : t和'v : t用于某种类型的t。这个表达式就是一个t list,因此要将它用作::的左参数,右参数w必须具有t list list类型。
这就给出了(u::[v])::w的类型是t list list,对于某些t。
总结如下:
u : t
v : t
w : t list
(u::[v])::w : t list list,
都是为了某种类型的t。
因此,x的类型是('a * 'a * 'a list) -> 'a list list,因为t是任意的。
要调用这个函数,您可以执行类似于x(1,2,[3,4])的操作,这将给列表[[1,2],[3,4]]。
https://stackoverflow.com/questions/20552753
复制相似问题