Functional programming 如何将值转换为字符串?
我正在尝试将一个不是字符串的值打印到控制台 在本例中,它是一个整数数组 如何将允许这种行为的数组或任何其他值转换为字符串Functional programming 如何将值转换为字符串?,functional-programming,purescript,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 St
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
具体如何将数组转换为字符串取决于需要对该字符串执行什么操作。也就是说,这取决于谁将使用该字符串以及如何使用该字符串。从将其转换为字符串“数组”到二进制base64编码,各种可能性都有 如果您只需要出于调试或教育目的将其打印出来,那么使用。有一个为数组定义的该类型类的实例,因此该函数将在您的情况下工作
main = log $ show [1,2,3,4,5]
如果您想使用快捷方式,请使用功能logShow
,该功能可以实现上述功能:
main = logShow [1,2,3,4,5]
出于调试目的打印内容的另一种方法是。此函数不需要Show
实例,因为它使用本机JavaScriptconsole.log
,它只会转储值的原始JSON表示:
main = traceAny [1,2,3,4,5] \_ -> pure unit
但要注意:此函数仅用于调试,不要将其用于可靠的输出。如何将数组转换为字符串取决于需要对该字符串执行的操作。也就是说,这取决于谁将使用该字符串以及如何使用该字符串。从将其转换为字符串“数组”到二进制base64编码,各种可能性都有 如果您只需要出于调试或教育目的将其打印出来,那么使用。有一个为数组定义的该类型类的实例,因此该函数将在您的情况下工作
main = log $ show [1,2,3,4,5]
如果您想使用快捷方式,请使用功能logShow
,该功能可以实现上述功能:
main = logShow [1,2,3,4,5]
出于调试目的打印内容的另一种方法是。此函数不需要Show
实例,因为它使用本机JavaScriptconsole.log
,它只会转储值的原始JSON表示:
main = traceAny [1,2,3,4,5] \_ -> pure unit
不过要小心:此函数仅用于调试,不要将其用于可靠的输出。您是否绝对确定您尝试使用的是
logShow
而不是log
?默认情况下,数组
没有Show
的实例。哎呀,事实上有。我刚在网上试过,结果它被编译了。@RegisKuckaertz是的,有。自己试试看:上面的程序编译并运行。另外,即使没有实例,错误消息也会有所不同:它会说“没有实例Show(Array Int)
blah blah blah blah blah”。是的,刚刚测试过。谢谢更正的初衷是使用日志。我编辑了我的答案以反映这一点。您是否绝对确定您正在尝试使用logShow
而不是log
?我认为默认情况下Array
没有Show
的实例。哎呀,事实上有。我刚在网上试过,结果它被编译了。@RegisKuckaertz是的,有。自己试试看:上面的程序编译并运行。另外,即使没有实例,错误消息也会有所不同:它会说“没有实例Show(Array Int)
blah blah blah blah blah”。是的,刚刚测试过。谢谢更正的初衷是使用日志。我编辑了我的答案以反映这一点。