如何将值转换为字符串?

时间:2018-04-06 12:34:55

标签: functional-programming purescript

我正在尝试将不是字符串的值打印到控制台。

在这种情况下,它是一个整数数组。

如何将数组或允许此类行为的任何其他值转换为字符串。

module Main where

import Prelude
import Control.Monad.Eff.Console
import Data.Array


main = log [1, 2, 3, 4, 5]

当我运行上面的代码时,编译器会出现以下错误:

Could not match type

  Array Int

  with type

  String


while checking that type Array t0 is at least as general

as type String while checking that expression

  [ 1, 2, 3, 4, 5 ]

has type String in value declaration main

where t0 is an unknown type

1 个答案:

答案 0 :(得分:2)

您应该如何将数组转换为字符串取决于您需要对该字符串执行的操作。也就是说,这取决于谁将使用该字符串以及如何使用该字符串。可能的范围从将它变成一个字符串" array"一直到binary-base64-encoding。

如果您只需将其打印出来用于调试或教育目的,请使用function show from type class Show。有一个为数组定义的类型类的实例,因此该函数将适用于您的情况。

main = log $ show [1,2,3,4,5]

如果你想选择一个快捷方式,请使用logShow函数,它完全符合上述要求:

main = logShow [1,2,3,4,5]

打印出用于调试目的的内容的另一种方法是the traceAny function from Debug.Trace。此函数不需要Show实例,因为它使用本机JavaScript console.log,它只会转储您的值的原始JSON表示:

main = traceAny [1,2,3,4,5] \_ -> pure unit

请注意:此功能仅用于调试,请勿将其用于可靠输出。