2017-01-18 13 views
0

부작용을 피하고 자식 프로세스를 만들 수 있습니까? 예 :자식 프로세스 및 함수 프로그래밍 호출

from subprocess import call 

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

만약 기능 언어가 그러한 조작을 어떻게합니까?

감사합니다. 함수형 언어 자식 프로세스를 생성하고 주어진처럼 아무것도에서

+0

무엇이 불변으로 여기에 있습니까? –

+0

죄송합니다. 혼란 스러웠습니다. 나는 그 질문을 갱신했다. –

+0

부작용은 디렉토리 내용을 인쇄하는 것입니까? –

답변

0

가 불순한 기능이 aswell 있지만 불순한 기능의 코드를 최소화하려고 할 것이 부작용을 함수형 언어에서

을 가진 순수 함수가 아닙니다 기능이 불명확하다는 사실. 당신은 약 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, 당신의 대답은 일을 분명히합니다. –