SML 或多或少的大型系统:编译器和解释器的互操作性
这是关于使用 SML 进行大型编程的。首先是对该目的似乎可用的内容的摘要,然后是一个小摘要,最后是一个简单的问题。 use 伪子句 Top-level type, exception, and value identifiers (standardml.org) 请注意,使用功能是特殊的。虽然 没有精确定义,其预期目的是 获取文件的路径名并处理 文件内容为输入的 SML 源... »
这是关于使用 SML 进行大型编程的。首先是对该目的似乎可用的内容的摘要,然后是一个小摘要,最后是一个简单的问题。 use 伪子句 Top-level type, exception, and value identifiers (standardml.org) 请注意,使用功能是特殊的。虽然 没有精确定义,其预期目的是 获取文件的路径名并处理 文件内容为输入的 SML 源... »
有没有办法使用 SML 中可用的 Foldl 或 Foldr 方法来实现冒泡排序?任何指导都会有所帮助。 我相信你可以。使用 foldl 可能需要... »
我正在尝试创建一个函数,将 SML 中整数的数字求和,但出现以下错误。 Error: operator and operand don't agree [overload conflict] operator domain: real * real operand: [* ty] * [* ty] in expression: n / (d * 10) 我... »
我正在做这个家庭作业,我在这个问题上被困了大约 3 个小时。我刚刚给教授发了电子邮件,但还没有收到他们的回复,所以我决定也在这里问。 我们被分配编写各种函数,例如以 (14, 2) 格式查找分数的 gcd,其中 14 是分子,2 是分母。 我已经完成了 gcd、simplified、add 和 times 函数,但我卡在 addAll 上。 addAll 应该获取一个描述为坐标对的分数列表,并将它... »
我必须在 SML/NJ 中编写一个函数,该函数在给定列表中计算连续相等的元素并返回对(值,计数)的列表。函数应该是这样的: fun group (xs: ''a list): (''a * int) list 我只能使用匿名函数和结构 List、ListPair 和 Math。 我不知道该怎么做。有人可以帮帮我吗?... »
我有这个问题要解决 我已经设法解决它,但没有该函数 execute_ops。这是我的解决方案: datatype list_op = insert of int*int | delete of int | setsize of int; exception wrong_case; fun insert(x,pos,nil) = [x] | insert(x,pos,h::t) = if... »
我不太明白以下函数背后的逻辑。此函数用于汇总列表中的数字。但是导师并没有过多地讲述::在这里做了什么。 教程中的原始列表在列表中有 5 个数字/项目 (1,3,5,7,9)。我以为导师先用五个字母(a,r,e,s,t)命名这些项目,但功能仍然适用于项目多于或少于 5 个的列表。那怎么会呢? - fun sum([]) = 0 | sum(a::rest)= a + sum(rest); 据我所知... »
我想将此 ML 代码翻译成 F#。 fun take ([], i) = [] | take (x::xs, i) = if i > 0 then x::take(xs, i-1) else []; 我试过这个 let rec take n i = match n,i with | [], i -&g... »
我的 SML 代码在交替使用 2 个列表元素时遇到了困难。我必须创建一个最终列表,该列表将采用 2 个相同大小的列表并交替它们的元素。一个例子是 alternate([1,3,5],[2,4,6]) = [1,2,3,4,5,6] 我不确定代码哪里出错了。任何帮助将不胜感激。这是我目前拥有的代码 fun alternate2([],y) = [] | alternate2(a::x,... »
我有这个代码来过滤第一个字母是大写的字符串列表: fun f s = Char.isUpper(String.sub(s,0)); fun only_capitals (xs : string list) = List.filter(f , xs); 但是编译的时候总是报错: operator domain: 'Z -> bool operand: (string -&g... »
首先,由于这个问题与学校项目有关,我认为发布我的代码不合适。另外,正如我稍后解释的那样,我只有相关代码的修改版本。 我自己解释一下。我应该使用优先级队列来实现 Dijkstra 算法的一个版本。我认为这样做的一种简单的功能方法是定义一个 dijkstra 函数,其中输入队列和目标节点以及一个辅助函数,以将与刚刚出队的列表元素相邻的节点入队。不幸的是,辅助函数没有进行类型检查 - 未解析的 Fle... »
我有以下qtree 数据类型: datatype 'a qtree = Leaf of 'a | Node of 'a branches and 'a branches = Empty | Branch of 'a qtree * 'a branches 示例树定义如下: val tr1 = Node(Branch(Leaf(2), Branch(Node(Branch(... »
依赖类型系统似乎支持 ML 模块系统的某些用途。你从一个模块系统中得到了什么,而你没有从依赖记录中得到什么? 模块~记录 签名~记录类型 functor ~ 记录上的函数 带有抽象类型组件的模块~带有类型字段的依赖记录 我感兴趣的是它作为一个模块系统的工作情况,以及您是否以及如何集成应用函子和 mixins 等功能。 ... »
如何在 SML 中递归拆分数字 n? fun halves (n : int) : int * int = let val x = 0 val y = x+1 in case n of x => (n,x) |y => (n,y) |_ => halves(n-1) end... »
我正在尝试在 SML 中的 BST 中查找节点的父节点和祖父节点。 我已尝试修改此功能: fun search(tree : bst, compare, (data) = let fun s(Leaf) = NONE | s(Node{data=nodedata,left=left,right=right}) = (case co... »
datatype term = node of string*term list | vnode of string 我有一个 term 类型的值。如何在 SML 中将其打印到标准输出?... »
SML 长度函数: fun length(L) = if (L=nil) then 0 else 1+length(tl(L)); 例如: length [1,2,3] = 3; length [ [5], [4], [3], [2,1] ] = 4; 根据代码,如果我也想统计列表中的元素,怎么改? 例如: length [ [5], [4], [3], [2,1]... »
我正在尝试在 SML 中编写一个函数来计算交替谐波级数的部分和,而对于我来说,我无法弄清楚为什么编译器会说其中一种情况是多余的。我之前没有使用过 case 语句(或本地的,就此而言),但这些 case 的顺序对我来说似乎是正确的。 local fun altHarmAux (x:int, y:real) = case x of 1 => 1.0 ... »
相关:Lazy datatypes in Objective C 从相关问题中,我能够弄清楚如何使用块对象来模拟暂停计算,但我仍在努力掌握这个概念。对于horribleComputation,它可以工作,但是如何为无限流建模? 在 SML 中通常是如何完成的, (* Have a datatype to wrap a computation *) datatype 'a susp = Su... »
当f(x-1)被调用时,是调用f(x) = x+10还是f(x) = if ... 这是尾递归吗? 我应该如何使用静态/动态分配重写它? let fun f(x) = x + 10 in let fun f(x) = if x < 1 then 0 else f(x-1) in f(3) end end... »