IO [Maybe String] zu IO [String] filtern

8

Wie man IO [Maybe String] filtert, um nur die Just -Werte der Liste zu behalten, die >>= benutzen und den IO-Kontext behalten.

%Vor%

Meine aktuelle Lösung ohne den Bind-Operator:

%Vor%

Ich lerne gerade Haskell und versuche zu verstehen, wie man die verschiedenen Funktionen der Standardbibliothek benutzt. Meine Lösung funktioniert, aber ich denke, es gibt einen saubereren Weg.

    
Paradiesstaub 28.04.2016, 16:41
quelle

2 Antworten

9

Eine kurze Lösung wäre

%Vor%

Sie brauchen dafür nicht den Operator >>= .

Hinweis: (\x -> binDoesntExist x) = binDoesntExist

    
epsilonhalbe 28.04.2016, 16:51
quelle
3

Aus dem Kommentar, den Sie auf binDoesntExist geschrieben haben, vermute ich, dass Sie vielleicht eine andere Typ-Signatur haben, nämlich:

%Vor%

Die Implementierung dieser Signatur wird wahrscheinlich einfacher als Ihre bestehende Implementierung sein; und zusätzlich wird dein missingBin auch etwas einfacher:

%Vor%

Bei dieser Diskussion wird davon ausgegangen, dass Ihre vorhandene Funktion immer genau die String zurückgibt, die sie übergeben hat (wenn sie String überhaupt zurückgibt); aber diese Annahme scheint mir nicht so weit zu sein.

    
Daniel Wagner 28.04.2016 18:16
quelle

Tags und Links