据我所知,该方法clone()
使我们能够在Java中复制对象(无参考).但我也读到,副本很浅.那有什么意义呢?这个clone()
方法给了我哪种能力,一个简单的辅助不具备?
我有下一个规则
% Signature: natural_number(N)/1
% Purpose: N is a natural number.
natural_number(0).
natural_number(s(X)) :-
natural_number(X).
ackermann(0, N, s(N)). % rule 1
ackermann(s(M),0,Result):-
ackermann(M,s(0),Result). % rule 2
ackermann(s(M),s(N),Result):-
ackermann(M,Result1,Result),
ackermann(s(M),N,Result1). % rule 3
Run Code Online (Sandbox Code Playgroud)
查询是:ackermann (M,N,s(s(0)))
.
现在,据我所知,在第三次计算中,我们得到了一个无限的搜索(失败分支).我检查一下,我得到了一个有限的搜索(失败分支).
我将解释:在第一个中,我们得到了M = 0,N = s(0)的替换(规则1 - 成功!).在第二个中,我们得到M = s(0)的替换,N = 0(规则2 - 成功!).但现在呢?我尝试匹配M = s(s(0))N = 0,但它有一个有限的搜索 - 失败分支.为什么编译器不会写我"失败".
谢谢.
我的程序有问题.
我有一个比较2字符串的条件:
(if(eq?(exp1)(exp2)))
当exp1给我一个字符串,exp2给我一个字符串.当然,当我改变"eq?"时 到"=",它给我下一个问题:
=:期望类型<number>作为第二个参数,给定:ie; 其他论点是:即.
当我运行程序时,函数不会进入"if"函数中的第一个表达式,并进入第二个表达式(意味着条件为false).
我能做什么?
谢谢.
我读了一篇关于继承的摘要,它总是使用“替换原则”的定义。但它并没有解释这个原理的含义。
这是什么原理?
谢谢你。
Scheme中两个函数之间的区别是什么,一个定义如下 -
(define doSomething
(lambda (x)
(let (f (100))
(f x))))
Run Code Online (Sandbox Code Playgroud)
而另一个是这样的? -
(define doSomething
(let (f (100))
(lambda (x)
(f x))))
Run Code Online (Sandbox Code Playgroud)
换句话说,如果它在它lambda
之前let
或之后有什么关系呢?
我很难理解在C++和Java中重载运算符的主题.
例如,我定义了一个新的类Fraction:
class Fraction {
public:
Fraction (int top, int bottom) { t = top; b = bottom; }
int numerator() { return t; }
int denominator() { return b; }
private:
int t, b;
};
Run Code Online (Sandbox Code Playgroud)
我想重载操作员<<
来打印Fraction.我是怎么做到的 我需要在Class Fraction或Class Fraction之外重载它吗?
在java中 - 是否可能重载运算符?我怎么能在那里做(例如,我想重载运算符+
).
如果有关于这个主题的心理,那将是伟大的.
在下一个代码中
(if (exp1)
(Do1)
(Do2))
Run Code Online (Sandbox Code Playgroud)
当exp1为真时,(Do1)正在发生.我的问题是,如果条件为真,我想做两件事.意思是 - 我想添加一个列表链接,并再次调用该函数.
so Do1 in my program is:
((cons (car hello) list1)
(Myfunction (cdr data) list1))
Run Code Online (Sandbox Code Playgroud)
它给了我下一个问题:
procedure application: expected procedure, given: ((439043 Mylist)); arguments were: ()
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
谢谢.
我想制作一个像这样的if条件:
if
((head(c) = 1) or (head(c) = ~1) or (head(c) = ~5) or (head(c) = ~17) or (head(c) = 0))
count +1
else..
Run Code Online (Sandbox Code Playgroud)
功能头返回'a;
它给了我下一个错误:operator is not a function [tycon dismatch]
operator:bool in expression
问题是什么?谢谢.
据我所知,在java中,所有变量都是引用.
在下一个代码:
class Parent {
public int x = 12;
}
class Child extend Parent {
public int x = 42;
}
Parent p = new Parent();
System.out.println(p.x);
12
Child c = new Child();
System.out.println(c.x);
42
p = c; // be careful here!
System.out.println(p.x);
12
Run Code Online (Sandbox Code Playgroud)
我认为这里没有切片,因为我们谈论参考.出于这个原因,我不明白为什么"12"
要打印.p
现在指向的区域c
,c.x
是42.
在C++的下一个代码中也会发生同样的情况:
class Parent {
public:
void example () { cout << "Parent" << endl; }
};
class Child : public Parent {
public:
void example () …
Run Code Online (Sandbox Code Playgroud)