ml

    0热度

    1回答

    我正在写一个函数式语言(ML)的几个递归函数,并在其中几个是必须保持计数。我不允许使用尾递归或辅助函数。我应该如何保持计数? 例如,如果有一个问题需要删除字符串的第n个元素,那么在删除该元素之前,如何知道递归函数已被调用n次?

    1热度

    1回答

    我正在使用两个函数。一个列表,第二个对列表元素进行一些工作。第二个功能,multinHelp,是给我的错误 “标准输入:79.6-79.16错误:未绑定变量或构造函数:multinHelp” fun multin(L)= let val a = hd(L) val b = hd(tl(L)) val c = hd(tl(tl(L))) in multinHelp([a,b,c]) e

    0热度

    1回答

    我正在为类的函数工作,并且出现此错误。 错误:操作符和操作数不赞同[tycon失配] 运营商域: 'Z列表 操作数:' Y列表 - >“Y列表在表达 : 空tl fun removedub(L) = if (null L) then nil else if (null tl(L)) then hd(L) else if hd(L) = hd(tl(L)) then r

    0热度

    1回答

    在ML中工作我有一个递归函数,用if,then,else编写。该函数有两个基本情况,空列表和空列表的尾部。第一个基本情况很容易转换为模式匹配样式。 if(Null L) then false 成为 fun oddNum(nil) = false 我不知道如何编写模式匹配风格等基本情况。 else if (Null tl(L)) then true 我已经试过这 | oddNum(nil

    0热度

    1回答

    我正在写入一种形式的OCaml转换形式,它接受函数并接受一个列表进行转换。我明白我的模式匹配在类型检查方面有些问题,因为它不会编译并声明类型不匹配,但我不确定我的情况究竟出了什么问题。 当我尝试编译时,我收到一个实际的声明错误,强调函数的名称。 let rec convert (fun: 'b -> 'c option) (l: 'b list) : 'c list = begin match

    1热度

    1回答

    我有一个ML编程任务,并在几个函数中,保持计数是有用的。例如,在一个函数中,我需要返回一个元素出现的索引列表。我不知道如何在递归中跟踪这些事情,因为曾经的函数调用会杀死我的数量。在现实世界中,我会考虑计数变量,但这在学校中不是一种选择。有小费吗?

    1热度

    1回答

    下面是使用梯形方法计算定积分的SML代码,给定输入f =一元函数a & b =在积分下的范围,以及n =除以子区间的数量进入的范围。 fun integrate f a b n = let val w = (b - a)/(real n) fun genBlock c = let val BB = f c val SB = f (c+w) in (BB + SB) *

    1热度

    1回答

    我正在写一个递归ML函数,它接受一个字符串和一个索引值,并将该字符串分割给定索引。该函数应该返回一个包含两个字符串的列表。 据我所知,我需要两个基本案例来检查是否已达到索引,另一个检查字符串是否超出字符。我被困在如何将字符分配给不同的字符串。请注意,我使用了一个辅助函数来清除最初的调用,这样在每次函数调用时都不需要输入爆炸。 fun spliatHelp(S, num) = if nul

    0热度

    1回答

    ML的功能,将接受一个布尔函数和值的列表,并在满足特定条件或无如果列表中没有价值做返回列表中的最后一个值 我目前的函数看起来像这样的: fun last func nil = NONE | last func L = let val f = fun getlast(x) = SOME x | getlast(x::xs) = getlast xs in

    1热度

    1回答

    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