我发现自己有一个案例,相当于floor $ 1/0正在执行.
?> 1/0
Infinity
Run Code Online (Sandbox Code Playgroud)
这是正常的行为,据我理解,但,当Infinity是floor"d或ceiling" d
?> floor $ 1/0
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
Run Code Online (Sandbox Code Playgroud)
而不是失败,而是产生了这么大的数字.为什么?
也许更重要的是,在应用其他功能之前,如何在不使用过滤器的情况下将其与非故障结果区分开来?
我最近遇到了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的新手.非常感谢任何帮助.
谢谢,法尔汉
我正在尝试匹配**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很新.
如果我声明一个函数
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)
再次产生警告但仅针对第二行.
如果有一个A类,我实例化A的三个对象x,y,z,并且A中有一个函数foo(),那么f的机器代码是否存在三个副本(每个对象一个)?
类方法的目的是什么?当所有对象都有共享代码时,为什么还要使用类方法?它只是HLL程序员的抽象吗?