我发现自己有一个案例,相当于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)
而不是失败,而是产生了这么大的数字.为什么?
也许更重要的是,在应用其他功能之前,如何在不使用过滤器的情况下将其与非故障结果区分开来?
Either被定义为派生Show,简单地说:
data Either a b = Left a | Right b
deriving (Eq, Ord, Read, Show, Typeable)
Run Code Online (Sandbox Code Playgroud)
然而,Maybe不是:
data Maybe a = Nothing | Just a
deriving (Eq, Ord)
Run Code Online (Sandbox Code Playgroud)
既然它们是一部分base并且如此相似,为什么不Maybe直接导出Show?
另一个问题也可能是,它在哪里得到它的Show实例?
AsRef 有糖吗?最好是在稳定频道。
我经常使用 as ref 声明类似字符串的参数,以便更容易与字符串的各种咒语(String、&str、&String 等)进行互操作,如下所示:
fn Fun<S: AsRef<str>>(my: S) { ... my.as_ref() ...}
Run Code Online (Sandbox Code Playgroud)
然而,现在在一段时间后回读这些实现,它在视觉上占用了代码中比我认为应该的更多的空间,有没有办法减少使用量?例如,不必显式声明类型参数,不必显式调用 as_ref() 等。
最好的。