2017-01-18 5 views
0

副作用を避け、子プロセスを作成することは可能ですか?例:子プロセスと関数プログラミングの呼び出し

from subprocess import call 

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

関数型言語はどのようにこのような操作を行いますか?

ありがとうございました。関数型言語の子プロセスを作成し、指定されたもののようなものをやって

+0

ここで何を不変にしたいですか? –

+0

申し訳ありませんが、私は混乱しました。私は質問を更新しました。 –

+0

副作用はディレクトリの内容の印刷ですか? –

答えて

0

それは副作用を持っている純粋な機能ではありません

関数型言語で不純な機能がありますaswellが、それは不純な機能でコードを最小化しようとするだろう関数が明白でないという事実。あなたが例えば最も機能的な言語であることHaskellのを考慮するとおよそIO monads

を読み取ることができ、それが明示的にそれはその署名/宣言への副作用を持っていると言う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) 
+0

ありがとう@Sarathasp、あなたの答えは明らかにします。 –

関連する問題