SML如何在字符列表上获得返回int的时间?

我很难弄清楚,如何将每个处理过的字符恢复为int值 函数的工作方式应该是:val caesar=fn:int*int->int 因此,如果k=2466,n=2,那么输出应该是4688 希望代码不要太奇怪(我是SML新手) 在这里,while循环不是最好的工具。相反,您可以使用map,它为给定列表中的每个项执行给定函数,并返回一个新列表,其中包含每个函数调用的结果 换句话说:map(fnc=>(Char.ord c)+2)[2]、[4]、[6]、[6]将返回[52,54,56,56]。您可以将其转

如何在SML中进行|登录?

我想写一些像这样的东西 fun factorial 0 = 1 | factorial n = n * factorial(n-1); 但是当我想开始新的生产线时,我没有得到“|”标志。我得到的结果是: fun factorial 0 = 1 = factorial n = n * factorial(n-1); 当我开始第二行代码时。如果我按住shift键并“\”键,我就看不到竖线,我会看到其他东西。既然你说第二行以等号(=)开头,那么你似乎是在直接将代码写入解释器 无论如何,你必

如何使用SMLNJ中的curried函数生成fibonacci数的无限列表?

我编写了一个通用例程,它接受多个参数并生成一个无限的斐波那契数列表,如下所示: datatype 'a seq = Nil | Cons of 'a * (unit -> 'a seq) ; fun fibo (a,b) = Cons(a, fn () => fibo(b,a+b)); val fib = fibo(0 , 1); 但问题是我想用currying技术来生成这个从0和1开始的fibonacci数的无限列表,我对currying的概念完全感到困惑 通过这个例子,我能了

Sml 使用预定义的复合函数在标准ML中编写幂函数

编写幂函数inStandard Ml时遇到问题。我正在尝试编写一个名为exp的函数,类型为int->int->int 对于非负的e,应用程序exp b e应返回b^e 例如,exp3 2应该返回9exp必须使用下面提供的函数composite来实现exp不应直接调用自身。这是复合函数,它接受一个值n、一个函数和一个值x。它所做的只是将函数应用于x n值的次数 fun compound 0 f x = x | compound n f x = compound (n-1) f (f x);

如何在SML mlb文件中定义变量SML_LIB?

我想使用一个名为MY_LIB的变量,使用方式与使用SML_LIB类似。如何定义我的_LIB,以便它可以在.mlb文件中使用 ann "MY_LIB /path/to/my/lib" (* this does not work*) in local $(MY_LIB)/functions.mlb $(MY_LIB)/fu

当使用构造函数时,SML是否有办法在参数上运行函数?

我正在学习SML,并尝试创建一个名为mySet的数据类型,它可以是任何int或real列表,但没有重复项,并且按顺序排列。到目前为止,我已经将数据类型和一些函数制作成一个列表,然后在该数据类型中返回它,这样可以很好地工作。但是我意识到数据类型的构造函数也可以被使用,这完全绕过了需求。对于我所需要的,我可以只使用函数,但我真的想知道是否有任何方法可以解决这个问题?如果列表不符合要求,那么我的大多数数据类型函数将无法正常工作 datatype 'a set = Set of 'a list | Em

如何从源代码安装sml/nj?

我可以成功安装sml/nj,正如文档所说: 但是如何从源代码处安装,正如文档所说,让我下载config.tgz,而不是脚本install.sh可以从网络上下载和编译其他文件 但是,如果我想编辑源代码,并测试结果,这种方法似乎不起作用 例如:我编辑了文件compile.sml,希望看到结果,所以我需要重新编译编译器,但是install.sh将从internet下载compiler.tgz,而不是我更改的文件 从源代码处安装sml/nj如此热门?谢谢 smlnj.org没有SSL证书,已损坏,没有顶

以ML格式打开文件(SMLNJ)

我需要读取ML(SLMNJ)格式的文件并将其保存在某些结构中。我需要阅读一些指向图形声明的数据: [( 1 , 2 , 13 ),( 2 , 3 , 3 ),( 2 , 4 , 8 ),( 2 , 5 , 4 ),( 3 , 1 , 5 ),( 3 , 4 , 1 ),( 4 , 6 , 5 ),( 5 , 5 , 5 ),( 6 , 4 , 6 )] (第一个数字:节点名称,第二个数字:连接节点名称,第三个数字此鬃毛的重量(每个()显示一个鬃毛)) 对于expamle,这是如何读取文件以及保

试图在SML中得到平方根?

正在尝试解决如何使用以下伪代码获取SML中的平方根: sqrt x s = s if s*s <= x sqrt x s = sqrt x (s-1) if s*s > x sqrt x s=s如果s*s x 这个公式是讲师给我们的,我们必须在SML中解决这个问题 我尝试了几种不同的方法,但我将通过控制台发布错误的不同方法: - fun sqrt x s = if ((s*s) <= x) then s | sqrt x s = if (s*s) > x then s

smlnj交互系统:致命错误

在apt get install smlnj并试图从终端调用sml后,Chromebook上的Crouton chroot出现了一个奇怪的错误,我在其他任何地方都找不到这个错误: $ sml /usr/lib/smlnj/bin/sml: Error -- unable to map 1179648 bytes, errno = 1 /usr/lib/smlnj/bin/sml: Fatal error -- unable to allocate memory object for BIBOP

Sml 有没有一种简单的方法可以有条件地在CPN工具网络中不生成令牌?

我遇到了一种情况,我想忽略一些输入 在我的转换操作中,我使用一个简单的if-then-else表达式来测试我希望为其生成输出标记的输入,并为我希望忽略的输入生成一个NOP标记,因为您必须有一个类型正确的表达式才能满足ML 我尝试使用if this=that,然后使用1`goodToken else 0`goodToken(带括号和不带括号),但这无法通过操作输出部分的类型正确性检查 这些令牌被传递到下一个位置,然后分支到其保护仅允许NOP令牌的转换或不允许NOP令牌的转换 以这种方式,我生产和消

重载冲突,单位为ML(SML/NJ)

我为ML编写了以下代码: fun get_digits (0, s) = s | get_digits (d, s) = get_digits( d div 10, (d mod 10) :: s) | get_digits n = get_digits( n div 10, [n mod 10] ); 但它给了我以下错误: Error: Operator and operand do not agree (overload conflict) operator

Sml PolyML/Motif:如何同时绘制包含XmLabelPixmap按钮的窗口?

在PolyML中,我试图绘制一个包含pixmap的按钮,但在shell小部件上调用XtRealizeWidget之前,找不到创建pixmap的方法 在XtRealizeWidget之后使用XCreateBitmapFromData,在绘制包含图片的按钮时会有很大的延迟,这真是愚蠢。这是下面的代码 相关线路为: val shell = XtAppInitialise "" "appl" "clss" [] [XmNwidth 500, XmNheight 500 ] ; val mainw

Sml 如何获取数据类型变量内部的值?

假设我有以下树数据类型: datatype 'a tree = Empty | Node of 'a * 'a tree * 'a tree; val x = Node(10, Node(20, Empty, Empty), Node(30, Empty, Empty)); 这里,x是int-tree类型的变量。我想知道的是,在给定变量x的情况下,如何对树的不同部分进行分析和计算 例如,在此函数中: fun add(tree) = .... add(x); 假设函数将树的节点中的所有值相加,

SML-错误:运算符不是函数[tycon不匹配]

我正在尝试创建一个程序,将大阶乘的数字相加,这就是我正在做的: fun sumDigits n = if n < 10 then n else n mod 10 + sumDigits(n div 10) fun factLarge 1 = IntInf.toLarge 1 | factLarge n = IntInf.toLarge n * factLarge(n-1) sumDigits (factLarge 100) n= 如果n

对列表执行递归时出现SML[circularity]错误

我试图构建一个函数,该函数可以压缩给定的2个函数,而忽略较长列表的长度 fun zipTail L1 L2 = let fun helper buf L1 L2 = buf | helper buf [x::rest1] [y::rest2] = helper ((x,y)::buf) rest1 rest2 in reverse (helper [] L1 L2) end 当我这样做时,我收到了错误消息: 错误:子句右侧与函

警告:匹配非穷举-处理特定案例(SML)

考虑以下SML中的列表示例:[[(“foo”~10.0)],[(“goo”~8.0)] 我将链接编写一个函数,该函数将删除主括号,这意味着输出将是: [(“foo”~10.0),(“goo”~8.0)] 我写的函数是: fun inner_list [[]] = [] | inner_list [] = [] | inner_list ((((x:(string*real))::xt)::xs)) = x :: inner_list xs; 它适用于大多数情况,但我知道我没有检查其中一个情

SML NJ中的插入排序比较函数

我以前也发过类似的问题,但我想我需要重新表述一下我所问的问题。早些时候,我在我想完成的事情上得到了很大的帮助 所以,我现在想知道的是,如何在代码中传递comp函数,使其可以自定义 我希望能够跑步 insertSorted(5, fn(a, b) => a > b, [8, 6, 3, 1]; insertSorted(5, fn(a, b) => a < b, [8, 6, 3, 1]; 哪个会回来 val it = [8, 6, 5, 3, 1] val it =

(sml)我可以得到一些帮助来实现统计案例数量的功能吗?

我可以得到一些帮助来实现统计案例数量的函数吗 首先,我很抱歉一遍又一遍地问你同样的问题 我已经试着实现这个函数一个多星期了,但我还没有掌握它的窍门 这就是我现在写的代码 fun count (x,nil) = 0 | count(x,y::ys) = if x=y*2 then 2 else if x=y*4 then 4 else if x=y*10 then 10 else if x=y*20 then 20 else if

如何在SML中导入代码?

我目前正在为SML课程的作业评分。我已经编写了一些测试用例来自动检查学生作业中函数的正确性,我希望能够导入他们的代码,然后针对这些代码运行测试用例。我正在想象类似于python导入语义的东西。现在,我最好的解决办法是复制粘贴在每个作业底部的代码。这在SML中是可能的吗?看看,SML的单元测试库使用使用: use "filename.sml"; (* your test cases here *) 如果在“student.sml”中有学生解决方案,在“tests.sml”中有测试用例: 您可以在

我可以在SMLNJ中展开typedef吗?

所以我用标准ML编写了一些代码,并试图用smlnj编译它。我得到了以下错误: Error: operator and operand don't agree [tycon mismatch] operator domain: unit -> Absyn.fundec operand: unit -> (pos * pos) * ((string * int) * (string

Sml 我的ML代码中出现未捕获异常错误

当我使用Emacs运行SML代码来理解错误时,我会收到一条错误消息。无论我的代码是什么,每次我尝试SML/Process/start SML repl 然后键入使用“项目名称”,我收到以下消息: use "New_Pro"; [Opening New_Pro] [use failed: Io: OpenIn failed on "New_Pro", Win32TextPrimIO:openRd: failed] uncaught exception Error raised at: .

在sml中创建堆栈

我尝试在sml中创建堆栈,我尝试使用列表;但是我很难将元素添加到列表中。我试图从输入文件中读取行,如果行显示: push 5 push 9 add quit 然后我希望输出文件为: 14 因为5+9等于14。 到目前为止,我已经能够创建布尔函数来识别线是推还是有数字 fun is_digit (c) = #"0" <= c andalso c <= #"9"; fun is_Push (c) = String.isSubstring "push" c; fun stack(in

Sml 使用';比较';功能

为了比较两个字符串,并将相等的字符串添加到列表中,我使用内置的比较函数创建了此函数: fun compareString(string, list) = if compare(string, "hello") = EQUAL then string::list; 然而,这给出了一个错误。我猜我的语法一定是错的,我是否正确使用了比较函数 根据文档,比较功能的工作原理如下: compare(s,t)使用排序Char对两个字符串进行词典比较。对字符进行比较。如果s分别小于、等于或大于t,则

SML-更改元组列表中元组元素的值

我刚刚开始学习SML,我想写一个程序,它接受2个int和一个元组列表,对它们进行更改,然后返回一个列表(box是一个列表)。列表总是有2个元组。在某些if条件下,我需要更改元组中元素的数量。例如,我定义了Xb1,给了它元组第一个元素的数量(#1 head),然后我在代码中更改了Xb1的数量(并返回列表)。但问题是这个数额没有改变。 代码如下: fun MoveBoxL(Xw,Yw,boxes:(int * int)list) : BOXES = let val head = List.hd bo

Sml 使用语法导致语法错误:将VAL替换为EQUALOP

我正在实现一个函数,它包含两个int*int*int类型的日期:第一部分是年,第二部分是月,第三部分是日。如果第一个日期早于第二个日期,则应返回true 我想测试这个函数,但我遇到了一些问题。这是ex1.sml文件 每当我尝试运行最后一个文件时,通过加载REPL,我总是以以下错误结束:error:syntax error:replacement VAL with EQUALOP 但是,如果我将测试放在ex1.ml中并将其加载到REPL中,它不会给出任何错误 fun is_older(d1 : (

Sml 标准ml快速排序

我正试图解决ml中的一个问题,我有点卡住了。请原谅,这是一个微不足道的代码,但回答它将解决我的大部分问题 代码: 错误: Error-Can't unify 'a list with int list * int list (Incompatible types) Found near loop (sorted) Static errors (pass2) sorted是由两个列表组成的元组循环接受一个列表参数那么我如何将其更改为接受元组,很抱歉我的新类型问题。我只是还不能识别SML中的数据类

Sml Cons在这个函数中做什么?

我对from的函数定义中的Cons()函数的作用感到困惑 它是Stream的两个构造函数之一。请看屏幕截图的第二行--这就是所有的缺点。流所代表的是一个潜在的无限列表。由于SML是一个复杂的系统,因此需要以稍微迂回的方式完成 让我们首先看看普通列表是如何工作的: datatype 'a list = [] | :: of 'a * 'a list cons由两部分组成: 列表中的第一个元素 名单的其余部分 在懒惰列表中,它非常相似 datatype 'a Stream = Nil | Co

构造列表中的sml连接对象

代码如下所示: - fun foo(a : int, b :int) = = if a > b = then [] = else [a] @ foo(a+1, b) = ; val foo = fn : int * int -> int list - foo(1, 100); val it = [1,2,3,4,5,6,7,8,9,10,11,12,...] : int list 如果a大于或等于b,则函数打算从a到b构造一个列表,否则将创建一个空列表。当我使用绑定到的

多项式作为函数SML 如果将多项式表示为函数:类型p= int *(int -int),其中第一个int是多项式的阶数,(int -int)是一个函数,它取并索引并返回系数。

我应该写一个函数,给出一个列表,它会给我一个这种类型的多项式 例如,表单([1])给出(0,fn 0=>1)) 但问题是当你写这样的东西时 形式([1,5])给出(1,fn 0=>1 | 1=>5)) 我对fn 0=>1 | 1=>5部分感到非常困惑,因为fn不是递归的。我可以从列表的长度中找到多边形的顺序,我可以使用x::l访问该列表中的每个元素,但是如何使用元素的每次访问构建此函数(fn 0=>1 | 1=>5)。我不想要一个明确的答案,但我需要帮助 使用列表结构中的方法,这可以通过制作笛卡

返回SML中的列表对

我想构建一个列表,列表中的所有元素都与给定列表的头配对。到目前为止,我有下面的代码。我真的不确定我在这里哪里出错了 fun foo [[]] = [[],[]] | foo [[x]] = [] | foo (x::y::ys) =(x,y)::foo(ys); 我的签名应该是这样的 ('a list) list ->('a list * 'a list) list 示例输出 foo [[2,3,4],[1,2],[6,7,8]] = [([2,3,4],[1,2]),(

Sml 带折叠的多输入类型

我试图找出如何在不同类型的输入上实现fold函数。作为示例,我将对列表使用count函数(不过,我有多个函数要实现)。 假设输入一个int-list(这应该适用于任何类型的list),我的count函数是 val count = foldr (fn(x:int,y)=>y+1) 0 ; val count = fn : int list -> int 但是,我尝试在类型为的情况下创建计数函数 val count = fn : int list * bool list -> i

SML-使用map返回组合结果

我有以下职能: fun IsDivisible(t, t2) = if t mod t2 > 0 then true else false; fun IsDivisibleFilter(ts, t) = List.filter(fn x => IsDivisible(x, t)) ts; fun IsDivisibleMap(ts, ts2) = map(fn x => IsDivisibleFilter(ts, x)) ts2; IsDivisibleMap-获取两个i

SML中的非fix运算符

我阅读了SML的语法,发现除了infix和infixr之外,它还包含nonfix。我试图找到一些基本的例子,但似乎没有人使用它。还尝试查找有关该运算符的一些以前的线程,但没有 nonfix背后的想法是什么?为什么似乎没有人使用它?nonfix将中缀运算符转换为元组上的“常规”函数。例如,*是一个类型为int*int->int的函数,但不能被称为*(2,3)。如果出于某种原因您想这样做,您可以执行以下操作: nonfix * 然后,*(2,3)将计算为6 不幸的是,作为一种恼人的副作用,您不能再

Sml 调用另一个函数的函数

假设我有两个SML函数Ping和Pong。我的代码是: val arr=Array.array(10,0) fun Ping (arr,_,[],_)=true |Ping (arr,0,(x::xs),ping_list)=Ping(arr,1,xs,Pong(arr,ping_list,10)) //<-Problem is here | Ping (arr,K,(x :: xs),ping_list) = (if Array.sub(arr,x)=0

显示列表中多次出现的项目,sml

我试图显示列表中元素的所有多次出现的索引 标准毫升 但我的代码显示的是空列表:( 这是我的代码: fun index(item, xs,ys) = let fun index'(m, nil , ys) = ( SOME (ys) ) | index'(m, x::xr , ys) = if x = item then( (ys @ [m]); index'(m + 1, xr , ys) ) else index'(m + 1, xr,ys) in index'(0

Sml 如何遍历模式并返回所有字符串的列表

您好,我目前正在学习编程语言课程,在使用以下helper函数时遇到困难:该函数采用一种模式并返回它用于变量的所有字符串的列表。 这是一种模式: datatype pattern = Wildcard | Variable of string | UnitP | ConstP of int | TupleP of pattern list | ConstructorP of string * pattern

Sml &引用;“不匹配的结构规格”;在函子定义中

我正在尝试学习在标准ML中使用函子。我已经编写了以下代码,但我不断收到错误错误:不匹配的结构规范:元素。谁能给我指出错误吗。我没能找到它: signature SET_ELEMENT = sig type element val equal: element -> element -> bool end signature SET = sig type set structure Element : SET_ELEMENT val empty:

Sml 如何在let语句中使用if语句?

我希望这能起作用: fun function (i) = let if i = 1 then val h = valOf(Int.fromString(valOf(TextIO.inputLine TextIO.stdIn))) else val h = someFunction(); in code... end 但似乎你不能声明这样的值。。。如果ML中的语句是一个表达式,我应该如何使

Sml 未绑定变量或构造函数

我很难用let,in,end定义一个curry函数。 我有以下代码: filter_many listOfFunc listOfElements = let fun allPredicate(element,[]) = true | allPredicate(element,(a,b)::xs) = a(element) andalso (allPredicate(element,xs)) fun isPredicateAux(element) = allP

SML错误:if分支的类型不一致

我试图找出一个元素是否是集合的一部分。以下是我的功能: fun elementOf(x:int, (nil:int list, nil:bool list)) = nil | elementOf(x, (y::ys, z::zs)) = if x = y then z else elementOf(x, (ys, zs)); 因此,如果我调用elementOf(2,([2,7,4],[false,true,false])它将返回false 但是,我收到了错误消息: Error: types

Sml Math.sin给出了一句话;意外执行“;新泽西州标准ML中的错误

我用的是新泽西的标准毫升。当我运行Math.sin3时,我得到: SML/NJ:Io[Io:openIn在“C:\cygwin\home\jhr\Work\smlnj\release\SML.boot.x86-win32\smlnj\basis.cm\x86-win32\basis.cm”上出现意外异常(错误?),win32 bin prim Io:checkHndl:openRd:failed]在以下位置引发: 基础/实现/IO/bin IO fn.sml:617.25-617.71../cm

Sml 将列表中的数字平方,然后将它们相加

我试图创建一个函数,将ML列表中的数字平方,然后将这些数字相加 fun sqsum(lst) = map (fn x => x*x) lst; 我这里有一个列表,并返回每个数字的平方列表,但我无法计算出加法部分。您可以一次解决一个子问题,然后合成结果: val sq = map (fn x => x*x) val sum = foldl (fn (x, result) => x + result) 0 val sqsum = sum o sq 或者您可以将map和foldl

在SML中声明函数的类型

我不熟悉ML,但在其他使用类型推断的语言中,我已经学会了一种习惯,即每当右侧的推断对人类读者来说是显而易见的时候,就忽略该类型的事物,而每当该推断对人类来说不是显而易见的时候,就显式地声明该类型的事物。我喜欢这个约定,并希望在我的ML代码中继续使用它 我有以下等效的函数声明示例: fun hasFour [] = false | hasFour (x::xs) = (x = 4) orelse hasFour xs 相当于 val rec hasFour: int list -&

Sml 标准ML:如何循环浏览列表?

我正试图写一个程序,在一个列表中循环n次。 假设L=[a1,a2,…,an] 我试图实现的是[ai+1,ai+2,…,an,a1,a2,…,ai] 我参考了之前关于这个问题的帖子。但是,我不确定如何获得输出或[ai+1,ai+2,…,an,a1,a2,…,ai] 对于输出:我尝试了 -循环([1,2,3,4],5) 但是,我得到的错误是操作数和运算符不匹配 这是我在上一篇文章中找到的代码: fun cycle n i = if i = 0 then n else cycle (tl n) (i

Sml 打印ASCII表

所以我用C写了这段代码来打印ASCII表,但是我被告知要使用SML来完成这个特定的任务 以下是我当前的C代码: // Program to print ASCII table. #include <stdio.h> int main() { unsigned char count; for(count=32; count< 255; count+=1) { printf(" %3d - %c",count,coun

Sml 标准ML:是否可以命名函数参数的数据类型?

我是ML的新手,需要一个函数来接收一个特殊的预定义数据类型,并且能够引用它的整个参数数据类型,而不是它的组件 下面是一个愚蠢的例子: datatype frame = Frame of string list * string list (* Type: fn : string * frame -> frame *) val lookup_variable_value_in_frame = fn (string(var), Frame(variables, values)) =&

SML如何在列表中的每个列表的开头添加元素?

我尝试了以下方法: fun consAll (nil, n) = [n] | consAll ((x::xs), n) = [[n::x], [consAll(xs, n)]]; 但它返回以下错误: “错误:运算符和操作数不一致[循环度] 操作员域:“Z列表*”Z列表 操作数:“Z列表*”Z列表 在表达上: (n::x)::nil:::(consAll(,)::nil)::nil“ 请告诉我哪里出了问题,我是SML的初学者。[[n::x],[consAll(xs,n)]]创建了一个两元素列

  1    2   3   4   5   6  ... 下一页 最后一页 共 20 页