ocaml

    2热度

    1回答

    我开始学习OCaml语言。你能告诉我为什么这段代码显示错误吗? let unite x = if x < 100 then x mod 10 else if x >= 100 then x mod 100;; let dizaine x = if x < 100 then x/10 else if x >= 10 then unite(x/10);;

    2热度

    1回答

    问题 为什么 val of_bindings : (key * '_a) list -> '_a t val of_bindings : (key * 'a) list -> 'a t 不同的签名? 语境 我有一些地图扩展实现: MAPEXT.ml: module type T = sig include Map.S val of_bindings : (key * '

    0热度

    1回答

    我想在OCaml中实现一个队列结构,现在正在编写一个测试值是否在队列中的函数。我原本写了一个正确的 - 或者至少我认为这是一个正确的 - 实现的功能。但是当我测试它时,我会得到意想不到的测试失败。也就是说,当队列是空的时候它会返回false(一件好事),但在其他情况下也会返回false,无论队列是否为空,以及队列是否包含该值。所以我用这种愚蠢的方式重新编写了这个函数(其中Some h -> tru

    0热度

    1回答

    当我运行以下代码时,出现语法错误,但据我所知,语法是正确的。这将尝试实现队列结构,其中函数from_list将列表转换为具有相应值的队列。我写了str_of_int_q来打印队列的内容。 x和y应该是两个节点,头部为x,尾部为y。 ;; open Assert type 'a qnode = {v: 'a; mutable next: 'a qnode option} typ

    0热度

    1回答

    我正在用Ocamllex为Brainfuck编写一个词法分析器,为了实现其循环,我需要更改lexbuf的状态,以便它可以返回到流中的前一个位置。上Brainfuck(可跳过) 背景信息 在Brainfuck ,环路是通过一对方括号与 完成了以下的规则: [ - >继续进行,并评估下一个标记 ] - >如果当前单元格的值不是0,则返回匹配的[ 因此,下面的代码的计算结果为15: +++ [ > ++

    0热度

    2回答

    我正在OCaml做一个学校任务,我对表达的含义有疑问。 当定义功能,如果我举个例子,写道: let iter : int * (int -> int) -> (int -> int) = fun (n,f) -> 是什么(int -> int)意思?我明白函数本身收到一对作为参数,但我不完全明白括号是什么意思...

    2热度

    2回答

    你如何制作一个匿名递归函数(例如阶乘n的简单事情?)我听说过它是可能的,但不知道如何使它在OCaml中工作。 let a = fun x -> .... 我只是不知道如何继续下去......

    0热度

    1回答

    我在查找OCaml中典型指数函数的更快版本时遇到了问题。这里有一些指引,我试图遵循: 不是的expt b n ==> b * (b * (b ...)典型的递归指数版本的函数接收两个参数B和N,基本上采取分而治之的立场。 如果n为偶数,则fastexpt b n => (b^(n/2))^2否则,如果n是奇数则fastexpt b n => b * (b^(n - 1)) 下面是我迄今编写的代码:

    0热度

    1回答

    这是我的函数映射在二叉树 type 'a btree = Empty |Node of 'a * 'a btree * 'a btree let rec treemap t f = match t with |Empty -> Empty |Node(root,left,right)-> Node(root f, treemap left f, treemap

    2热度

    1回答

    我最终试图做的事情是1)限制对模块(因此mli文件)的可见性和2)定义一个函子,其中参数具有“规范实现“,它作为一个ml/mli对生活在源码树中,并坚持参数具有与此规范实现相同的形状。 假设我有一个包含字符串连接 (* concat.ml *) type t = string let concat x y = x^y 单一功能的文件concat.ml和我有一个接口,它 (* concat.