Was bedeutet diese Funktionssignatur in sml?

Ich schaue mir einige Notizen an, die mein Professor zur Sprache SML gegeben hat, und eine der Funktionen sieht folgendermaßen aus:

fun max gt = 
    let fun lp curr [] = curr
           | lp curr (a::l) = if gt(a,curr)
                             then lp a l
                             else lp curr l
in
    lp
end

Könnte jemand erklären, was dies tut? Was mich am meisten verwirrt, ist die Zeile:

    let fun lp curr [] = curr

Was genau bedeutet das? Soweit ich das beurteilen kann, gibt es eine Funktion namenslp aber was macht dascurr [] bedeuten? Sind das Argumente? Wenn ja, ist nicht nur ein Parameter in sml erlaubt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage