Как говорит glennsl, вы можете заключить вашу функцию в другую функцию с требуемым порядком аргументов.его ответ предполагает, что вы статически знаете, что такое первый и третий аргументы, если вы этого не сделаете, но просто хотите частично применить первый и третий аргумент, а затем применить второй, который вы можете использовать, например,
joinThree : String -> String -> String -> String
joinThree first second third =
first ++ second ++ third
и оберните ее в новую функцию, которая вызывает первую функцию, но с другим порядком аргументов,
joinThreeWrapper : String -> String -> String -> String
joinThreeWrapper first third second =
joinThree first second third
Это позволяет вам вызывать эту функцию как,
welcomeToNeverland : String -> String
welcomeToNeverland name =
let
myGreeting = joinThreeWrapper "Welcome " " to Neverland"
in
myGreeting name
Затем вы можете использовать его, например,
text (welcomeToNeverland "Wendy")
-- Welcome Wendy to Neverland
Запись joinThreeWrapper
, как это, немного упрощает отображение вашей функции в списке, например,
greetMany : List String -> List String
greetMany names =
List.map (joinThreeWrapper "Welcome " ", this is our town. ") names
, так что вы можете сделать
text (List.map (++) (greetMany ["Jesse", "Carl"]))
-- Welcome Jesse, this is our town. Welcome Carl, this is our town.