我正在用OCaml实现一个Prolog解释器。我遇到的问题是在main函数中。本质上,我试图将我的解释器堆栈存储在一个函数调用中,并修改该堆栈的副本,然后将该副本从这个特定的函数调用传递给递归调用。当递归调用报告失败时,这个原始函数调用应该使用我保持不变的原始堆栈,并进行不同的递归调用(以实现回溯)。
现在,问题来了。当我只打算修改tempstack时,栈和临时栈(tempstack)都会被修改。我花了几个小时试图弄清楚这个问题,我很确定就是这个问题。下面是main函数的代码片段..
let rec main stack clauselist counter substitutions var
for i in list404:
for j in range(len(table)):
if table[j][0] == i:
table.remove(table[j])
for k in range(len(stack)):
if stack[k][0] == i:
stack.remove(stack[k])
for l in range(len(symbols)):
if symbols[l] == i:
symbols.remove(
Java中协议栈开发的最佳实践是什么?
在本例中,我的Java应用程序将与PC外设“对话”,该外设的总线将以协议格式传输数据。
示例:
假设我的协议有一条由一个整数、一个字符串和一个整数列表组成的消息:
class MyMessage { int filed1; String filed2; LinkedList<int> field3;}
我想要的最终产品是允许这样做的东西:
// Message to fill
MyMessage msg = new MyMessage();
// InputStream with the data to bind
InputStream s
假设我有一个看起来像这样的DataFrame:
keys sample verify
0 foo a 1
1 bar b 2
2 monty c 3
3 foo d 4
4 bar e 5
5 monty f 6
我想要在这个表单中:
foo_1 bar_1 monty_1 foo_2 bar_2 mo