例如:
(regexp-match #rx"a|b" "cat")
Run Code Online (Sandbox Code Playgroud)
我想绑定一个变量,"a|b"以便我可以动态创建模式.
对于以下场景,如何a通过指针获取数组的大小(3)c?解决这类问题的模式是什么?
struct struct_point {
int x;
int y;
int z;
};
typedef struct struct_point point;
int test_void_pointer () {
point a[3] = {{1, 1, 1}, {2, 2, 2}};
void * b;
point * c;
b = a;
c = b;
/* get_size_p (c) */
}
Run Code Online (Sandbox Code Playgroud) 我的理解(可能是不正确的或不完整的)是懒惰的评估可以提供尾递归的所有优点,并且做得更好.
如果是这样,是否意味着在惰性求值的上下文中不需要尾递归?
UPDATE
具体来说,让我们看一下以下示例:
(define (foo f a)
(if (number? a)
(* a a)
(lazy-map foo a)))
Run Code Online (Sandbox Code Playgroud)
该函数可以很容易地转换为尾递归函数.但是,如果是这样,我们将失去懒惰评估的优势.
实际上,当输入是一个非常大的列表(或无限)时,这个非尾递归函数是否需要消耗很多堆栈?我不这么认为.那么,是否有充分的理由使用尾递归而不是懒惰的评估?
scheme haskell functional-programming clojure lazy-evaluation
经过一段时间与Clojure合作,我已经积累了一些关于它的懒惰的知识.我知道一个常用的API(例如map)是否是懒惰的.但是,当我开始使用不熟悉的API(例如with-open)时,我仍然感到怀疑.
是否有任何文档显示Clojure核心模块的惰性API的完整列表?
至于人物的定义:
public class Person {
private int id;
private int characteristics;
public boolean equals (Object obj) {
if (obj == this) {
return true;
}
if (obj instanceof Person) {
if (id == ((Person) obj).id) {
return true;
} else if (characteristics == ((Person) obj).characteristics) {
return true;
}
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
导致2个Person对象a,b如果a.equals(b)返回必须具有相同的哈希码true,我该如何实现该hashCode方法?
解
我的equals方法实现,根据Java的等效协议是不正确的:传递不满意:a.id = 1,a.characteristic = 2 …
在多线程模块中,我不关心它是否是线程安全地写入java.util.Collection(例如java.util.Set)对象.它的作用是通过多个线程删除一些独立元素,这可能同时对同一元素执行删除.那么,会发生什么?该元素被删除,或抛出任何异常?
科佳
在球拍中,我定义了以下函数,我想知道它是否是尾递归的:
(define foo
(? (c m s1 s2)
(if (< c m)
(if (= (modulo m c) 0)
(foo (+ c 1) m (+ s1 c) s2)
(foo (+ c 2) m s1 (+ s2 c)))
(cons s1 s2))))
Run Code Online (Sandbox Code Playgroud)
我的问题几乎就是这样,但我必须写一些其他内容来满足我的帖子质量标准.实际上,我不知道我的帖子质量标准是什么.
我想将标记的文本区域更改为由下划线连接的所有小写单词.例如:
A fox caught a bird => a_fox_caught_a_bird
Run Code Online (Sandbox Code Playgroud)
Emacs 23 的功能是什么?
鉴于以下C代码,a = f;和之间有什么区别a = (int *) f;?
float *f;
int *a;
...
a = f;
a = (int *) f;
Run Code Online (Sandbox Code Playgroud) 当我们谈论clojure(或其他lisp)编程时,在引用其中声明的对象时应该说什么?例如:
(let [a ...
Run Code Online (Sandbox Code Playgroud)
当然,如果a是一个函数,我们说函数a,但是当它不是函数时应该说什么呢?表格?数据?符号?文字?
通常,我们会在其他编程语言变量或对象中说出这些内容.
这样的函数会导致悬空指针吗?
int *foo () {
int a[2] = {2, 3};
int *p = NULL;
p = a;
return p;
}
Run Code Online (Sandbox Code Playgroud) 在Java中,Integer[][] arr定义了例如非原始对象的多维数组.如何arr通过JNI 访问C程序中的数组?
public class Foo {
public static Integer[][] arr = {{0}, {1, 2}, {3, 4, 5}};
}
Run Code Online (Sandbox Code Playgroud)