Jannis
03/24/2019, 5:14 PMraulraja
03/24/2019, 6:14 PMJannis
03/24/2019, 6:18 PMJannis
03/24/2019, 6:19 PMraulraja
03/24/2019, 9:03 PMraulraja
03/24/2019, 9:03 PMJannis
03/24/2019, 9:23 PMraulraja
03/24/2019, 10:16 PMraulraja
03/25/2019, 5:50 PMraulraja
03/25/2019, 5:50 PMraulraja
03/25/2019, 5:51 PMraulraja
03/25/2019, 5:51 PMJannis
03/25/2019, 7:50 PMList<Resource>.traverse(ManagedT.applicative()) { ManagedT({ acquire(it) }, { release(it) }) }.invoke { l: List<AcquiredResource> -> { // do useful stuff } }
possible. Also monadic acquisiton of multiple resources without deeply nesting bracket syntax is a thing. I think as soon as you need to acquire and release 2 or more resources and those depend on each other you are better of with ManagedT over Bracket, as it just composes better.raulraja
03/25/2019, 7:58 PMraulraja
03/25/2019, 7:58 PMJannis
03/25/2019, 7:58 PMraulraja
03/25/2019, 7:59 PMKleisli
which is a Reader and a concrete data typeraulraja
03/25/2019, 7:59 PMraulraja
03/25/2019, 8:00 PMask
, etc so other data types like Function0 etc are also capableraulraja
03/25/2019, 8:00 PMraulraja
03/25/2019, 8:01 PMraulraja
03/25/2019, 8:04 PMJannis
03/25/2019, 8:06 PMuse
but I think it's a bit weird as it is normally a one-off action. I'll play around with it for a bit and see what I can do!raulraja
03/25/2019, 8:07 PMraulraja
03/25/2019, 8:08 PMraulraja
03/25/2019, 8:08 PMraulraja
03/25/2019, 8:09 PMJannis
03/25/2019, 9:00 PMacquire
, use
, release
), but ManagedT accumulates acquire
and release
and then when someone is done creating resources provides use
. Thus the main op is, contrary to what I first thought, invoke
(or create or whatever, constructing the resource). 🤔raulraja
03/25/2019, 9:32 PMraulraja
03/25/2019, 9:32 PM