Haskell: Willst du es besser machen: value == x || Wert == y ||

7

Ich bin neu bei Haskell, es tut mir leid, wenn das unglaublich offensichtlich ist ...


Ich habe die folgende Funktion (die hier als Beispiel verwendet wird, um nach mehreren value==something || value==somethingElse checks zu fragen) gemacht, um zu überprüfen, ob ein Zeichen eine Zahl ist:


%Vor%


Sicherlich muss es eine nette Möglichkeit geben, Funktionen wie die obige zu schreiben, also müssen Sie || x == nicht so oft wiederholen?



Vielen Dank im Voraus für Ihre Hilfe:)

(Wenn es relevant ist: Ich benutze Umarmungen als der Dolmetscher.)

    
Jon Cox 28.11.2010, 00:18
quelle

2 Antworten

30

In diesem Fall können Sie elem aus dem Prelude verwenden:

%Vor%

(Denken Sie daran, dass Strings Charts-Listen sind)

Oder Sie können isDigit von Data.Char : -)

verwenden

Ja, es gibt eine nette Möglichkeit, fast jedes sich wiederholende Muster zu schreiben. Hier ist, wie man es für dieses ableiten kann. Beginnen Sie mit der Liste der Zeichen (ich mache nur kurz 0-4)

%Vor%

Ordnen Sie die Vergleiche zu:

%Vor%

Dann benutze foldr . foldr f z wird am besten als eine Funktion beschrieben, die eine Liste übernimmt und : durch f und [] durch z ersetzt.

%Vor%

Und da hast du es. foldr ist eine Art der Urvater der Listenfunktionen, also ist dies der "niedrigste Level" Weg, es ohne explizite Rekursion zu tun. Hier sind zwei weitere Schreibweisen für Ihr Vokabular:

%Vor%

Wenn ich die gebräuchlichste "idiomatische" Schreibweise erraten müsste, wäre wahrscheinlich diese Variante des ersten:

%Vor%

Sobald Sie sich mit den praktischen Funktionen des Preludes vertraut gemacht haben, ist das Schreiben eines solchen Codes eine freudige Brise: -)

    
luqui 28.11.2010, 00:21
quelle
6
___ tag123haskell ___ Haskell ist eine funktionale Programmiersprache mit starker statischer Typisierung, verzögerungsfreier Auswertung, umfangreicher Parallelitäts- und Parallelitätsunterstützung und einzigartigen Abstraktionsfunktionen. ___ antwort4396168 ___

Ein weiteres Stilproblem, das ich noch nicht erwähnt habe, ist eine Funktion

%Vor%

entspricht einfach

%Vor%     
___ tag123idioms ___ Ein Programmier-Idiom ist eine Möglichkeit, eine Beschränkung der Programmiersprache zu überwinden und / oder häufig verwendeten Code mit einem Zweck zu schreiben, der von einer wörtlichen Bedeutung des Codes getrennt ist. Außerdem ist ein Idiom eine bevorzugte Art, Code zu schreiben, wenn es mehr als einen offensichtlichen Weg gibt, dies zu tun. ___ answer4294658 ___

In diesem Fall können Sie %code% aus dem Prelude verwenden:

%Vor%

(Denken Sie daran, dass Strings Charts-Listen sind)

Oder Sie können %code% von %code% : -)

verwenden

Ja, es gibt eine nette Möglichkeit, fast jedes sich wiederholende Muster zu schreiben. Hier ist, wie man es für dieses ableiten kann. Beginnen Sie mit der Liste der Zeichen (ich mache nur kurz 0-4)

%Vor%

Ordnen Sie die Vergleiche zu:

%Vor%

Dann benutze %code% . %code% wird am besten als eine Funktion beschrieben, die eine Liste übernimmt und %code% durch %code% und %code% durch %code% ersetzt.

%Vor%

Und da hast du es. %code% ist eine Art der Urvater der Listenfunktionen, also ist dies der "niedrigste Level" Weg, es ohne explizite Rekursion zu tun. Hier sind zwei weitere Schreibweisen für Ihr Vokabular:

%Vor%

Wenn ich die gebräuchlichste "idiomatische" Schreibweise erraten müsste, wäre wahrscheinlich diese Variante des ersten:

%Vor%

Sobald Sie sich mit den praktischen Funktionen des Preludes vertraut gemacht haben, ist das Schreiben eines solchen Codes eine freudige Brise: -)

    
___ qstntxt ___

Ich bin neu bei Haskell, es tut mir leid, wenn das unglaublich offensichtlich ist ...


Ich habe die folgende Funktion (die hier als Beispiel verwendet wird, um nach mehreren %code% checks zu fragen) gemacht, um zu überprüfen, ob ein Zeichen eine Zahl ist:


%Vor%


Sicherlich muss es eine nette Möglichkeit geben, Funktionen wie die obige zu schreiben, also müssen Sie %code% nicht so oft wiederholen?



Vielen Dank im Voraus für Ihre Hilfe:)

(Wenn es relevant ist: Ich benutze Umarmungen als der Dolmetscher.)

    
___ qstnhdr ___ Haskell: Willst du es besser machen: value == x || Wert == y || ___
Ketil 09.12.2010 08:19
quelle

Tags und Links