type LocationLookup = xxx => ExecutionContext => OptionT[Future, Location]
def createLocationLookup(locationManager: LocationManager): LocationLookup = xxx => { implicit ec: ExecutionContext =>
OptionT(locationManager.getLocation(xxx))
}
lazy val locationLookup: LocationLookup = wireWith(Lookups.createLocationLookup _)
trait Function1 is abstract; cannot be instantiated
lazy val locationLookup = wire[LocationLookup]
createLocationLookup
, no?
localtionLookup
instance as a paramtere
wireWith
wire
just creates a new instance