首页 文章
  • 1 votes
     answers
     views

    在OCaml中找到矩阵中的x

    我正在尝试在OCaml中编写一个函数,给定一个包含条目"u","d","l","r"和"x"的矩阵中的坐标,如果从该坐标开始跟随'directions'结束于"x",则返回true,否则返回false . 我的策略是检查我之前是否访问过当前单元格(如果是,返回false),通过传...
  • 1 votes
     answers
     views

    设置尾部递归的交叉点

    我试图使用尾递归和空列表 [] 作为 accu 为两个集合的交集生成解决方案: let rec setintersect list list = let rec setintersect2 a b c = match a with | [] -> (match b with [] -> (setsimplify c) | h::t -> (setsimp...
  • 267 votes
     answers
     views

    滥用代数数据类型的代数 - 为什么这有效?

    代数数据类型的“代数”表达式对于具有数学背景的人来说非常具有启发性 . 让我试着解释一下我的意思 . 定义了基本类型 产品 • 联盟 + Singleton X 单位 1 并使用 X² 用于 X•X 和 2X 用于 X+X 等等,然后我们可以定义代数表达式,例如链表 data List a = Nil | Cons a (List a) ↔ L = 1 + X • L 和二叉...
  • 2 votes
     answers
     views

    Ocaml函数将元组转换为列表

    我有一个(int * string)元组,我想将其转换为列表 . 元组的形式为(N,E),其中N是元素E的出现次数 . 函数应该返回一个列表,其中包含N个出现的E . 示例如下 . 让我们假设这个函数叫做tuple_decode . tuple_decode (1, "A") -> ["A"] tuple_decode (2,"B"...
  • 0 votes
     answers
     views

    ocaml函数使用元组和元组列表返回元组

    我有以下问题,我的函数采用元组和对的列表,它应该返回一个元组,但我得到错误说, a is tuple contains (int*list) and x is list of pairs [(a1,b1).....(an,bn)] 我想要做的是添加两个列表在一起让我说我传入 [9;9] [1;0;2] 然后它应该返回 [2;0;1] ,并使用 list.fold_left 尾递归来做它 . ...
  • -2 votes
     answers
     views

    ocaml'列表列表函数元组

    let sample_table4 = [ [["11"];["21"];["31"];["41"]]; [["12"];["22"];["32"]]; [["13"];["23"]]; [["14"...
  • 53 votes
     answers
     views

    纯功能数据结构有什么好处?

    有关数据结构的大量文本和数据结构代码库 . 我知道纯粹的功能数据结构更容易推理 . 但是,我很难理解在实用代码中使用纯函数数据结构(使用函数式编程语言与否)在命令式对应方面的真实优势 . 有人可以提供一些真实世界的案例,其中纯功能数据结构具有优势,为什么? 这一行的例子就像我在 programming_language 中使用 data_structure_name 做 application 因...
  • 2 votes
     answers
     views

    OCaml Makefile:没有规则来制作目标

    我正在关注这个OCamlbuild example,因此创建了下面的Makefile: OCB_FLAGS = -use-ocamlfind -I src -I lib OCB = ocamlbuild $(OCB_FLAGS) check: ocamlfind query core async clean: $(OCB) -clean byte: $(OCB) main.byte native...
  • 2 votes
     answers
     views

    从OCaml中的列表列表中提取值

    让我说我有一个列表包含和int *列表列表我如何能够从这种类型的列表中提取int的值?您可以对列表的头部或尾部进行模式匹配,但是如何提取int?
  • 56 votes
     answers
     views

    构建和构建OCaml项目的首选方法是什么?

    对于生态系统的新手来说,目前尚不清楚构建和管理中小型OCaml项目的规范首选方式 . 我理解 ocamlc 的基础知识,它们反映了传统的UNIX C编译器,看起来很简单 . 但是,高于单个文件的一次性编译水平,目前还不清楚如何简单干净地管理编译 . 问题不是寻找潜在的工具,而是通过社区的经验验证一种或几种正确(足够)的方法来构建和构建标准的OCaml项目 . 我的模型用例是一个适度但非平凡的项目,...
  • 6 votes
     answers
     views

    ocamlfind / ocamlbuild工具链如何与包的项目本地副本一起使用?

    我试图保持我的项目自包含,在项目存储库中构建和引用所有主要的第三方库依赖项 . 我的项目的主要部分依赖于ocamlbuild . 但是对于像Batteries Included这样的复杂软件包,人们强烈期望通过ocamlfind将它们链接到一个项目中 . ocamlfind似乎假设将在全局安装软件包 . (我意识到它允许环境变量及其conf指向备用位置,但它基本上似乎仍然围绕包全局配置的假设 ...
  • 3 votes
     answers
     views

    我的Makefile中有硬编码路径 - 如何使用ocamlfind来消除这些? (或者如何使用ocamlbuild或omake代替)

    我正在尝试构建一个需要camlp4扩展的ocaml项目(在这种情况下为pa_deriving) . 这是我的Makefile: include ./Makefile.config OCAMLC := ${OCAMLFIND} ocamlc OCAMLOPT := ${OCAMLFIND} ocamlopt OCAMLDEP := ${OCAMLFIND} ocamldep PP ...
  • 3 votes
     answers
     views

    使用ocamlbuild将选项传递给camlp4

    我_887850_本地支持ocamlfind来简化我的项目的构建过程 . 文件 foo.ml 依赖于使用camlp4宏的条件编译 . _tags 文件包含以下内容: <foo.ml>: package(camlp4.macro), syntax(camlp4o) 这很好用,但我无法将选项传递给camlp4 . 不使用ocamlbuild ocamlfind自动化,命令行将是这样的...
  • 3 votes
     answers
     views

    使用Ocamlbuild使用配置文件信息构建本机可执行文件

    如何使用Ocamlbuild构建启用的配置文件信息?似乎 -p 在那里不起作用 . 现在,我使用 ocamlopt . 例如, $ ocamlfind ocamlopt -c -p -thread -package core test.ml $ ocamlfind ocamlopt -p -o test -thread -package core -linkpkg test.cmx 怎么做同样...
  • 4 votes
     answers
     views

    ocamlbuild:使用选项构建插件

    我正在尝试编写一个ocamlbuild插件(myocamlbuild.ml),它将使用另一个文件中的定义 . 我有很多定义,我想在几个构建插件中使用,我想把它们放在自己的文件中 . 我尝试运行ocamlbuild两次,一次使用-no-plugin只是为了构建插件,例如 ocamlbuild -no-plugin myocamlbuild.cmo 之后又一次 ocamlbuild actual-ta...
  • 3 votes
     answers
     views

    用ocamlbuild构建库,用ocamlfind安装它 - 什么是最佳实践?

    我正在使用 ocamlbuild 通过 mylib.mllib 文件编译OCaml库,该文件列出了包含库的模块 . 之后我想使用 ocamlfind 安装库文件 . 与使用 ocamlbuild 构建的二进制文件不同,所有库文件都在 _build 目录中 . 是使用类似的东西安装它们的正确方法 ocamlfind install META _build/a.cma _build/a.cmxa .....
  • 4 votes
     answers
     views

    绿洲捡起错误的ocamlbuild

    我尝试使用Opam提供的Ocaml版本编译Ocaml项目 . 我的ocamlbuild,ocamlfind和绿洲似乎没问题: /Users/fred/.opam/4.02.1/bin/ocamlbuild dhcp-182-73:compil fred$ which ocamlfind /Users/fred/.opam/4.02.1/bin/ocamlfind dhcp-182-73:compi...
  • 1 votes
     answers
     views

    与ocamlbuild的可选依赖项

    我有一个OCaml项目,目前使用OCamlMake构建 . 我对当前的构建系统不满意,因为它将所有构建工件保留在与源文件相同的目录中,此外还需要手动指定模块之间的依赖关系顺序 . 我想切换到不受这些问题影响的构建系统 . 我决定试试Oasis,但遇到了问题 . 问题产生于项目以非常具体的方式建造的事实 . 它支持几种不同的数据库后端(PostgreSQL,MySQL,SQLite) . 目前,要编...
  • 1 votes
     answers
     views

    使用ocamlmktop和ocamlbuild

    我有一个使用ocamlbuild成功构建的项目 . 但是,我还想通过一个简单的方法从不同的模块通过顶层与项目的各个功能进行交互,但是我使用ocamlmktop的尝试并没有像我想的那样成功 . 我发现除非我手动将.cmi文件放在活动目录中,否则会出现“未绑定模块”错误 . 我目前用来构建的命令是: ocamlfind ocamlmktop -I _build -o my_ocaml -linkpkg...
  • 21 votes
     answers
     views

    什么是类型量词?

    许多静态类型语言具有参数多态性 . 例如在C#中,可以定义: T Foo<T>(T x){ return x; } 在呼叫站点中,您可以: int y = Foo<int>(3); 这些类型有时也像这样写: Foo :: forall T. T -> T 我听过有人说"forall is like lambda-abstraction at the t...
  • 4 votes
     answers
     views

    在OCaml中将构造函数名称转换为字符串

    我的代码中有以下类型定义: type tag = | Head | Title | Body | H1 | P;; type domtree = | Empty | Node of tag * string * domtree list;; 我需要打印标签和字符串 . 但我找不到任何方法将标记(第一个类型定义中的构造函数名称)转换为字符串,并将它们与domtree的字符串部分连接起来 . 有没...
  • 0 votes
     answers
     views

    如何在使用纯功能深度优先搜索时防止循环

    我有一个图表,实现为连接任意节点的边列表,下面定义了数据类型 . type edge = int * int;; type graph = edge list;; 如何在避免陷入循环的同时执行纯功能深度优先搜索?我不太清楚如何跟踪所有访问过的节点,同时保持纯粹的功能 . 答案可能是微不足道的,我不是出于某种原因在概念上 grab 了 .
  • 4 votes
     answers
     views

    我们可以查看部分推断的输入信息 . 来自Ocaml toplevel /编译器的程序无法编译?

    我想知道,在Ocaml中,是否有部分输入信息 . 可以通过toplevel / compiler的一些现有功能绘制,对于不编译的程序?让我解释 . 在Ocaml中,众所周知,推断类型可以通过-annot文件检索 . 但是,有时我们有一段代码由于某些输入错误而无法编译 . 它会将错误导出到此模式的顶层 "This expression has type A, but was expecte...
  • 8 votes
     answers
     views

    将OCaml转换为F#:是否有像Visual Studio一样的GUI调试的OCaml IDE

    我正在将几个模块从OCaml转换为F# . 为了捕获错误并验证一些更好的差异,我同时针对相同的测试用例运行两个版本 . 对于F#,我使用的是Visual Studio调试器,对于OCaml,我使用的是ocamldebug . 由于Visual Studio是一个GUI而ocamldebug是一个命令行,因此进行比较需要比来回视觉扫描更多的关注 . 我想知道是否有任何OCaml IDE支持带有步进的...
  • 10 votes
     answers
     views

    OCaml,Scala和Go的结构类型实现

    在研究结构类型时,我发现以下帖子描述了how interfaces in Go are translated to method lookup tables at runtime . 帖子中描述的过程似乎与针对Scala的可选结构类型系统和Java语言的White Oak扩展所描述的reflective and generative techniques截然不同 . 是否有任何深入的资源讨论如何在...
  • 12 votes
     answers
     views

    F#中的impredicative多态性

    OCaml的Hindley-Milner类型系统不允许使用impredicative多态(àlaSystem-F),除非通过最近的记录类型扩展 . 这同样适用于F# . 然而,有时希望将用不可预测的多态性(例如Coq)编写的程序翻译成这些语言 . 针对OCaml的Coq提取器的解决方案是(谨慎地)使用 Obj.magic ,这是一种通用的不安全转换 . 这是因为 在OCaml的运行时系统中 ,...
  • 2 votes
     answers
     views

    OCaml:如何以pythonic方式构造格式化字符串?

    所有这些都从一个简单的想法开始:如何在ocaml中编写python样式的格式化字符串 . pythoners可以初始化一个字符串: str = "this var: %s" % this_var str2 = "this: %s; that: %s" % (this_var, that_var) 但ocaml的格式化字符串代码为: let str = Pr...
  • 3 votes
     answers
     views

    Ocaml:使用list.length

    我试图在ocaml中找到列表的长度 . 我先调用一个函数调用 get get_list_length e inprint_list_length out x get_list_length中的实际代码是我感到困惑的地方 . “e”是一个“命令”列表,我想找到所有“命令”的长度 . let get_list_length(e:values):unit = match e with let...
  • 1 votes
     answers
     views

    OCaml中的List.fold_left

    我写了一个函数,它添加了给定列表中的所有元素: let rec add = function []->0 | h::t->h+add(t);; 现在我想写相同的函数,但使用 List.fold_left ,但我尝试了几个更改,但我仍然有一个错误 . 首先我尝试了这个: let rec add = function []->0 | h::t-> add List.fold_l...
  • 1 votes
     answers
     views

    Int列表到int OCaml

    我是OCaml的新手,所以我正在学习基础知识 . 我正在编写一个函数来确定列表是否包含给定的整数 . let rec int_member (x: int) (l: int list) : bool begin match l with | [] -> false | hd :: rest -> x = hd || int_member rest x end 作为测试案例........

热门问题