小编far*_*ble的帖子

为什么地板无穷大不会引起一些错误?

我发现自己有一个案例,相当于floor $ 1/0正在执行.

?> 1/0
Infinity
Run Code Online (Sandbox Code Playgroud)

这是正常的行为,据我理解,但,当Infinityfloor"d或ceiling" d

?> floor $ 1/0   
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
Run Code Online (Sandbox Code Playgroud)

而不是失败,而是产生了这么大的数字.为什么?

也许更重要的是,在应用其他功能之前,如何在不使用过滤器的情况下将其与非故障结果区分开来?

floating-point haskell infinity floor

18
推荐指数
1
解决办法
419
查看次数

将POSIXlt对象与日期字符串进行比较是正确的吗?

我最近遇到了R代码,它将POSIXlt日期对象与日期字符串进行了比较.

as.POSIXlt.date("2007-02-02") >= "2007-02-01"
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,结果至少对我来说是假的.我期待POSIXlt对象被强制转换为字符向量,因此不等式应该测试为TRUE.然后我尝试了明确的强制,并强迫任何一方进入另一方的类型,产生了真实.

as.character(as.POSIXlt.date("2007-02-02")) >= "2007-02-01"
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

as.POSIXlt.date("2007-02-02") >= as.POSIXlt.date("2007-02-01")
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

我认为将LHS日期对象强制转换为字符向量在语义上是错误的,因为那时的比较将是词典,而不是预期的(尽管在这种情况下它的计算结果为TRUE).我对吗?

在我看来,第三个表达是语义上正确的代码.但为什么第一个代码不起作用(评估为FALSE)?在比较它们之前,R是否强制转换为字符向量?

这是我的平台信息:

R version 3.1.0 (2014-04-10) -- "Spring Dance"
Platform: x86_64-redhat-linux-gnu (64-bit)
Run Code Online (Sandbox Code Playgroud)

我是R的新手.非常感谢任何帮助.

谢谢,法尔汉

r date coercion posixlt

5
推荐指数
1
解决办法
1247
查看次数

为什么我不能在Haskell中的连接函数(++)上进行模式匹配?

我正在尝试匹配**String Newline String**函数Split 中的模式.

split::String -> [String]
split[] = []
split (x++'\n':xs) = [x]++split(xs)
Run Code Online (Sandbox Code Playgroud)

我收到这个错误: Parse error in pattern: x ++ ('\n' : xs)

我在这做错了什么?

我知道还有其他方法可以达到相同的结果,但我想了解这种模式有什么问题.我对Haskell BTW很新.

haskell pattern-matching

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

Erlang不会对未使用的函数参数发出警告

如果我声明一个函数

test(A) -> 3.
Run Code Online (Sandbox Code Playgroud)

Erlang生成一个关于A未使用的变量的警告.但定义

isEqual(X,X) -> 1.
Run Code Online (Sandbox Code Playgroud)

不会产生任何警告但是

isEqual(X,X) -> 1;
isEqual(X,Y) -> 0.
Run Code Online (Sandbox Code Playgroud)

再次产生警告但仅针对第二行.

erlang pattern-matching

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

一个类的对象共享代码

如果有一个A类,我实例化A的三个对象x,y,z,并且A中有一个函数foo(),那么f的机器代码是否存在三个副本(每个对象一个)?

类方法的目的是什么?当所有对象都有共享代码时,为什么还要使用类方法?它只是HLL程序员的抽象吗?

oop coding-style

0
推荐指数
1
解决办法
100
查看次数