你好,我是新来的ML和写一个树形图功能,以下数据类型: datatype tree = NIL | CONS of (tree * tree) | LEAF of int;
这是我的树形图功能: fun treemap f = fn LEAF x => LEAF (f x)
| CONS(y,z) => CONS (treemap f y, treemap f z);
我知
我编写了这个函数来确定给定元素是否存储在元组列表的列表中,但是此刻它只搜索第一个列表。我将如何去搜索其他列表? fun findItem (name : command, ((x,y)::firstlist)::tail : (command*command) list list) =
if x = name then true else findItem(name, firstlist
这是我的第一个SML程序。我正在尝试编写一个函数,以列表形式将第一个数字返回到Hofstadter的女性或男性序列的第n个数字。我至今是: val m = fn (n) => if n = 0 then 1 :: [] else m f (n - 1);
val f = fn (n) => if n = 0 then 0 :: [] else f m (n - 1);
您可以了解这里的顺序:
这是我一直在研究的第二个SML程序。这些功能是相互递归的。如果我称奇(1),我应该是真的,甚至(1)我应该是假的。这些函数应该适用于所有正整数。然而,当我运行这个程序: fun
odd (n) = if n=0 then false else even (n-1);
and
even (n) = if n=0 then true else odd (n-1);
我得到:
所以我试图用ML的参考类型实现bubblesort。我编译了Poly/ML中的代码,似乎“while(!flag)”循环只对任何输入执行一次。 例如:[2,3,1]被“排序”为[2,1,3],即第一个循环工作但第二个循环未运行。 “标志”打印一次。 怎么了? 谢谢。 fun bubbleSort l = (* l being a list of references *)
let
v
我正在设置一个函数,它将模拟循环,直到满足条件。 我的总体计划是使用递归,但我试图首先获得基础知识。 我得到了一个基本的函数,使用If语句来查看X的值是什么。我打算使用递归来将X用作计数器,但我会在稍后讨论它。 我现在主要关心的是,看来我只能在“then”语句后执行1个命令。 fun whileloop (x,a) =
if (x<4)
then a+1
else a