I have a function called mergeP: fun mergeP(nil) = nil
| mergeP(x::[]) = x::[]
| mergeP(x::y::zs) = (x @ y)::mergeP(zs);
If mergeP is called like: mergeP([[1],[2],[3],[4]]) it will return [[1,2],[
零参数的功能如果有一个功能富这样的: fun foo() = 10
当我想运行富,我写的是这样的: val bar = foo
但酒吧变成函数(单位 - > INT)不是10 所以我TR ied像这样: val int bar = foo
但它会报错。所以,我想是这样的: fun foo x = 10
val bar = foo 0
最后我得到酒吧 = 10,但它看起来太可怕了
据我所知,在SML模块中,为防止每个类型被不透明签名归属隐藏,可以在签名中指定具体类型。 我试图做一个仿函数来做符号表,隐藏表类型但是让条目类型透明。但是每当我做不透明归属时,我都无法访问入口类型。下面是我的签名和函子: signature ST_ENTRY = sig
type entry
val name : entry -> string
end
signature
无论如何要组合这两个函数,它们需要一个列表并返回最高和最低元素。想要同时输出。欢呼声 fun max[] = raise Empty
max[x] = x
max(x::xs) =
let
val y = max xs
in
if x > y then x else y
end;
fun min[] = raise Empt
val g1 = fn x => fn y => fn z => (x y) :: z;
val g1 = fn : ('a -> 'b) -> 'a -> 'b list -> 'b list
这是代码和输出。我不知道为什么输出是这样的。 我明白'b list -> 'b list因为z显然是一个列表,所以(x y) :: z也是列表。 但是,我不明白为什么fn x => fn y是('a
fun randomList(n) = let
val theList = []
val min = 1
val max = 75
val nextInt = Random.randRange(min,max)
val r = Random.rand(1,1)
val randomValue = nextInt r
in