如何在purescript中通过效果(数组字符串)

时间:2019-07-11 19:50:55

标签: 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

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

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

1 个答案:

答案 0 :(得分:3)

Effect是程序,不是值。 Effect (Array String)是一个程序,执行后将产生一个Array String。您必须先执行程序,才能从程序中取出Array String

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

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

当然,实际上没有必要在将其纳入fnames程序之前将其放入全局变量main中。您可以直接添加readdir "."

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