我正在写一个大型的OCaml项目.我写了一个foo.ml完美的文件.在目录的子目录中foo.ml,有一个文件bar.ml.
bar.ml引用代码foo.ml,所以它的开头是:
open Foo
Run Code Online (Sandbox Code Playgroud)
这在编译时给了我一个错误:
Unbound module Foo.
Run Code Online (Sandbox Code Playgroud)
如何在不改变位置的情况下解决这个问题foo.ml?
假设我们想要扩展现有的模块List.
我们通常只是include想要扩展的模块,然后将新方法添加到其结构中:
# module List = struct
include List
let addOne x = x + 1
end;;
Run Code Online (Sandbox Code Playgroud)
这给了我们签名:
module List :
sig
val length : 'a list -> int
val compare_lengths : 'a list -> 'b list -> int
val compare_length_with : 'a list -> int -> int
:
val addOne : int -> int
end
Run Code Online (Sandbox Code Playgroud)
现在,如果我想明确扩展模块的签名,我会尝试做类似的事情:
# module List : sig
val addOne : int -> int
end = struct
include List
let …Run Code Online (Sandbox Code Playgroud) 我开发了一个网站,其中包含一堆印刷媒体查询,以便在打印页面时对齐内容。当您在网络浏览器上进入打印模式时,查询效果很好。但我想@media print在常规网页上应用/删除这些查询,而不必进入打印模式。(通过单击按钮)有什么方法可以实现这一点吗?
CLRS 练习:6.5-8
该操作从堆中HEAP-DELETE(A,i)删除节点中的项目。给出一个针对 n 元素最大堆及时运行的实现。iAHEAP-DELETEO(lg n)
我想知道算法对于输入A[10]={84,22,19,21,3,10,6,5,20}(索引从1开始)和A[6]=10被删除是否错误。用替换最后一个节点A[6]将导致违反堆属性,忽略父值。
我为此编写了一个算法,想知道它是否正确或者我哪里出错了?
HEAP-DELETE(A,i)
A[i]=A[A.heapsize]
A.heapsize-=1
while i>1 and A[parent(i)]<A[i]
swap A[i] with A[parent(i)]
i=parent(i);
Run Code Online (Sandbox Code Playgroud)