首页 文章
  • 0 votes
     answers
     views

    SML函数调用不会将参数解析为参数

    我在调用SML函数时遇到了似乎是一个优先问题,替换: fun substitute v new (typevar q) = ... 我从另一个函数调用它: fun new_type_vars (typevar v) non_gens = substitute v new_var() (typevar v) 但是我收到一个错误: C:/sml/type_c...
  • 4 votes
     answers
     views

    SML-NJ列表等于Nil vs Null List

    我对新泽西州SML解释列表的方式有疑问: 假设我有一个函数 f(x : 'a, n : int) : 'a list ,这样 f 返回 x 的 n 副本列表,例如 f(2,5) = [2,2,2,2,2] , f(9,0) = [] . 那么我进入REPL,然后检查 f(9,0) = nil ,它返回true . 由此,我假设您可以使用 list = nil 来检查 list 是否为空列表 . ...
  • 0 votes
     answers
     views

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

    我正在编写一个函数,它将获取列表列表并将其合并到已排序的列表对中 . 例如[[1],[9],[8],[7],[4],[5],[6]]将返回[[1,9],[7,8],[4,5] ],[6] . 这是我第一次尝试SML . 我一直收到这个错误:运算符和操作数不同意[过载冲突] . fun mergePass[] = [] | mergePass(x::[]) = x::[] | ...
  • 0 votes
     answers
     views

    将字符串转换为大写

    我正在用SML编程,尝试取一个字符串并使所有字符都大写 . 我是SML和函数式编程的新手,我不太能得到匹配的类型 . 我的代码如下所示: fun allCaps (str) = let val ex = explode(str) in let fun toCaps (acc, nil: char list) = acc | toCaps (acc, ...
  • 40 votes
     answers
     views

    SML-NJ,如何编译独立的可执行文件

    我开始学习标准ML,现在我尝试使用新泽西标准ML编译器 . 现在我可以使用交互式循环,但是如何将源文件编译为独立的可执行文件? 例如,在C中,人们可以写 $ gcc hello_world.c -o helloworld 然后运行helloworld二进制文件 . 我阅读了SML NJ编译管理器的文档,但它没有任何明确的例子 . 另外,是否有另一个SML编译器(允许独立二进制创建)可用?
  • 15 votes
     answers
     views

    增加SML / NJ中的打印深度

    我试图让SML / NJ在顶层打印出一个结果,而不是在任何地方放置#符号 . 根据一些旧的文档(以及2001年新闻组的帖子),应该可以使用 Compiler.Control.Print.printDepth 但是,在SML / NJ版本110.7上,这只是一个错误: - Compiler.Control.Print.printDepth := 100; stdIn:1.1-30.8 Error: ...
  • 7 votes
     answers
     views

    在SML中进行类型转换

    我是SML的新手,我使用的是SMLNJ方言 . 出于某种目的,我一直试图将类型转换为3到3.0(int到real) . 无法找到出路 . 我怎样才能做到这一点?如何在类型之间进行转换?
  • 6 votes
     answers
     views

    SML列表相等奇数

    我有这段代码: fun foldr2(f, x::xs) = if xs = [] then x else f(x, foldr2(f, xs)) 带有类型签名 (''a * ''a -> ''a) * ''a list -> ''a 看起来非常简单,它需要一个适用于相等类型的函数和一个相等类型列表作为参数,因为 xs = [] 比较 . 但...
  • -2 votes
     answers
     views

    SML函数参数

    条件:当1.列表长于2.列表返回值:1当1.列表具有与2.相同数量的元素时 . 列表返回值:当1.列表短于w时为0 . list返回值:~1 ([1,2,4,5],[3,2,5]); 1 ([1,2],[1,5]); 0 ([5],[8,2,3]); ~1
  • 0 votes
     answers
     views

    sml in list参数函数递归

    列表和整数n . 该函数应该添加列表的第n个元素,并返回剩余的列表 . 例如 插入([5,6,7],2,9);输出:[5,9,6,7] n是2. 9是我添加第二行
  • 0 votes
     answers
     views

    简单函数返回整数列表

    如果我试图写一个简单的函数,整数对列表 - 表示一个图并返回一个整数列表:图中的所有节点,例如输入是[(1,2)(3,4)(5,6) )(1,5)] o / p应为[1,2,3,4,5,6,1,5]该函数只是返回节点列表,在返回列表中的值可能如上所述重复 . 我写了以下函数 fun listofnodes((x:int,y:int):: xs)= if xs = nil then [x :: y]...
  • 11 votes
     answers
     views

    SML:类型和数据类型之间的差异

    我是SML的新手,我想确保我真正了解基础知识 . SML中的类型和数据类型有什么区别,以及何时使用哪个?
  • 1 votes
     answers
     views

    返回给定列表中的字符串,单词之间有空格 - sml

    我必须编写一个SML函数,该函数返回一个句子,该句子由给定列表中的空格分隔 . 我必须使用foldl / foldr / map函数中的至少一个 . 这就是我写的: fun add_spaces nil = "" | add_spaces(x::xs) = foldr (fn (x,xs) => (add_spaces x)^" "^xs) x [...
  • 0 votes
     answers
     views

    SML / NJ在列表元组列表中搜索

    我对SML / NJ很新,我有点迷茫 . 我一直在尝试实现一个函数,它将搜索包含一些列表的元组列表,例如: val x = [(5, 2, [9 , 8, 7]), (3, 4, [6, 5, 0]), (11, 12, [8, 3, 1])] 我希望我的函数在目标编号和元组的元素3中的数字之间匹配时将元组的第一个元素添加到新列表中 . 我已经尝试了几种实现,但到目前为止它们都没有正常工作 . ...
  • 1 votes
     answers
     views

    检查参数是否为列表

    如果参数x是一个列表,是否有可能在SML中编写一个返回true的通用函数? fun isList(x) = ....... 预期用途: - isList(4); (* returns false *) - isList([1, 2, 3]); (* returns true *)
  • 4 votes
     answers
     views

    (SML)将类型定义为函数并创建此类型的函数

    这里的第一个问题,只是想作为序言,我做了几个查询,虽然我发现了多个问题类似的措辞,我发现没有人提出或回答我的问题(据我所知) . 我在SML工作,因为我要留下一些细节,所以我可以自己解决这个问题 . 我在SML中定义了以下类型: - type Env = string -> int; 本质上,Env类型应该是一个允许从字符串映射到int的函数 - 这是一个简单的环境方案 . 创造一个能够做...
  • 1 votes
     answers
     views

    如何从另一个函数中捕获SML中的Exception?

    我相信我对在SML中捕获异常有一些基本的误解 . 我写了以下代码: fun my_g acc p = let val r = my_g acc in case p of Wildcard => acc | Variable x => if List.exists (fn y =&gt...
  • 1 votes
     answers
     views

    不到SML中的功能

    我在SML中遇到了两个令人困惑的问题,希望有人可以帮助我: 第一个是一个函数,它接受一个元素和一个列表,并决定该元素是否存在于列表中,这是我试图编写的代码: fun member (e,L) = foldl (fn(a,b) => if (e = b) then true else false) false L; 但我得到了bool *'列表 - > bool但我需要的是''a *'...
  • 3 votes
     answers
     views

    大型Int设置为sml

    我在 sml 中遇到以下问题:我想使用 IntListSet 签名创建一个集合,而不是 int 我想使用 large int . 有没有什么办法解决这一问题? 谢谢,等待你的回答 .
  • 1 votes
     answers
     views

    在SML中反转字符串的想法

    我对SML很新,并且有一些C / C背景 . 我一直在尝试编写一个名为reverseString的函数,它接收一个字符串来反转 . 非常直截了当 . 使用辅助函数,我能够编写一个函数来反转任何给定的字符串,并在结果中添加一个额外的字符 . 例如: - reverseString("hello"); val it = "ollehh" : string 任何...
  • 3 votes
     answers
     views

    SML - 通过String迭代

    我试图找出从文件中读取的句子是否有某种模式 . 到目前为止,我已经编写了逐行读取文件中所有句子的代码,并将这些句子放入数组中 . val infile = "c:/input.txt" ; fun readlist (infile : string) = let val ins = TextIO.openIn infile fun loop ins ...
  • 2 votes
     answers
     views

    SML - 使用map解压缩

    给出一个元组列表, [(1,2),(3,4),(5,6)] 我需要解压缩它看起来像这样 [[1,3,5],[2,4,6]] 解压缩需要 ('a * 'a) list -> 'a list list 类型 . 到目前为止,我有这个作为我的解压缩功能,但我的输入不正确,我不知道如何访问传递('a *'a) . val rec last = fn (h::nil) => ...
  • 2 votes
     answers
     views

    参数列表中nat_pairs()和(nat_pairs())之间的区别

    我是SML的初学者,只是编写我的第一个函数 . 该函数应该生成具有不包含零的自然数的对流 . 此函数使用带谓词的过滤器来删除其成员之一为零的对,这会产生语法错误: fun nat_pairs_not_zero () = filters not_zero nat_pairs(); stdIn:56.20-59.1 Error: operator and operand don't agree ...
  • 2 votes
     answers
     views

    sml中rem和mod函数有什么区别?

    我正在研究sml项目,我必须为自定义数据类型实现这两个函数 rem & mod . 我知道余数 rem 的定义 .dividend = divisor * quotient + remainder mod 的定义是什么?请用简单的词语解释这些之间的区别 .
  • 2 votes
     answers
     views

    SML / NJ中的关键字“as”

    我最近看到人们在他们的SML / NJ程序中使用 as . 我找到的最有用的参考是"as" keyword in OCaml . 虽然OCaml也属于ML编程语言家族,但它们是不同的 . 例如,在上一个答案中给出的示例程序中, let rec compress = function | a :: (b :: _ as t) -> if a = b then co...
  • 17 votes
     answers
     views

    SML中的Curried匿名函数

    我有以下功能,它的工作原理: (fn x => x * 2) 2; 但是这个不起作用: (fn x y => x + y ) 2 3; 谁能告诉我为什么?或者给我一些暗示让它发挥作用?
  • 1 votes
     answers
     views

    在SML中int - > int - > int和(int * int) - > int有什么区别?

    我注意到有两种方法可以在SML中定义函数 . 例如,如果你使用add函数,这有以下两种方式: fun add x y = x+y; fun add(x,y) = x+y; 第一种方法创建函数类型: val add = fn : int -> int -> int 第二个创建函数类型: val add = fn : int * int -> int 这两种类型对于同一功能有...
  • 1 votes
     answers
     views

    累积咖喱功能(SML)

    我有一系列问题,我一直在努力,似乎无法理解最后一个问题 . 这是第一个问题,我的解决方案是: a)我们常常对计算Σi= m..n f(i)感兴趣,i = m到n的函数值f(i)之和 . 定义sigma f m n,它计算Σi= m..n f(i) . 这与定义sigma(f,m,n)不同 . fun sigma f m n = if (m=n) then f(m) else (f(m) + s...

热门问题