如何在纯脚本中遍历 Effect (Array String)

How to go through Effect (Array String) in purescript

我正在学习 purescript 并尝试记录目录内容。

module Main where
import Prelude
import Data.Traversable (traverse)
import Effect (Effect)
import Effect.Console (log)
import Node.FS.Sync (readdir)
fnames = readdir "."
main = do
  travere (\a -> log $ show a) fnames

我想在控制台输出中打印文件夹条目。 我无法摆脱(或通过)从 Node.FS.Sync (readdir)(我得到 Effect (Array String))得到的 Effect。并且 traverselogshow 不能与 Array String 前面的 Effect 一起使用。

我得到 No type class instance was found for Data.Traversable.Traversable Effect

Effect 是程序,不是值。 Effect (Array String) 是一个程序,在执行时会产生一个 Array String。如果不执行该程序,您将无法从该程序中获取 Array String

执行此程序的一种方法是使其成为更大程序的一部分,例如您的 main 程序。像这样:

main = do
    ns <- fnames
    traverse (\a -> log $ show a) ns

当然,在成为main程序的一部分之前,确实没有必要把它放在一个全局变量fnames中。可以直接包含readdir "."

main = do
    ns <- readdir "."
    traverse (\a -> log $ show a) ns