![Learning Functional Programming in Go](https://wfqqreader-1252317822.image.myqcloud.com/cover/487/36700487/b_36700487.jpg)
上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:
![](https://epubservercos.yuewen.com/6176FA/19470400908922906/epubprivate/OEBPS/Images/Chapter_256.jpg?sign=1738827971-2RW2kaUer8ivegtXkfp0939O0IxXwXja-0-f698111232954c6ee2e337686fe529cd)