Case-Anweisungen und Pattern-Matching.

Ich bin Programmierung in SML für eine Aufgabe und ich habe ein paar Praxis-Probleme und ich fühle mich wie ich bin etwas fehlt - ich fühle mich wie ich bin mit zu vielen case Aussagen. Hier ist, was ich Tue und das problem Erklärungen für das, was ich habe Probleme mit.:

  1. Schreiben Sie eine Funktion all_except_option, die einen string und eine string-Liste. Return "KEINE", wenn die Zeichenfolge nicht in der Liste sonst wieder EINIGE lst wo lst ist wie die Liste der Argumente außer die Zeichenfolge ist nicht in ihm.

    fun all_except_option(str : string, lst : string list) =
      case lst of 
       [] => NONE
      | x::xs => case same_string(x, str) of
                   true => SOME xs
                 | false => case all_except_option(str, xs) of
                              NONE => NONE
                            | SOME y=> SOME (x::y)  
  2. Schreiben Sie eine Funktion get_substitutions1, die einen string-Liste (eine Liste von strings, die Substitutionen) und einen string s und gibt eine string-Liste. Das Ergebnis hat alle Zeichenfolgen, die in einer Liste in Substitutionen hat auch s, aber s selbst sollte nicht in das Ergebnis ein.

    fun get_substitutions1(lst : string list list, s : string) = 
      case lst of
        [] => []
      | x::xs => case all_except_option(s, x) of
                     NONE => get_substitutions1(xs, s)
                    | SOME y => y @ get_substitutions1(xs, s)

-
same_string ist eine mitgelieferte Funktion
fun same_string(s1 : string, s2 : string) = s1 = s2

  • Dies ist ein Teil der Aufgaben für week2 in der Coursera-Programmier-Sprachen-Kurs. Da es ein wegen Verletzung des post solutions online, bitte ich, diese Frage neu formulieren, ändern Sie den Funktionsnamen, damit Sie nicht exakt übereinstimmen mit der Zuordnung.
InformationsquelleAutor user998876 | 2011-10-17
Schreibe einen Kommentar