Wie wird der nächste "Kopf" in OCaml eingecheckt?

8

Ich bin neu bei OCaml (und immernoch ein Neuling beim Lernen von Programmierung im Allgemeinen) und ich habe eine kurze Frage darüber, welche Art von String das nächste Element in der String-Liste ist.

Ich möchte, dass es ein Trennzeichen zwischen jedem Element des Strings (außer dem letzten) setzt, aber ich kann nicht herausfinden, wie man das Programm "wissen" lässt, dass das letzte Element das letzte Element ist.

Hier ist mein Code wie er jetzt ist:

%Vor%

Vielen Dank im Voraus!

    
flymonkey 21.01.2012, 13:53
quelle

2 Antworten

9

Du bist fast da. Die Idee besteht darin, die Liste in drei Fällen aufzubrechen, in denen sie 0, 1 oder mindestens 2 Elemente enthält. Wenn die Liste mehr als ein Element enthält, können Sie separator in die Ausgabezeichenfolge einfügen:

%Vor%

Ich habe mehrere Kommentare zu Ihrer Funktion:

  • Typ-Annotation ist redundant. Da (^) ein String-Verkettungsoperator ist, kann der Typ-Checker die Typen von separator , l und die Ausgabe der Funktion einfach ableiten.
  • Sie müssen begin/and pair nicht verwenden. Da Sie nur eine Ebene der Mustererkennung haben, gibt es keine Verwirrung für den Compiler.
  • Sie könnten function verwenden, um match l with part zu eliminieren.

Daher könnte Ihr Code wie folgt verkürzt werden:

%Vor%

oder noch prägnanter:

%Vor%     
pad 21.01.2012, 14:02
quelle
7

Die leere Liste ist [] , die Liste mit einem Element ist [h] und die Liste mit mindestens einem Element ist h::t . So kann Ihre Funktion wie folgt geschrieben werden:

%Vor%     
Thomas 21.01.2012 14:03
quelle