I had quite the frustrating hour with Suave trying to combine Webparts. In theory it is very simple:
Function1-that-returns-Webpart >=> Function2-that-returns-Webpart
In practice I kept getting an error “Expecting a type supporting the operator ‘>=>’ but given a function type. You may be missing an argument to a function” when trying to run this (thinned out) code:
let getTemplate : Webpart = OK "..." >=> Writers.setMimeType "application/json; charset=utf-8" let route = choose [ pathScan Path.Assets.templateById getTemplate ] startWebServer config route
The problem – a missing
open Suave.Operators – and without it F# didn’t know what >=> was. I guess it was trying to treat >=> as an inline function, but how it goes from there to that error message presently baffles me.