2024-04-19 20:19:05 发布
网友
有没有可能避免副作用,仍然创建子进程?示例:
from subprocess import call def ls(directory): return call("ls %s" % directory, shell=True)
如果不可能,函数语言是如何进行这种操作的?你知道吗
谢谢。你知道吗
在函数式语言中,创建子进程并执行与给定进程类似的操作并不是一个纯粹的函数,它有副作用
函数语言中也有不纯函数,但它会尽量减少不纯函数中的代码,并使函数不纯的事实显式化。你可以读到IO monads
例如,考虑到Haskell是最具函数性的语言,它明确表示它对createProcess函数的签名/声明有副作用
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)
在函数式语言中,创建子进程并执行与给定进程类似的操作并不是一个纯粹的函数,它有副作用
函数语言中也有不纯函数,但它会尽量减少不纯函数中的代码,并使函数不纯的事实显式化。你可以读到IO monads
例如,考虑到Haskell是最具函数性的语言,它明确表示它对
createProcess
函数的签名/声明有副作用IO明确表示它有副作用
如果你只是想避免外出,你可以这样做
相关问题 更多 >
编程相关推荐