Ich bin neu auf Ulme und funktionale Programmierung im Allgemeinen. Aber ich benutze Ulme und ich brauche wirklich eine Funktion, die ein Signal (List String) als Eingabe hat und List (Signal String) zurückgibt.Elm-Funktion mit dem Typ: Signal (Liste a) -> Liste (Signal a)
Ich weiß, dass ich wahrscheinlich dieses Problem nicht mit einem besseren architektonischen Entwurf in meinem Programm haben sollte, aber eine Funktion, die dies tun könnte, würde ein großes Problem für mich lösen.
Der Mähdrescher Funktion tut genau das Gegenteil:
combine : List (Signal a) -> Signal (List a)
combine = List.foldr (map2 (::)) (constant [])
Ich habe versucht, etwas ähnlich der Funktion zu tun, verbinden aber erfolglos geblieben sind so weit. Irgendwelche Ideen, wie man eine solche Funktion schafft?
Danke @Apanatshka für deine Antwort. Ich verstehe, dass die Liste von statischer Größe sein muss, aber weil ich stur bin, wollte ich weiter versuchen und änderte die uncombine Funktion zu diesem: 'uncombine: Signal (Liste a) -> Liste (Signal a) uncombine sig = if (Signal.map istEmpty sig) dann [] else Signal.map (List.head >> unsichere) sig :: uncombine (n-1) (Signal.map (List.tail >> unsichere) sig) '. Aber ich bekomme Typ Mismatch-Fehler, weil die If-Klausel einen Bool-Wert will aber Signal Bool-Wert erhält. Gibt es eine Umgehungsmöglichkeit für dieses Problem? –
Nein, es gibt keine Problemumgehung. Was du versuchst, ist unmöglich. – Apanatshka