2017-01-18 4 views
0

Ist es möglich, Nebenwirkungen zu vermeiden und trotzdem einen untergeordneten Prozess zu erstellen? Beispiel:Aufrufen des untergeordneten Prozesses und der funktionalen Programmierung

from subprocess import call 

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

Wenn nicht möglich, wie funktionale Sprachen solche Operationen machen?

Danke.

+0

Was willst du hier als unveränderlich? –

+0

Sorry, ich habe eine Verwirrung gemacht. Ich habe die Frage aktualisiert. –

+0

Der Nebeneffekt ist das Drucken der Verzeichnisinhalte? –

Antwort

0

In funktionalen Sprachen Kindprozesse zu schaffen und wie die etwas zu tun gegeben ist keine reine Funktion es Nebenwirkungen

In funktionalen Sprachen gibt es unreine Funktionen hat aswell aber es würde versuchen, Code in unreinen Funktionen zu minimieren und machen die Tatsache, dass eine Funktion unrein ist. Sie können über IO monads

Anbetracht Haskell ist die funktionale Sprache zum Beispiel lesen, es ausdrücklich sagt, dass es Nebenwirkungen auf seine Unterschrift/Erklärung für createProcess Funktion

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

Die IO ausdrücklich sagt, es hat hat Nebenwirkungen

Wenn Sie nur den Ausgang vermeiden müssen, können Sie es so tun

import os 
import subprocess 

FNULL = open(os.devnull, 'w') 

def ls(directory): 
    return subprocess.call(['ls',directory], stdout=FNULL, stderr=FNULL) 
+0

Dank @Sarathasp, Ihre Antwort machen die Dinge klar. –

Verwandte Themen