Erlang在Windows List Comprehension中给出了“\ f”

嗨,我有一个奇怪的问题,在Windows上的Erlang我正在运行16B和WinXP。

我有以下代码

-module(test). -export([cost/1,total/1]). cost(orange) -> 5; cost(apple) -> 6. total(L) -> [cost(I) * Q || {I,Q} <- L]. 

我运行它

 test:total([{orange,2}]). 

它给了我“\ f”

改变成本(I)* Q使用 – ,+或分数给我一个数字。

我不知道为什么在列表理解中不成功。 运行

 [test:cost(I) * Q || {I,Q} <- [{orange,2}]] 

在一个erlang控制台和emacs模式也不能工作,但

 test:cost(orange) * 2 

确实给了我一个数字。

任何想法为什么?

注意你的成本/ 1函数返回一个数字。 但总数/ 1返回一个列表 (数字)。 这个列表上的结果是可以的,这就是erlang碰巧显示小整数列表的结果。 请参阅http://www.erlang.org/faq/problems.html 9.3

看看我的意思,尝试更大的数字

 test:total([{orange,2000}]). 

再次,这只是一个显示问题,列表中的值是你所期望的。 尝试一下:

 [Value] = test:total([{orange,2}]). Value. 

一个字符串是一个整数列表。 你要返回的值是一个整数列表。

Erlang使用简单的启发式来显示某个字符串或整数列表:它是一个只包含范围{55,250}内的数字的平面列表。 (我把这些数字加起来,但是是这样的,如果有控制字符或者低字符,就保存)。

由于Erlang不会对元组做这件事,所以元组很容易看清。

 1> {72,101,108,108,111,44,32,83,116,101,112,104,101,110,46}. {72,101,108,108,111,44,32,83,116,101,112,104,101,110,46} 2> [72,101,108,108,111,44,32,83,116,101,112,104,101,110,46]. "Hello, Stephen." 

Erlang只是错误地猜测列表中的内容。

HTH。