Библиотека extensible effects и библиотека layers имеют одинаковые цели (что упрощает сбор различных эффектов). Оба говорят о преимуществах, которые они предлагают над mtl, но не ссылаются на другие. Могут ли оба сделать то же самое? Включает ли кто-нибудь другого? У каждого есть какая-то особенность, которой не хватает другой?Каковы различия между слоями и расширяемыми эффектами?
ответ
Хотя я ни с кем не общался ни с одним из них, это довольно страшно от the articles.
Хотя layers
скорее строятся на MTL, exteff
- совершенно другой подход. exteff
определяет одну монаду, которая содержит информацию о ее эффектах в своем типе. exteff
утверждает, что решает проблему упорядочения монады, т. Е. Если монады A и B взаимозаменяемы, классический подход будет приводить к различным типам A (B a)
и B (A a)
. В exteff
они одинаковы.
Из interface из layers
похоже, что это не решило эту проблему.
В дополнение к ответам полковникова, extensible-effects
являются первоначально закодированными эффектами, а эффекты в layers
(и mtl
) окончательно закодированы. оба подхода имеют свои преимущества и недостатки, а в некоторых сценариях лучше или хуже.
Можете ли вы быть более конкретными? В каких конкретных сценариях тот или иной подход работает лучше или хуже? – lmm
Я вернусь к этому ответу, когда обновляю [benchmark] (https://github.com/feuerbach/freemonad-benchmark), чтобы также проверить случаи, когда свободные монады работают лучше. – ibotty
Думаю, у меня не будет времени надолго. суть в том, что с mtl/layers (или точнее: трансформаторы) вы платите каждый раз, когда добавляете новый трансформатор. подъем через 't (t1 (t2 (t3 m))) является довольно дорогостоящим и не обязательным при использовании свободного монад-подхода, поскольку используется« расширяемые эффекты ». но: только с одним трансформатором это ** путь ** быстрее, чем растяжимые эффекты. это то, что вы можете видеть в тестируемом ящике. – ibotty
- 1. Каковы различия между этими вставками?
- 2. Каковы различия между типами запросов?
- 3. Каковы различия между следующими кодами
- 4. Каковы различия между OLEDB и ODBC?
- 5. Каковы различия между управляемыми и неуправляемыми библиотеками?
- 6. Каковы различия между MSBuild и TFSBuild
- 7. Каковы различия между MySQL = и <>
- 8. Каковы основные различия между ASP.net и PHP?
- 9. Каковы различия между php5 и php5-Dev
- 10. Каковы различия между запросами linq и linqToSql?
- 11. Каковы отношения/различия между видимостью и порядком?
- 12. Каковы различия между CClientDC и CWnd :: GetDC
- 13. Каковы различия между MediaPlayer, MediaSessionCompat и RemotePlaybackClient
- 14. Каковы различия между препроцессорами C и C++?
- 15. Каковы различия между WinExec и ShellExecute?
- 16. Каковы различия между Конда и Anaconda
- 17. каковы различия между на функции() и функции
- 18. Каковы различия между [Serializable] и [Serializable()]
- 19. Каковы различия между XMLHttpRequest и HttpRequest
- 20. Каковы различия между методами nibNameOrNil и ViewDidLoad?
- 21. Каковы различия между Haskell и PureScript?
- 22. Каковы различия между DexClassLoader и PathClassLoader?
- 23. каковы различия между этими операторами = и = &
- 24. Каковы различия/сходства между JBI и SCA
- 25. Каковы различия между SPRITE и PNG?
- 26. Каковы различия между вложенными if и &&?
- 27. Каковы различия между шаблонами Decorator и Adapter?
- 28. Каковы CSS различия между IE и Firefox
- 29. Каковы различия между touchmove и gesturechange?
- 30. Каковы различия между потоком и образцом?
На странице github 'extensible-effects' описаны некоторые проблемы с пакетом, из которых только один применяется к GHC> 7.8, а именно: ' Общие функции не могут быть сгруппированы с использованием классных классов, например. функции ask и getState не могут быть сгруппированы с некоторыми [...] '(https://github.com/suhailshergill/extensible-effects). Не могли бы вы рассказать о том, как это относится к пакету? Я думаю, нам всем было бы интересно увидеть проблему с разных «углов». cc: @ibotty –