Real World Haskell afferma che "Transformer stacking order is important". Tuttavia, non riesco a capire se c'è una differenza tra ExceptT (ResourceT m) a
e ResourceT (ExceptT m) a
. Interferiranno l'uno con l'altro?'ExceptT ResourceT' vs 'ResourceT ExceptT'
5
A
risposta
4
In questo esempio, non vi è alcuna differenza reale tra entrambi gli ordini. Il motivo è: a differenza di molti trasformatori tra cui ExceptT
, il trasformatore di risorse fa non “ iniettare ” le proprie azioni nella monade di base a cui si applica, ma piuttosto iniziare l'intera azione con il passaggio dei riferimenti di rilascio.
Se si scrivono i tipi (mi riferirò MaybeT
invece di ExceptT
per semplicità: sono ovviamente equivalente ai fini di questa domanda), allora avete praticamente
type MaybeResourceT m a = MaybeT (IORef RelMap -> m a)
= IORef RelMap -> m (Maybe a)
type ResourceMaybeT m a = ResourceT (m (Maybe a))
= IORef RelMap -> m (Maybe a)
vale a dire tipi effettivamente equivalenti. Suppongo che potresti anche dimostrarlo per le operazioni.
Problemi correlati
- 1. Transizione da ErrorT a ExceptT
- 2. ascensore O per Exceptt automaticamente
- 3. Come aggiungere un'istanza MonadThrow a ResourceT Monad Transformer in un server Warp
- 4. Qual è il modo corretto di ripulire le risorse usando ResourceT?
- 5. conduit e network-conduit: combina MonadResource e IO
- 6. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 7. VS 2008 vs VS 2008 Express
- 8. .NET vs ASP.NET vs CLR vs ASP
- 9. Atomikos vs JOTM vs Bitronix vs?
- 10. Accumulare vs piega vs ridurre vs comprimere
- 11. ACE vs Boost vs Poco vs wxWidgets
- 12. VS 2013 MSTest vs nUnit vs xUnit
- 13. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - AFFIDABILITÀ
- 14. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 15. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, cosa hanno in comune?
- 16. e vs * e | vs +
- 17. SpiderMonkey vs JavaScriptCore vs?
- 18. * vs ** vs *** in Proguard?
- 19. bundler vs RVM vs gemme vs RubyGems vs gemsets vs system ruby
- 20. Misurare il tempo in Linux - tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
- 21. innerText vs innerHtml vs label vs text vs textContent vs outerText
- 22. Mathematica: non valutata vs Defer vs attesa vs HoldForm vs HoldAllComplete vs etc etc
- 23. Iterator vs. Reference vs. pointer
- 24. Selenium vs. SimpleTest vs. WatiN
- 25. BasicHttpBinding vs WsHttpBinding vs webHttpBinding
- 26. Boo vs C# vs Python?
- 27. StringBuffer vs StringBuilder Vs StringTokenizer
- 28. JSF vs Facelets vs JSP
- 29. Qcodo vs. CakePHP vs. Zend
- 30. select vs poll vs epoll