调用子进程和函数编程



是否可以避免副作用并仍然创建一个子进程?例:

from subprocess import call
def ls(directory):
    return call("ls %s" % directory, shell=True)

如果不可能,函数式语言如何进行此类操作?

谢谢。

在函数式语言中,创建子进程并执行任何类似给定的流程都不是纯函数,它有副作用

在函数式语言中也有不纯函数,但它会尝试最小化不纯函数中的代码,并使函数不纯的事实明确。你可以读到IO单子

例如,考虑到Haskell是功能最强大的语言,它明确表示它对createProcess函数的签名/声明有副作用

createProcess :: CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)

IO明确表示它有副作用

如果你只需要避免输出,你可以这样做

import os
import subprocess
FNULL = open(os.devnull, 'w')
def ls(directory):
    return subprocess.call(['ls',directory], stdout=FNULL, stderr=FNULL)

最新更新