Haskell showFFloat的第三个参数

稀有迪玛

我正在寻找一种抑制科学计数法的方法(每个程序员在某个时候都必须解决的难题),我发现了这个问题:

Haskell-如何避免十进制输出中的科学计数法

现在,第一个答案使用如下内容:

showFullPrecision x = showFFloat Nothing x ""

这行得通,但我不知道最后一个参数是什么,我不想只盲目使用代码。

的文档showFFloat说它的签名是showFFloat :: RealFloat a => Maybe Int -> a -> ShowS接受一个Maybe Int且很可能是一个浮点数,但是最后一个参数(在我们的情况下为空字符串)是什么?

到处走走

ShowS与数字显示完全无关,这只是类似于显示功能的正常结果。道德上,ShowS只是一个字符串。改用的原因

type ShowS = String -> String

String连接性能不好的地方,特别是如果您执行类似的操作

s0, s1, s2, s3, s4 :: String

   (((s0 ++ s1) ++ s2) ++ s3) ++ s4

那么每个++操作员都需要遍历其左侧所有已连接的字符串,从而带来二次时间复杂度–非常慢!

OTOH,用

(s0++), (s1++), (s2++), (s3++), (s4++) :: ShowS

   ((((s0++) . (s1++)) . (s2++)) . (s3++)) . (s4++)

运行时只是将功能组合在一起,这是不变的代价。要实际评估连接,您将最终将此链应用于空字符串,如您的示例:

   ( ((((s0++) . (s1++)) . (s2++)) . (s3++)) . (s4++) ) ""
  = s0++(s1++(s2++(s3++(s4++""))))
  = s0++s1++s2++s3++s4

因此,产生一个可能仍会与其他字符串组合的字符串的函数最好产生这样的差异列表字符串,而不是String直接产生。但是,如果您只想查看这样显示的字符串,则始终需要将其应用于""

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Haskell中定义参数化的相似性类(具有第三个参数的==相似运算符)?

np.r_的第三个参数?(numpy)

Golang:Make函数和第三个参数

如何获取Exception OSError的第三个参数?

python ipow:如何使用第三个参数?

showModalDialog第三个参数错误

htaccess第三个参数不起作用

替换第三个值

熊猫:按两个参数分组并按第三个参数排序

rxJs三个可观测值,前两个响应作为第三个参数

useReducer中第三个参数的目的是什么?

collect方法的第三个参数(组合器)如何使用?

std :: thread构造函数第三个模板参数的目的是什么?

Flutter ProxyProvider构建器函数中的第三个输入参数是什么

传递给侦听器的第三个参数是什么?

为什么在iterator_apply示例中需要第三个参数

types.MethodType python2中的第三个参数

pthread_create在第三个参数上需要哪种类型

Go结构字段的第三个参数是什么?

Java 8函数编程中“ reduce”函数的第三个参数的目的

根据第三个参数对元组列表进行排序

将第三个参数作为-1传递给memcmp返回0

为什么ioctl调用的原型使用unsigned long作为第三个参数?

字符串替换为神秘地工作的第三个参数

第三个参数(false)在document.addEventListener(“ deviceready”,OnDeviceReady,false)中指示什么;

python双冒号,-1作为第三个参数

getSupportLoaderManager(id,args,??)的第三个参数类型是什么

第三个参数Java8减少Object中的字符串属性

在asp.net MVC中获取第三个参数