上QQ阅读APP看书,第一时间看更新
A coding example of functions that modify functions
The following is a snippet of the code we might write to build a section of a page with two drop down lists, one for makes and the other for models of cars:
// http.Get :: String -> JSON
var renderPage = curry(func(makes, models) { /* render page */ })
// return two ps: one with makes and the other with models HTML/ULs
Task.Of(renderPage).Ap(http.Get("/makes")).Ap(http.Get("/models"))
Notice that each http.Get is a separate API call. Each API call is a partial application. In order for renderPage to wait for each call to complete we must curry our API calls.
Here's what the resulting HTML might look like: