小编bri*_*n_o的帖子

CL格式化配方:将nil作为值处理

我一直在寻找格式化食谱,我找不到我想要的东西......

(format nil CONTROL-STRING day name num-apples)

假设我不想改变上面形式的参数,只是CONTROL-STRING.

day而且num-apples永远不会是零,但name可能是零.

什么时候name为零,我希望输出看起来像

"Today is Monday. Hello, you have 3 apples."

但是当name定义时,我希望它看起来像

"Today is Monday. Hello Adam, you have 3 apples."

因此控制字符串需要查看name,在非零情况下使用它,而不是在nil情况下使用它,但在两种情况下都使用它.

也许它可以通过消耗零和打印它来实现""?如果是这样,我不知道该怎么做.

format common-lisp

6
推荐指数
1
解决办法
194
查看次数

在Common Lisp中,如何测试变量是否特殊?

我以为我可以通过Google,SO或者我正在阅读的书籍找到这个,但事实证明这是难以捉摸的.

在我正在学习的实现中,我可以在顶层执行以下操作:

(defvar *foo* 4) (set 'bar 3)

如果我再调用(describe '*foo*)(describe 'bar),我得到一个描述说,*foo*是特殊的,bar非特殊(其他细节之中).

是否有一个函数将符号变量作为参数并返回true或false如果它是特殊的?如果是这样,describe可能部分通过调用来实现?

上下文:我正在学习Common Lisp,但是在工作中我有一个类似于Common Lisp的Lisp方言系统,但该describe函数未实现.这里有一些XY事情,但我也试图找到Lisp和CL.

common-lisp

5
推荐指数
2
解决办法
870
查看次数

在茎图中隐藏基线

我是Matplotlib的新人.

我使用Python/Matplotlib做了一个干图(也就是棒棒糖).这些类型的地块有风格设置:linefmt,markerfmt,basefmt.

例如,我可以改变基线的颜色,如下所示:

plt.stem(X, Y, basefmt="m")
Run Code Online (Sandbox Code Playgroud)

我想看点和茎,但我不想看到实际的基线.我需要什么命令/格式代码来"隐藏"基线?或者我接近这个错误?

python matplotlib

3
推荐指数
2
解决办法
2774
查看次数

for ... .zip() 之后的 .next():防止迭代器被移动

我是 Rust 新手,还没有完全理解它的全部内容。我做了很多 Rust 阅读,也解决了数学问题。我用这个签名编写了一个函数:

pub fn prime_factors(n: u64) -> Vec<u64> {
Run Code Online (Sandbox Code Playgroud)

因此,给定n30,它应该返回一个值为 2、3 和 5 的向量。我构建了一个测试,内容如下:

#[test]
fn prime_factors_test() {
    assert_list_eq([2,3,5].iter(), prime_factors(30).iter());
}
Run Code Online (Sandbox Code Playgroud)

一个亮点是我正在将静态数组与向量进行比较(出于学习目的,这目前是可取的,因为我想练习泛型)。

我的测试功能是我实际上遇到问题的功能。要进行测试,该函数必须迭代两个集合,检查每个索引是否相等。我曾经.zip()这样做过,但如果集合不均匀,迭代器只会通过较短集合的索引进行耗尽。所以之后zip,我想检查两个迭代器是否有额外的元素。

以下内容无法编译:

fn assert_list_eq<I, T>(mut expected: I, mut actual: I)
    where I: Iterator<Item=T> + Clone,
          T: PartialEq + Debug {
    for (e, a) in expected.zip(actual) {
        assert_eq!(e, a);
    }
    // fail if there are any "leftovers"
    assert_eq!(None, expected.next());
    assert_eq!(None, actual.next());
}
Run Code Online (Sandbox Code Playgroud)

我认为循环(或者可能是循环的设置)移动/消耗迭代器,并且它们在循环之后不能使用。但我检查循环后这些迭代器的状态。我想我知道出了什么问题,只是不知道如何改正。我几乎肯定遇到了概念问题。

作为一种解决方法,我这样做了,但我觉得我正在拥抱一种反模式,通过使用 …

rust

3
推荐指数
1
解决办法
911
查看次数

标签 统计

common-lisp ×2

format ×1

matplotlib ×1

python ×1

rust ×1