Erlang:哪种列表模式匹配更高效?

9

我正在学习《实用Erlang编程》一书中,这里定义了一个函数:

split("\r\n\r\n" ++ T, L) -> {reverse(L), T};
split([H|T], L) -> split(T, [H|L]);
split([], _) -> more.

我关心的是第一个匹配项,即"\r\n\r\n" ++ T和我想出来的类似的一个匹配项[13,10,13,10|T]之间是否存在性能差异?还是它们等效?

我知道这是非常简单的问题,而且我可能可以自己检查,但是如果存在差异,我想知道原因。

谢谢!

1个回答

8

"\r\n\r\n" ++ T只是[13,10,13,10|T]的语法糖。它应该会执行相同的操作。如果不行,那么就有问题了;-)


我曾认为 L1 ++ L2T ++ "\r\n" 的使用方式不同,因为我找不到一种方法将其转换为 cons。但是,感谢您的回答,我重新思考并意识到虽然有点冗长,但这是可能的。谢谢! - cji
T ++ "\r\n" 无法转换为 conses,因此无法在模式匹配中使用。 - Hynek -Pichi- Vychodil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接