ml

    -1热度

    1回答

    我已经定义了三个不同的函数来执行计算并返回一个值。这些函数将一直重新定义变量,直到达到特定条件。我有问题让这些在“循环”场景中运行。我知道函数式语言并不适合执行循环,而应该使用递归式......但我很难包围如何执行此操作。 我会做一些真正简单的任意函数来解释我的情况。 fun add_them (a,b) = a+b; fun substract_them (c,d) =

    1热度

    1回答

    我试图在ML中实现最后一个。最后可以返回列表的最后一个元素。 例如,L = [1,2,3,4],last(L)= 4。这是我的实现。 fun last [] = last((h::nil)) = h | last((h::tail)) = last(tail); 它给我“未绑定变量或构造函数:h”。在我的理解中,h是我声明的一个变量,代表列表的头部,为什么会在变量h上发生错误?

    0热度

    1回答

    我想观察某些文件的变化,并在发生这种情况时对它们做些什么

    1热度

    1回答

    你好,我是新来的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); 我知

    2热度

    2回答

    我编写了这个函数来确定给定元素是否存储在元组列表的列表中,但是此刻它只搜索第一个列表。我将如何去搜索其他列表? fun findItem (name : command, ((x,y)::firstlist)::tail : (command*command) list list) = if x = name then true else findItem(name, firstlist

    1热度

    2回答

    这是我的第一个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); 您可以了解这里的顺序:

    1热度

    2回答

    这是我一直在研究的第二个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); 我得到:

    3热度

    1回答

    所以我试图用ML的参考类型实现bubblesort。我编译了Poly/ML中的代码,似乎“while(!flag)”循环只对任何输入执行一次。 例如:[2,3,1]被“排序”为[2,1,3],即第一个循环工作但第二个循环未运行。 “标志”打印一次。 怎么了? 谢谢。 fun bubbleSort l = (* l being a list of references *) let v

    1热度

    1回答

    我试图将Paulson's ML的代码转换为工作程序员的书第9章编写λ演算的解释器。 我想知道是否有人可以帮我把这个翻译成哈斯克尔。 我很努力去理解语法。 fun list ph = ph -- repeat ("," $-- ph) >> (op::); fun pack ph = "(" $-- list ph --$")" >> #1 | empty;

    1热度

    1回答

    我正在设置一个函数,它将模拟循环,直到满足条件。 我的总体计划是使用递归,但我试图首先获得基础知识。 我得到了一个基本的函数,使用If语句来查看X的值是什么。我打算使用递归来将X用作计数器,但我会在稍后讨论它。 我现在主要关心的是,看来我只能在“then”语句后执行1个命令。 fun whileloop (x,a) = if (x<4) then a+1 else a