Co oznacza ten podpis funkcji w sml?

Przeglądam notatki, które mój profesor podał na temat języka SML, a jedna z funkcji wygląda tak:

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

Czy ktoś mógłby wyjaśnić, co to robi? To, o czym najbardziej się mylę, to linia:

    let fun lp curr [] = curr

Co to właściwie znaczy? O ile wiem, istnieje funkcja zwanalp ale co robicurr [] oznaczać? Czy te argumenty? Jeśli tak, to czy nie masz tylko jednego parametru w sml?

questionAnswers(2)

yourAnswerToTheQuestion