当尝试在二维数组中设置值时,如下所示:
let a = Array.make 5 (Array.make 5 0);;
a.(0).(0) <- 4;
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它将放在二维数组中包含的每个数组的4索引处。ja
为什么会这样,我如何才能将其设置为a[i][j]仅4?
我正在实现Raft协议,我的代码如下:
let rec request_vote_loop: int =
match myState.myRole with
| Follower -> 0
| Leader -> 1
| Candidate ->
let trigger = Domain.spawn(fun _ -> Chan.send c TriggerEvent) in
let request_vote_daemon = Domain.spawn(fun _ ->
let rec loop n =
if n = 0 then 0
else let msg = Chan.recv votes in
match msg with
| (status, id) ->
Domain.join (Array.get !arr id);
if status = 1 then (Array.get votePeers id) := true; (Chan.send c ReceiveVoteEvent); loop (n …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 OCaml 中编写以下代码:
let a = 0
let b = 1
if a > b then
{
print_endline "a";
print_endline "a";
}
print_endline "b"
Run Code Online (Sandbox Code Playgroud)
然后我遇到了以下错误:
let a = 0
let b = 1
if a > b then
{
print_endline "a";
print_endline "a";
}
print_endline "b"
Run Code Online (Sandbox Code Playgroud)
我尝试过使用begin和end关键字。
码:
let rec get_val (x, n) = match x with
[] -> -1
| if (n=0) then (h::_) -> h
else (_::t) -> get_val(t, n-1)
;;
Run Code Online (Sandbox Code Playgroud)
错误信息:
Characters 55-57:
| if (n=0) then (h::_) -> h
^^
Error: Syntax error
Run Code Online (Sandbox Code Playgroud) 只是想知道有没有办法在功能样式中实现heapify操作?
假设数据类型是:
type 'a heap = Empty | Node of 'a * 'a heap * 'a heap
Run Code Online (Sandbox Code Playgroud) 可能这个问题非常简单,但我是Ocaml编程语言的初学者.我在网上找到了一个用Ocaml编写的解释器,用于WHILE语言.更确切地说,我有5个.ml文件实现:
我如何使用这些文件?例如,如果我想运行用WHILE语言编写的程序,那么我该怎么办?
我试图编译(ocamlc -c file.ml)我有的文件,但没有成功.
我正在使用安装了ocaml软件包的ubuntu.
我希望能够从变量生成的名称中访问常量值,例如,如果变量包含'123',则获取名为'C123'的常量的内容.
在这里搜索之后我可以看到PHP能够做到这一点,但是由于我正在玩Java,OCaml和Fortran,我想知道是否有相同的这些语言?
为什么Fibonacci递归程序工作这么久?
这是在OCaml:
let rec fib n = if n<2 then n else fib (n-1) + fib (n-2);;
Run Code Online (Sandbox Code Playgroud)
这是在Mathematica:
Fib[n_] := If[n < 2, n, Fib[n - 1] + Fib[n - 2]]
Run Code Online (Sandbox Code Playgroud)
这是在Java中:
public static BigInteger fib(long n) {
if( n < 2 ) {
return BigInteger.valueOf(n);
}
else {
return fib(n-1).add(fib(n-2));
}
}
Run Code Online (Sandbox Code Playgroud)
因为n=100它工作了很长时间,因为,我猜,它会2^100及时跟踪节点树.
虽然只生成100个数字,但它只能消耗100个内存寄存器和100个计算机.
因此,可以优化执行.
这项任务是什么以及如何解决?由于Mathematica中没有实现解决方案,因此可能不存在.关于此事的研究怎么样?
recursion ocaml functional-programming wolfram-mathematica compiler-optimization
我仍然不明白动机.
为什么他们分别为整数和浮点数乘法制作了两个不同的运算符(*和*.),就好像它们害怕超载一样,但同时它们曾经*用来表示类型的笛卡尔积?
type a = int * int ;;
Run Code Online (Sandbox Code Playgroud)
为什么他们突然变得如此勇敢?为什么不写
type a = int *.. int ;;
Run Code Online (Sandbox Code Playgroud)
或者其他的东西?
是否存在一些关系,这使得笛卡尔积更接近整数乘积并且更远离浮动乘积?
我无法弄清楚如何提出加法持久性和整数的数字根例如,从起始编号9876获得的序列是(9876,30,3),因此9876的加性持久性为2和a数字根3.
我将整数转换为一个列表(即{9; 8; 7; 6}),然后将列表相加以生成另一个整数,依此类推,直到只剩下数字.如何查看是否只剩下一位数字?数字根是这个数字