Sml 用于用户定义的通用列表的映射函数

我试图用两个值构造函数定义一个新的多态类型generic_list,list和Seq,并添加映射所有项的函数map_函数(proc,items) 以下是我到目前为止的情况: datatype 'a seq = Nil | Cons of 'a * (unit -> 'a seq); datatype 'a generic_list = List of 'a list | Seq of 'a seq; 如何构建map\u函数 当我有以下要求时: 签名:generic\u映射(过程、项目)

Sml 检查标准ML中的数字是否为斐波那契

我试图写一个代码,检查数字是否是斐波那契或不是在ML。我是一个初学者。帮我找出我的代码有什么问题 fun isfib(n :int): bool= let val a1=1; val a2=1; val temp=0; in while a2<n do ( a1=temp a2=a1 a2=temp+a2 ) if a2=n then true else false end; fun-isfib(n:int):bool= 让 vala1

sml中的双射函数

我想定义一个函数,它接受一个整数n并返回一个整数n*,使得n和n*位于从1到n的同一组整数中,并且该函数必须是双射的 我尝试了以下方法 fun bij(n) = let val ls = zip(upto (1, n), List.rev(upto (1, n))) val Tw_2 = fn(a, b) => b in Tw_2(List.last(ls, n-1)) end; 但不幸的是,对于所有的n值,它都返回1。我真的被

Sml 警告:匹配非穷举

我用我能想到的所有基本情况编写了一些sml代码,但是我仍然得到了这个警告。因此,函数检查第一个列表是否是第二个列表的排列。我不确定它是否有效,尽管我认为它进入了一个无限循环 fun isPermutation(nil: int list, nil: int list): bool = true | isPermutation(x::nil, nil) = false | isPermutation(nil, y::nil) = false | isPermutation(x1::ni

Sml 以Poly/ML打印Unicode字符

如何在SML(使用Poly/ML)中打印小写希腊文 我尝试了以下方法: print "ε"; (* Error-unprintable character found in file *) print "\u03B5"; (* Error-Conversion exception (Invalid string constant) raised while converting \u03B5 to string *) 难道这根本不可能吗?当然,终端的工作是实际渲染字符,因此,应该可以将原始字符

SML/NJ中的重载冲突

我有以下代码来计算Hofstadter H序列,但是我得到了一条重载冲突错误消息。我是SML的新手,因此我确定错误指的是什么 (* Hofstadter H-Sequence *) fun H(0) = [0] | H(n) = if n = 0 then [0] else x :: (n - H(H(H(n - 1)))); 我的目标是将每个迭代的值插入一个列表并显示它。 例:h10;-->[1,1,2,3,4,4,5,5,6,7]您正在尝试使用int->int list类型编写函数 (写

Sml (标准ML)是否有直接比较列表元素的方法?

我想知道可以找到案例数量的函数。 例如,如果输入了fun(4,[1,2]),它将输出可以使用1和2转换为4的数字数。 我知道如何通过fun(x,ys)逐个比较列表中的第一个元素。 但我不知道如何将列表中的两个元素与一个元素进行比较。 在SML中是否有一种方法可以同时比较x和(y,ys)? 有人可以帮忙吗?“使用1和2可以生成4的数字的数量。”——如何生成?作为某些算术运算符的操作数?请给出一个或多个示例输出,以澄清您的任务范围。还有,到目前为止你写了什么?你在另一篇文章中回答了我。非常感谢。

SML如何检查变量类型?

有没有办法检查/测试变量的类型 我想这样使用它: if x = int then foo else if x = real then bar else if x = string then ... else ..... ML语言是静态类型的,所以不可能在不同的时间有不同的类型x有时不能有typeint,有时不能有typestring。如果需要这样的行为,通常的做法是将值包装在一个对类型信息进行编码的容器中,如: datatype wrapper = Int of int | Real

SML/NJ中的高阶函数

我正在找人帮忙解决一个问题。我正在尝试编写一个函数,在ML中传递列表和函数。基本上,程序应该做的是获取一个列表,并通过函数运行每个元素。如果函数返回true,则元素将添加到列表中,并且在函数完成执行后返回列表。这是我的密码: fun select(x:list, funct)= (* Define a new function that accepts a list and the prime function as a parameter*) while (tl(x) not

Sml ML中的递归函数

这是一个仅检查前两个列表元素的curry函数 fun inn list f = f(hd(list), hd(tl(list))); 我想知道的是,我可以通过什么方式浏览其余的列表元素。 我不知道如何使它递归。 有人能帮我吗?第一句话:永远不要使用hd和tl。改用模式匹配 我现在不知道您希望函数做什么,但这里有一个函数迭代列表并将f应用于每个元素: fun iter f l = case l of [] => () | x::xs => (f x; iter f x

Sml 为变量列表赋值

我想输入两个长度相等的列表,并将一个列表的值分配给另一个列表的变量。 我想让它自动实现第一个列表作为变量列表,第二个作为值。 例如 我想将[1,2,3,4,5,6]值分配给变量列表中的元素[9,10,11,12,13,14],即。 1作为列表中的值9,2作为列表中的值10 exception error fun assign([],_) = raise error | assign(_,[]) = raise error | assign(l::ls,b::ls) = (val l=b

SML中的函数数据类型不清楚

给定SML中的以下功能: fun i a b = let fun j()=a+1 in j end; 函数的数据类型为: val i = fn : int -> 'a -> unit -> int 我不明白为什么int->'a->unit->int 为什么不(int*a')->unit->int,因为函数i接收两个输入 这个函数(以及SML中的任何函数)实际上是接收一个输入,因为使用了curry 从技术上讲,有一个函数取单位,它返回的函数取‘a’,它返回的函数取int 所以

sml中的相互依赖结构

可以通过和关键字在sml中定义相互依赖的数据类型。现在我有两个相互引用的结构,我看到的错误似乎是因为它是相互递归的,但我看不到一种方法来添加和,这样可能会起作用 例如: structure Machine = struct structure F = Frame ... end structure Frame = struct ... reference to Machine.wordsize end 这是可行的还是设计与sml不兼容?我正在从Ocaml移植代码,显然这是可

SML中十进制到二进制的转换

我有下面的公式 fun foo 0 = [0] | foo num = let val l = (num mod 2)::foo(num div 2) in rev l end; 它应该从十进制转换为二进制。它有以下签名 val foo = fn : int -> int list 我不确定我到底在哪里出错,因为我得到的结果不正确。有人能帮我找出我在哪里出错吗?问题似乎是,在每个递归步骤中都要反转结果列表,而不是在最后只反转一次 此外

我的SML代码需要多少空间?

我有如下SML代码 fun fact(n) = let fun f(n,g) = if n=0 then g(1) else f(n-1, fn x=>g(x)*n) in f(n, fn x=> x) end; 我想知道我的代码中需要多少空间来计算fact(n)。 是否需要O(n)?我不太清楚。是的,您编写的函数在最后计算闭包之前会创建n个闭包 以下是一个更节省空间的版本: fun fact n = let fun fac

Sml 数据类型的未绑定类型构造函数

如果我已经初始化了一个int*int的数据类型dataype dd=DAT,我该如何为函数初始化该类型 该类型称为Cint,而不是CI,因此您必须在需要类型的地方使用Cint: fun cadd(a:Cint, b:Cint) = 或者,如果您想继续使用数据类型构造函数CI,则可以使用不同的语法,包括模式: fun cadd(a as CI _, b as CI _) = 您也可以在函数中直接进行模式匹配,而不是使用以下情况: datatype Cint = CI of int * int

如何在SML中编写递归函数?

下面是我正在实现的递归函数的python代码 def f(x): return x+1 def iter(n, f,x): if n == 0: return x return iter(n-1, f, f(x)) 调用iter iter(7, f, 9) 我如何用SML写它 fun iter 0 f x = x |iter n f x = iter(n-1, f, f(x)); 语法是: fun iter 0 f x=x |iter n f x=iter(

Sml ml数据类型(带基元函数)如何制作?

我有这个数据类型 datatype e = X | Const of int | P of e*e | S of e*e | M of e*e | D of e*e; 这个程序呢 val rec evl = fn (Const k)=>(fn x=>k)| X=> (fn x=>x)| P(e1,e2)=> (fn x=> (evl e1 x)+(evl e2 x))| S(e1,e2)=> (fn x=> (evl e1 x)-(evl e2

SML中的阿隆佐教堂数字

我有一个任务,涉及用SML制作教堂数字。我环顾四周,就是找不到我做错了什么。目标是生成一个函数,该函数接受int并返回一个church数字,定义为数据类型'a numeric=Num of('a->'a)->'a->'a->'a(由我的老师预定义)。然后生成第二个函数,该函数接受一个church数字并返回一个int 我以前看到过一篇带有代码的帖子: val ZERO = C(fn (f,x) => x) fun subCreate 0 (f,x) = x | subCreate n

Sml 如何定义自己的mymod函数?

我试图定义我自己的mymod函数,其中mod通常是3 mod 2=1函数。 我不知道从哪里开始。有什么建议吗?因为你不知道从哪里开始,这里有一些提示: 1) mymod应该是中缀函数。正确的语法是 infix mymod; fun x mymod y = ... 2) 您应该了解如何使用-、*和\实现mymod。我建议您在编写函数之前手动尝试几个示例 3) 由你来处理零除法的问题

我得到错误:语法错误:编译SML代码时插入ELSE ID,我不';我不知道为什么

我正在参加一个Coursera课程,我正在努力做我的家庭作业 我们必须编写一个SML程序,该程序接受一个卡片列表(根据它们的套装和等级进行分类),如果它们都有相同的颜色,则返回true,否则返回false 这是我的代码(我不明白为什么它是假的,但我退出了编程): 我不懂那种语言,但你的最后一个条件是不正确的(我想是某种Haskell): 应该是: |x::y::xs => if card_color(x)=card_color(y) then all_same_color(y::xs)

Sml 用EQUALOP ML错误替换逗号

用EQUALOP替换逗号时出现了一个错误。我不明白代码中的错误是什么 在z的声明中,power的参数周围需要括号: val x =10; fun power (x:int, y:int) = if y=1 then x else x * power (x,y-1) val z = power 2,3 在z的声明中,power的参数周围需要括号: val x =10; fun power (x:int, y:int) = if y=1 then x else

SML快速排序中的无限循环?

所以,我在SML中编写了这个快速排序函数来利用高阶函数折叠,但是它被挂在一个无限循环中,我无法确定导致它的错误逻辑。关于去哪里看有什么建议吗 (* takes in a list of numbers and an arbitrary binary relation function f *) fun quicksort nil f = [] | quicksort [x] f = [x] | quicksort list f = let (*

SMLNJ,尝试从文件运行程序,未知错误

我试图使用“use”命令从一个文件中执行几行代码,但出现了我不理解的错误 StdIn:1.6-1.10 Error unclosed string 我到处搜索,试图找到那个错误意味着什么,但现在运气好了 请帮助“未关闭的字符串”表示您已使用“启动了一个字符串,但您没有使用另一个“关闭它 那么,在您的案例中,为什么会出现这种错误呢?显然,您确实有适当数量的“s?好吧,如果我们查看列号,我们会发现错误是关于从第一个“开始并在反斜杠后的h结束的部分,这意味着它希望字符串在那里结束 因此,基本上错误

检查函数是否在SML中定义

给定SML源文件,是否可以检查(使用Poly/ML)是否定义了函数/值名称列表?如果是,怎么做 或者,我注意到您可以执行以下操作。假设我们有一个名为somefile.sml的要检查的源文件。假设我们创建文件test.sml,包含以下内容: use "somefile" f; (* defined in somefile.sml *) g; (* undefined *) 然后我们运行: use "test" handle e as SyntaxError => (print (exnMe

实数与整数的SML幂运算

我写了一个函数,它用基数b和指数e进行幂运算,如下所示: fun power b e = if e = 0 then 1 else b * power b (e-1); 显然,这对整数有效,如输出所示: val power = fn : int -> int -> int 但是,我希望它取一个实数表示b,取一个整数表示e。我尝试使用以下方法: fun power (b : real) (e : int) = if e = 0 then 1 else b * power b (e-

SML:错误:运算符和操作数don';不同意[泰康不匹配]

我试图编写一个SML函数,它有两个参数,第一个是 int,第二个是列表列表。目标是将第一个参数插入到第二个参数中每个列表的前面。例如,append_to_front(1,[[3,4],[6,8],][/code>应该返回[[1,3,4],[1,6,8],[1]] 我有密码: fun append_to_front(a:int, L:int list list) = if L = [] then [] else a::hd(L)::append_to_front(a, tl

Sml 标准ML错误:运算符和操作数don';我不同意

我想在求和之前写一个函数number\u,它接受一个名为sum的int,并返回一个int n,使得列表的前n个元素相加小于sum,但列表的前n+1个元素相加为sum或更多。 这是我的密码 fun number_before_reaching_sum(sum:int,lists:int list)= let val sum_list=0 val n=0 in let fun list_compute(sum_list:int,lists2:int list,n:int)=

SML:多案例陈述

我怎么能有多个case语句彼此不交错呢。 例如,一个玩具示例: fun multi_cases(xs) = case xs of [] => 5 | x::ys => case x of 1 => 2 |_ => 3 | x::[] => case x of 1 => 5

Sml 如何在递归函数中使用if-then-else

我正在编写一个函数,该函数将获取一个列表列表,并将其合并为列表的排序对。例如[[1]、[9]、[8]、[7]、[4]、[5]、[6]]将返回[[1,9]、[7,8]、[4,5]、[6]]。这是我第一次尝试SML。我经常遇到这样的错误:运算符和操作数不一致[重载冲突] fun mergePass[] = [] | mergePass(x::[]) = x::[] | mergePass(x::y::Z) = if x<y th

在不打印签名的情况下声明函数[SML]

是否可以在不打印签名的情况下在SML中声明函数 我发现您可以通过执行以下操作来打印字符串,而无需打印val it=():unit: val _ = print("Test1"); 是否有可能在功能上实现相同的功能?比如: val _ = fun foo x = x + 5; foo 10; 以下程序不会在SML中编译。 我知道我可以使用let\local,但是我不能在闭包之外使用它们。另外,我正在寻找一种不导入其他库的方法。您所要求的仅与REPL相关,因为函数签名仅打印在REPL中。如您所建

Sml 包含所有数字的最小子列表

我正在尝试用sml编写一个程序,该程序包含列表的长度、列表中出现的最大数字,当然还有列表。然后计算包含所有数字的最小子列表的长度 我尝试使用滑动窗口方法,有两个索引,前和尾。前端首先扫描,当它找到一个数字时,会将它已经看到这个数字多少次写入地图。如果程序找到所有数字,则调用尾部。尾部扫描列表,如果发现某个数字的显示次数超过1,则将其删除 到目前为止,我尝试的代码如下: structure Key= struct type ord_key=int val compare=Int.comp

使用模式匹配从SML中的列表中删除连续重复

我想制作一个函数removeDups,如果可能的话,它将只使用模式匹配从列表中删除任何重复的元素。如果我有一个类似于[1,1,1,2,3,4,4,5,6,6,6,6,7,8]的列表,那么我希望输出是[1,2,3,4,5,6,7,8] 到目前为止,我得到的是 fun removeDups [] = [] | removeDups (x::y::xs) = y::removeDups(xs); 这给了我输出[1,2,4,4,6,6,6,8] 我理解的主要问题是跟踪一个元素,这样它就不会再重

帮助sml-陷入困境

如何声明函数,使Listn:“”a list->“”a list->bool,Listn xs和ys返回true。 示例:lisen[#“1”#“2”],[#“1”#3”]返回false,并[#“1”,#“2”[#“2”,#“1”]返回true尝试以下操作: infix member fun x member [] = false | x member (y::ys) = x = y orelse x member ys; fun listn (x::xs) ys =

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

我正在尝试使用动态规划计算二项式系数。我一直在犯这个错误 fun binomial(m:int, n:int, DP) = if n = m orelse n = 0 then Array2.update(DP, m, n, 1) else if Array2.sub(DP, m, n) = ~1 then ( if Array2.sub(DP, m-1, n) = ~1 then Array2.update(DP, m-1, n, binomial(m-1,

Sml 列表是否包含交替元素

我正试图写一个函数来检查它的元素是否是交替的 此类列表的示例如下:[1,2,1,2,1,2] 我迄今为止的努力: fun isAlternating(lst) = case lst of [] => true | x::y::tail => if y <> x then isAlternating(y::tail) else false 我似乎错过了一个模式,但我不知道是哪一个。有人能

Sml 函数确定数字是否在斐波那契函数中?

我需要在sml中编写一个函数,它接受一个数字并确定它是否是斐波那契数。 我已经做了斐波那契函数 fun fib 1=0 | fib 2=1 | fib n= fib (n-1)+fib(n-2); 但我想不出第一个?你有什么想法吗?这可能会对你有所帮助 fun isfib 0 = true | isfib x = let fun help (i,j) = if j >= x then x = j else help (j,j+i) in

Sml 如何分别比较标准ML中两个字符列表的每个元素

我对SML非常陌生,我正在尝试编写一个函数,其中比较两个字符列表,例如,它从列表1中提取一个字符,并将其与列表2中的所有字符进行比较 val list1 = explode("abcdefghijklmnopqrstuvwxyz") val list2 = explode("bcdaghklfeijonmtrqpsvuwyzx!-232=,./;'[]{}:?<") val list1=explode(“abcdefghijklmnopqrstuvxyz”) val list2=expl

SML运算符和操作数don';我不同意foldr

我正在做一个作业,我必须写一个函数来计算列表的长度。这是一项琐碎的任务,但我遇到了一些我不明白的事情 我的简单代码 val len = foldr (fn(_, y) => y + 1) 0 产生此警告 警告:类型变量未通用化,因为 值限制被实例化为虚拟类型(X1、X2、…) 当我尝试在REPL中运行它时,我得到以下结果: len [1, 2, 3, 4]; stdIn:18.1-18.17 Error: operator and operand don't agree [overloa

SML/NJ未在Mac上自动加载Basis库

当我尝试使用函数List.nth时,sml shell返回以下错误消息: - List.nth([1,2,3],0); [autoloading] unexpected exception (bug?) in SML/NJ: Io [Io: openIn failed on "/Users/jhr/Work/smlnj/osx-dist/smlnj.dst/sml.boot.x86-unix/smlnj/basis/.cm/x86-unix/basis.cm", No such file or

如何在SML中操作元组列表?

我是SML新手,我想知道如何在元组列表中获取元素。例如,在列表[(“abc”,4),(“def”,6)]中,如何提取“abc”?我试过了 x::xs => #1(x) 但我一直收到“未解决的flex记录”。有什么建议吗?您可以使用模式匹配将其提取出来 let val lst = [("abc", 4), ("def", 6)] in case lst of (str,_)::xs => str | [] => "The list is em

如何在SML中将任何内容转换为字符串?

我正在尝试实现一个测试函数,以便在它们不相等时比较并显示错误消息: exception AssertionErrorException of string fun assert(testName, actual, expect) : bool = if actual = expect then true else raise (AssertionErrorException (testName ^ " failed. actual: " ^ actual

在SML中将oct字符串转换为十六进制字符串

如果输入是oct编号的字符串。例如,“\177”。将“\177”转换为相应的十六进制数字字符串(即“0x7F”)的最佳方式是什么 我正在SML中写文章,并查看了StringCvt,但没有找到好的解决方案 不完全确定主观上的善良,但以下是我设法想到的 - Int.fmt(StringCvt.HEX)(Char.ord(valOf(Char.fromCString("\\177")))); val it = "7F" : string

Sml 语法错误:插入LPAREN

这是我第一次使用sml 我不明白这种语法有什么问题: fun merge (l1 : int list , l2 : int list) : int list = if ([] , l2) then l2 else if (l1 , []) then l1 else (x :: xs , y :: ys) if x < y then x :: (merge (xs , l2)) else y :: (merge (l1 , ys)

Sml 标准ML中列表上的映射函数

根据这一定义: 追加列表是列表抽象数据类型的(简单)实现,它使构造变得便宜(O(1)),但使销毁变得昂贵(O(n))。'a alistNN和'a alistNN类型定义如下: datatype 'a alistNN = Sing of 'a | Append of 'a alistNN * 'a alistNN datatype 'a alist = Nil | NonNil of 'a alistNN 'a alistNN类型表示“非nil”附加列表,而'a alist类型表示任意(nil或

Sml 关于如何用ML编写函数的问题?

编写一个函数allLessThan。它获取两个整数列表,并测试第一个列表中的所有整数是否小于第二个列表中的所有整数 例如,allLessThan([2,4],[6,7,8])将返回true 我尝试设置函数,让集合等于xx和yy,这样如果xx中的每个元素都小于yy中的每个元素,那么函数将返回true,如果不是,则返回false - fun allLessThan([], yy) = true = | allLessThan(xx, []) = false = | allLessThan(x::

Sml 小编码错误

我在CPN ML中工作,这或多或少与SML相同。 我确信代码的以下部分是有效的: color Product = string; color Number = int; color StockItem = record prod:Product * number:Number; color Stock = list StockItem; var x:StockItem; var s:Stock; fun incrs(x:StockItem,s:Stock) = if s=[] th

Sml 从alpha到int的函数

所以我有一个函数,我想写: fn (x:'a) => ??? (type: 'a -> int) 我试过这样做: fn (x:'a) => (x:int) 但很明显,这会返回一个匹配约束错误。那么我有什么办法可以做这件事吗 ==编辑=== 有没有办法“反转”功能?我的意思是具有以下类型的功能: int -> 'a 只需返回您选择的任意整数。@AaditMShah是否有方法反转该函数?比如从int到a?是的,有。要么进入无限循环,要么抛出错误。@AaditMShah在

每月练习次数(在SML中获得相等的.OP错误,一个函数起作用,另一个不起作用)

(*在一个月内写一个函数号,它包含一个列表 日期和月份(即整数)和 返回列表中给定月份的日期数。*) (*以月为单位写一个函数号,它包含一个日期列表和一个月列表 (即,int列表)并返回日期列表中 在月份列表中的任何月份中。假设月份列表 没有重复编号。提示:使用上一个问题的答案。*) 当我试图编译第二个函数时,它会给我这个错误: hw1.sml:42.5 Error: syntax error: inserting EQUALOP [unexpected exception: Compile]

为什么我的sml代码中会出现这些错误?

我正在为一个作业用标准ML创建一个标准ML解释器,但我似乎无法解决这个问题 我在函数eval中有这个条件: | eval (rho, SetExp (name, value)) = (case rhoContains rho name of true => rhoSet rho name value | false => globalSet (name, value)) 以及以下辅助功能: fun rhoSet [] key value

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