SML元组-组合

我遇到了一个元组问题,给定一个成对元组列表,它应该变成一对列表:即[(1,2)、(3,4)、(5,6)]应该返回([1,3,5],[2,4,6]) 我已尝试使用以下代码解决此问题: fun convert L = foldl (fn(a,b) => #1a::b) [] L; 但我得到一个错误,说:未解决的flex记录。 有人能解释为什么我会得到这个,以及如何修复它吗 我手边没有SML解释器,但我想您正在寻找。尝试: IIRC,“未解决的flex记录”与记录匹配有关,而您在这里没有使用

SML-未捕获异常为空

我试图写一个SML程序来检查矩阵是否是奇异的。 矩阵已表示为列表列表。示例[[1,2]、[3,4]、[15,50]]是有效的,但[[1,2]、[1,2,3]]不是 fun remove (l,r)= let fun iter(front,l,i)= if i=r then front@tl(l) else iter(front@[hd(l)],tl(l),i+1) in iter([],l,1) end; fun remo

SML中的高阶函数

我在编写一个函数时遇到了问题,该函数将接受函数列表和参数,然后使用传递的参数调用每个函数,并返回调用结果列表。 示例:build[f,g,h]2将返回此值,但使用调用的函数和结果而不是调用:[f(2),g(2),h(2)] 顺便说一下,使用SML/NJ 首先,我尝试了这种模式的多种变体: fun build functions TheArgument = if functions = [] then [] else [hd(functions) TheArgument] @ build

Sml ML:警告:匹配非穷举

问题是: 我们使用以下类型表示多项式: datatype exp = Const of int | x | Add of exp * exp | Mult of exp * exp | Power of exp * int 例如,表达式Add(Add(Mult(Const 3,Power(x,2)),Mult(Const 6,x)),Const 1) 表示多项式3x2+6x+1 (a) 编写一个函数“evaluate”来计算给定表达式e的特定值x 我的回答是: datatype exp = C

SMLNJ将字符串列表解析为具有多个数据类型的元组列表

我有一个字符串列表,我想将其解析为一个元组列表 更具体地说: val strlist = ["1, 2, 3, 'hello', 4, 5, false, 6, [1, 2, 3], [1, 2]", "6, 1, 3, 'world', 4, 5, true, 4, [1, 2], [4, 7, 5]", . . .] : string list 进入 每个列表元素都有相同的格式。在此处找到它: 虽然我只是使用String.fie

一个非常基本的SML问题,我只能';似乎不明白(小代码)

只是一个基本的卡塞尔密码。我已经测试了所有的子函数,只是encryptChar()并不特别有效。我得到一个无限循环。它应该是递归的。以下是所有代码: fun replace (str : string, index : int, newChar : char) : string = String.substring(str,0,index) ^ String.str(newChar) ^ String.substring(str,index+1,(size str) - index - 1;

Sml 如何检查列表是否为空

我刚开始学习sml,所以请原谅我可能造成的任何不适 好的,这是我的函数: fun swapPairsInList [(x,y)] swapPairsInList: (’x * ’y) list --> (’y * ’x) list 我知道如何(递归地)交换列表中的对,但我遇到的问题是当列表为空(null)时的基本情况。如何确切地检查此列表是否为空?我试过了 null [(x,y)] 但这只是一个例外。我应该使用模式匹配来解决这个问题吗?好的,所以我找到了答案,当我查看位于 新代码: f

Sml 条款的右侧没有';不符合函数结果类型

编写一个函数remove_option,它接受一个字符串和一个字符串列表。如果字符串为空,则返回NONE 不在列表中,否则返回一些xs,其中xs与参数列表相同,但字符串不在其中 在里面。您可以假定该字符串最多在列表中出现一次。使用提供给您的相同_字符串 比较字符串。样品溶液约为8行 函数类型应该是fn:string*string list->string list选项。这是我的代码 fun same_string(s1 : string, s2 : string) = s1 = s2 f

SML编程帮助元组

该函数用于检查两条直线之间的交点。每对参数都是斜率和y截距。我应该找到两者之间的交叉点,如果它存在的话 出于某种原因,我无法让自己看起来像是在工作,为此我已经挣扎了好几个小时 real在SML中不是相等类型,因此(m1-m2)=0是一个类型错误 原因是,由于舍入错误,浮点表示的有限精度可能会产生意外结果(例如,(1.0/7.7)*7.7=1.0将返回false)。您可以通过使用Real库中的=操作符来解决这个问题,即Real.==(m1-m2,0)(或者只使用Real.==(m1,m2))。但请

Sml 倒车';列表->';b列表列表,但获取模式匹配并非详尽无遗

本作业从导入到使用sml 5.14编程 这是我的代码,但我得到的消息是,在基本情况下,模式匹配并不详尽 fun revrev [] = [[], []] | revrev [x::xs,y::ys] = revrev[ys@[y], xs @ [x]]; val test1revrev = revrev [[1, 2],[3, 4, 5]]; From valtest1 I want the output [[5, 4, 3], [2, 1]] 我不明白为什么我的函数不起作用,可能需

Sml 在ML中使用ref函数

考虑到ref运算符,我很难理解其应用和以下说明的含义: 1. 在这个定义中,我定义了什么 - val ref x=ref 9; val x = 9 : int 2. 这里我用ref x做什么:=ref 12 - val x= ref 8; val x = ref 8 : int ref - ref x := ref 12; val it = () : unit - x; val it = ref 8 : int ref val ref x=ref 9将x定义为9

通过将列表保留在val中,删除列表sml的最后一个元素

如何删除标准ML中列表中的最后一个元素? 我的清单定义如下: val list = [1, 4, 6, 8, 9] 我想删除最后一个元素,并将列表放在val列表中。好吧,您有各种各样的方法 您可以将原始列表拆开,并开始使用元素构建新列表,直到到达最后一个元素 fun f [] = ... | f [x] = ... | f (x::xs) = x :: ... 或者您可以使用该函数从列表中获取第一个i元素。显然,您可以使用该函数来计算不从列表中提取多少元素 fun h xs = Li

SML/NJ Basis库在Windows 10中不工作

我正在Windows 10上使用最新版本的SMLNJ(110.79) 我似乎无法使用任何SML Basis库函数 下面是我用List.filter fun isOdd nmbr = (nmbr mod 2) = 1; List.filter isOdd [1,2,3,4,5]; 这会产生以下错误 SML/NJ:Io[Io:openIn在“C:\cygwin\home\larsberg\smlnj2\SML.boot.x86-win32\smlnj\basis.cm\x86-win32\basi

如何从SML中的另一个文件导入,并具有相对于导入器的路径?

我使用的是SML/NJ,我需要使用一组函数,这些函数位于另一个文件中的某个文件f1.SML 但是,我不是直接运行f2.sml,而是从其他地方导入它 如果我使用f2.sml中的use命令,将路径设置为相对于f2.sml透视图的f1.sml,则在导入f2.sml时,它将从运行脚本透视图中查找提供的路径 我不能使用绝对路径,我不想合并这两个文件的内容 如果这是一个简单的语言应用程序,很抱歉,但我是SML新手,还没有找到答案。我建议使用(CM)。它是SML/NJ上下文中SML代码的构建系统。如果需要,它

SML中的匹配警告和模式匹配

我想知道如果SML中的模式匹配将继续执行Match警告,有什么好的策略可以理解 考虑以下功能: fun f 7 (x,y) = x * 5.1 | f x (y,#"a") = y; 乍一看,它似乎没有提供Match警告。但如果我来运行它,它会的 在我看来,我们处理所有的案件。哪种情况我们不处理?即使f7(x,#“a”)我们也知道应该是哪种情况(第一种情况) 我的问题是,如何确定函数将输出衰减 此外,我很乐意回答为什么以下函数无效: fun f (x::xs) (y::ys) (z::zs)

Sml 从ml输出中删除散列

我已经编写了一个ml函数,在输出中我得到了 out=Mary(“a”,“Zary,Zary”) 玛丽和扎里是建筑工人。但正如您所看到的,输出中有一些“#”。 如果我这样做 瓦尔·玛丽(“a”,x)=出局; 然后它就出现了 x=[Zary(“b”),Zary(“c”);这是正确的 我想得到完整的输出,而不是散列。请帮助我。如果(看起来是这样)您正在使用SML/NJ,那么您需要将Control.Print.printDepth或Compiler.Control.Print.printDepth(取决

Sml Ml语法错误,如何验证代码错误?

我是个新手。我写下面的代码 Delay(e) == fn () => e Force(e) == e() fun time_consuming(n) = let fun tak(x, y, z) = if x <= y then y else tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y)) in fun tak(3*n, 2*n, n) funend; fun fib(n)

32位linux和64位linux中的SML数据类型

我假设在标准ML中: int在32位linux上是32位的 在64位linux上,int也是32位的吗?此外,对于标准ML,是否有一个地方(url)可以概括不同数据类型的大小?感谢32或64位是指地址的维度。因此,数据类型大小相同,但指针大小会发生变化,因为64位系统使用64位来寻址内存整数的大小是特定于实现的-标准中没有指定。在MoscowML中,32位平台上使用31位整数,64位平台上使用63位整数 SML/NJ显然在64位和32位系统上都使用了31位整数(我之所以这么说,显然是因为我在

SML中的标准排序函数?

SML中是否有标准的排序功能?互联网上的文档太少了,我找不到任何文档。这个列表如何排序?你总是可以用reverse来得到相反的结果 - fun sort(L) = if L=[] then [] else if tl(L)=[] then L else merge(sort(take(L)), sort(skip(L))); val sort = fn : int list -> int list 请看。雷切尔只对了一部分。的确,SML Basis库中没有定义排序功能

在sml中复制文件

我正在尝试学习sml中的输入输出。为了将与s1相同的ls字符串复制到文件l2中,我做了以下操作。我遇到了一些我无法理解的错误。有人能帮我解决吗 fun test(l2:string,ls:string list,s1:string) = if (String.isSubstring(s1 hd(ls))) then (TextIO.openOut l2; TextIO.inputLine hd(ls))::test(l2,tl(ls),s1) el

Sml ML程序查找给定列表的首字母缩略词

我正在研究和学习ML语言。我遇到一个问题,很难解决。我肯定我会使用遍历、大小和子字符串函数,但我不能用某种方式来表达,我有点困惑。你能帮忙吗 问题: val x = [ ["National", "Aeronautics", "and", "Space", "Administration"] , ["The", "North", "Atlantic", "Treaty", "Organization"] ] 样本运行: val it = [ {acronym="

Sml tycon不匹配问题

完成一项基本上需要一棵树的家庭作业,其声明如下: datatype a BinTree = Leaf of a | Node of a BinTree * a BinTree; 并返回树的整数高度的元组和存储在树最深部分的值列表 fun deepest tree = case tree of Leaf(n) => [n] | Node(l, r) => if #1(deepest l) > #1(deepest r) then ((#1(deepest l) + 1),

统计并打印SML中的匹配值

根据赋值的参数,我不能使用模式或折叠,这是一个关于更大问题的特定方法的玩具示例 当我运行代码时,自然会得到一个“0”。所以问题是,我如何得到一个u计数的最终值 fun num_counter(numbers: int list, a_number: int) = let val count = 0 in let fun count_num(numbers: int list, a_count: int) =

如何在SML中获取自定义数据类型的随机值?

如何为下面这样的数据类型返回随机值 datatype rank = Jack | Queen | King | Ace | Num of int datatype rank = Jack | Queen | King | Ace | Num of int 我正在处理一个函数,生成一个随机卡片列表,以便输入到另一个函数,因此也需要一个类似的函数 输出应该是杰克、金等符号,或者是2到9之间的整数 以下代码不正确: fun pick_rank() = case Random.randRang

在sml中扩展#

假设我在sml中有一个非常大的列表,然后sml显示一些条目,然后开始显示#字符 有人能告诉我如何查看整个列表吗?您可以这样做: (* Prints a list in its entirety. * ls is a list of type 'a list * f is a function that converts an 'a to string *) fun printList f ls = let (* Prints the contents of the list ne

在SML中实现计数器

我正在尝试解决SML上的多项式求值问题,以下是我当前的代码: fun eval (nil, b:real) = 0.0 | eval(x::xs, a:real) = let val y:real = 0.0 fun inc z:real = z+1.0; in (x*Math.pow(a,(inc y))) + eval(xs,a) end; 问题是它只增加y一次,有没有办法让y从0开始,每次递归都增加1 您可以使用局部函数(或辅助函数)的概念来实现这一点。代码如下: l

SML中数据类型的识别

这是一个混乱但有效的代码。我只是想得到一些帮助来理解为什么k::ks被视为“列表”而不是“列表”。 我想拿一份清单和一份清单清单,检查第一份清单是否必要。 我的意思是,第一个列表中的所有元素是否都可以在另一个列表中找到 fun do1(a,[],_)=false |do1(a,k::ks,n)=if a=List.nth(k,n)orelse do1(a,ks,n) then true else false; val n=0; fun do2([],k::ks,_)=[] |do2(_,[],

Sml 在int数组结构中查找最大/最小值(以ml为单位)

我是ML的新手,我很难提取整数数组的最小值或最大值。 我已经使用从整数列表创建了数组 提示可能非常有用,因为像hd或tl这样的函数不适用于OCaml中的阵列: let min_array arr = Array.fold_left min arr.(0) arr 此代码使用arr.(0)作为最小值的初始候选,如果数组为空,则会失败,因此您可能需要检查该值,或者使用始终大于实际最小值的特定于域的初始候选值(我个人担心在这些情况下使用max_int) 我看到SML有一个foldl函数,允许做同样的

SML映射函数

我有以下功能: map(map(fn x =>[x])) [[],[1],[2,3,4]]; 产生: val it = [[],[[1]],[[2],[3],[4]]] 我不明白这个函数是如何工作的。难道不是每个map函数都需要一个函数和一个列表吗?似乎没有足够的理由让它实际执行 如果我跑步: map(fn x =>[x]) [[],[1],[2,3,4]]; 我得到: val it = [[[]], [[1]], [[2,3,4]]]; 这对我来说更有意义,因为它接受列表中

SML:如何计算列表中5到15之间的元素数 如何使用成员条件计算列表的长度

通常,以下内容用于计算列表的长度 (* Compute the length of a list *) fun length(L) = if null L then 0 else 1 + length (tl (L)); 但是如何通过只在5到10之间计数来指定成员的范围呢 如果我想对问题1使用函数foldr,怎么做 在List.foldr的lambda函数中,如果元素符合条件,则应将1添加到总数中,如果元素不符合条件,则应将0添加到总数中。这样,您就可以跟踪与您的条件匹配的元素数量 v

Sml 1例出现多模式

在SML中,是否可以在一个case语句中包含多个模式 例如,我有4个用字符串表示的算术运算符,“+”、“-”、“*”、“/”,我想打印“加减”,如果它是“*”或“/”,则它是“加减” TL;DR:是否有地方可以简化以下内容以减少使用案例 case str of "+" => print("PLUS MINUS") | "-" => print("PLUS MINUS") | "*" => print("MULT DIV") | "/" => print("MU

sml中的非穷举匹配

它收到了一个警告:匹配非穷举 x::xl=> 我想做的是: p([])=[] 当我这样做时,它会给出一个未捕获的异常匹配[nonexhaustive Match failure]您测试的内容,x::xl=[],将永远不会为真。列表是代数类型,定义为 fun p( x::xl ) = if x::xl = [] then [] else [0]; 表示列表的值是空列表或放在另一个列表前面的某个元素 因此,一旦您的x::xl的初始模式匹配成功,您就知道它不是空的。(不过,这应该相当清楚,因

Sml ML List.filter中的类型不匹配

我正在尝试用ML编写一个简单的过滤函数。其思想是函数仅使用大写字母获取字符串列表并返回字符串列表,其中仅包含以大写字母开头的字符串。这是我的实现,但是我得到了一个我不理解的类型错误: fun only_capitals (strs : string list) = let fun isCapitalized (str) = Char.isUpper(String.sub(str, 0)) in List.filter(isCapital, strs) end

SML/NJ无法覆盖其他模块中的功能

我想覆盖print,让它输出到除stdout以外的扩展流。我有两个文件:m1.sml和main.sml在同一个目录中。我想覆盖这两个文件中的print行为,但它无法覆盖m1.sml内部的print m1.sml structure Demo : sig val printSomething : string -> unit end = struct fun printSomething s = print s end use "m1.sml"; fun red

Sml 多态函数

我试图在类型T上定义一个多态函数sum,其中类型T可以是int、real或类型T的列表。int和real情况下的sum应该按预期工作。对于T的列表,它应该返回两个列表的对应元素之和。列表的长度应该相同 示例: sum (INT 2, INT 3) = INT 5 sum (REAL 2.3, REAL 3.4) = REAL 5.7 sum(L [2, 3, 4], L [3, 4, 5]) = L [5, 7, 9] sum(L L([2, 3, 4], [2, 3, 4]), L ([

SML中If-Else中的多个语句

我想使用if(条件),然后使用语句1,语句2。。。其他声明1、声明2、; 在SML编程语言中。 我不能使用和,简单的空间或,。如果可能的话,有什么建议吗? 注意:我不是指嵌套的if-else。但是这很清楚。您可以使用构造(expr1;expr2;…;exprn)顺序执行多个表达式。因此: if condition then ( expression1; expression2 ) else ( expression1; expression2 ) 看来你不能把在expressi

SML:列表大于X

SML新手,正在寻求列表问题方面的帮助。 基本上,我需要创建一个大于变量X的列表 例如: test(5,[13,2,4,17,8]) Expected Result: (13,17,8) 我知道我可以通过编写两个单独的函数来实现这一点,一个函数确定值小于x,然后遍历列表。或者我可以尝试在一个函数中完成所有操作 任何帮助都将不胜感激 您可以使用filter过滤掉[13,2,4,17,8]中大于5的元素 > List.filter (fn x => x > 5) [13,2,

Sml 函数绑定和函数调用求值

我在理解SML中函数绑定和函数调用的计算方面有点困难 函数绑定和函数调用的简单示例: val w = 12; fun pow(x:int,n:int) = if n = 0 then 1 else x * pow(x,n-1) pow((1+1),3); 一点理论: 形式参数-方法中使用的标识符,表示调用方传递到方法中的值。 在上面的函数绑定中,形式参数是x和n 实际参数-调用方传递到方法中的实际值。 在下面的函数调用中,实际参数是(1+1)和3。 我的两

使用另一个函数在SML中编写函数

我已经在SML中编写了一个函数sumF,它执行以下操作: fun inc x = x+1; val inc = fn : int -> int sumF inc 3; 9 : int (i.e. inc 3+inc 2+ inc 1+ 0) 萨姆夫 现在我想用sumF写一个函数sumsq(平方和),但我不能这样做。这就是我所做的 fun sumsq 0 = 0 | sumsq n = n*n + sumsq (n-1); val sumsq = fn : int -> int su

Sml 在print语句之后忘记变量

为什么要编译 fun foo (h::t) = h = hd(t); 但事实并非如此 fun foo (h::t) = PolyML.print (h::t); print "\n"; h = hd(t); ? 我认为你对语言的挫折感比语言的局限性更妨碍你解决问题。正如我在前面的回答中所说,分号不能像您使用分号那样使用。您需要将这些语句括在括号内: fun foo (h::t) = ( PolyML.print (h::t); print

如何为sml绘制类型推断解析树

因此,我正在进行练习期末考试,有一个问题要求我为这个sml代码绘制一个解析树: fun ff f x y = if (f x y) then (f 3 y) else (f x "zero") val ff = fn : (int -> string -> bool) -> int -> string -> bool 我了解如何获取这种类型,但不太确定如何绘制解析树来表示它 在我的家庭作业中,我们做了这样一个简单的问题: 我能想到的最简单的方法是稍微重新格式化代

Sml curried函数类型中括号之间的差异

那些退货类型有什么不同 val fn1 : int −> (int −> (int −> int)) val fn2: (int −> int) −> (int −> int) 这将创建类型为的函数 int -> int -> int meaning int -> (int -> int) 是这样吗?没有括号,它们有相同的意思 正如您所说,fn1的函数类型相当于int->int->int->int->int 如果有多个参

Sml 在变量中保持maxInt(标准ML)

如何将整数的最大值放入SML中的val中? 我看到您可以使用intMax: > Int.maxInt; val it = SOME 1073741823 : int option 但如果我尝试将其作为值放入val,它将打印错误: > val max:int = Int.maxInt; Error: pattern and expression in val dec don't agree [tycon mismatch] pattern: int expression:

Sml 在Trie中插入值

我在SML目录中找到了Trie的这个实现: signature DICT = sig type key = string (* concrete type *) type 'a entry = key * 'a (* concrete type *) type 'a dict (* abstract type *) val empty :

Sml 完成dijkstra&x27的代码;s代码(ML)

我需要帮助完成此代码: fun insertSorted(x, comp, []) = [x] | insertSorted(x, comp, a::rest) = ?? 如果书写正确,它将返回 - insertSorted(5, fn(a, b) => a > b, [8, 6, 3, 1]); val it = [8, 6, 5, 3, 1] 代码获取一个值、一个比较函数和一个列表,并返回一个与上面给出的列表类似的新列表。Comp用于确定列表中的值的顺序 以下是用英语完成

如何用SML语言从用户键盘读取字符串?

我不熟悉SML语言,我想这样做: 问一个人“你的全名是什么?” 从用户键盘获取答案 写上“你的全名是”+姓名(他或她的名字) 这个答案有三个部分。第一部分回答了你唯一的问题。第二部分回答了一个你似乎没有问过的问题,第三部分讲述了如何通过自己的方式找到问题的答案 如何用SML语言从用户键盘读取字符串 您可以使用TextIO.inputLine TextIO.stdIn: - val wat = TextIO.inputLine TextIO.stdIn; Hello, World! val wa

SML列表结构重要功能的实现

我有一个2天的期中考试,我的教授宣布为了练习,我们应该为列表编写重要函数的实现。我在上找到了列表结构的重要函数列表,但该站点只包含函数名和函数类型。我想知道是否有人知道一个网站,它既有功能的实现,也有类型的实现。我试图搜索这个,但找不到任何有用的东西。我对高阶函数和咖喱不太熟悉,因此了解一些重要的列表函数是如何实现的示例对我很有帮助,这样我就能理解基本知识。因此,如果有人知道一个链接,其中包含重要列表函数的实现代码,如果您能与我分享,我将不胜感激 谢谢。SML/NJ的基本库实现是开源的。您可以在

在sml中使用操作(其中是当前目录smlnj windows)

我从未在Windows机器上使用过SML(以前在带emacs的unix机器上使用过) 在我的一生中,在sml环境中找不到当前目录。如果我尝试:使用“filename.sml”,则会引发异常。。我找不到我的文件放在哪里 顺便说一句,该文件是用记事本++编写的,仅命名为w/a.sml扩展名 当前工作目录将是您启动SML解释器的位置。如果您的桌面上有快捷方式,则我希望您可以在快捷方式的属性中设置CWD(我不是windows用户),我希望默认情况下它是您安装SML/NJ的目录 如果从命令行启动sml解释

SML中有些选项和没有选项是什么?

我是SML的新手(实际上是编程) 这是我在这里遇到的一个程序。如何使用SOME和NONE,以及如何使用'before'?SOME('a)和NONE是选项数据类型的一部分。是中的代数或复合数据结构。有关选项数据类型的详细信息,请参阅。最大的想法是,当函数返回程序员真正关心的类型的值没有意义时,允许函数返回值None 对于用户定义的函数readlist而言,重要的数据是字符串。但在某个时刻,程序会到达文件的末尾,并读取一个解释为而不是字符串的值 将TextIO.openIn看作是一个打开流并在其中搜

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 20 页