В GHCi, когда я печатаю pure 2
, он возвращает 2
; или pure "aa"
возвращает "aa"
. Интересно, как этот прикладной экземпляр разрешен для 2 или «aa» GHCi.Понимание того, как чистая функция разрешена в Haskell
1
A
ответ
6
GHCi выполняет некоторые магии, чтобы быть удобным.
При вводе выражения, тип которого имеет вид ... => f a
, он пытается создать экземпляр f
по адресу IO
. В вашем случае это возможно, так как IO
является аппликативным (и монадой).
Во-вторых, когда введено выражение, имеющее тип формы ... => IO a
, оно запускается как действие ввода-вывода.
И, наконец, если a
имеет класс Show
, результат распечатывается. В вашем случае "aa"
- результат (и тип a
- String
), поэтому GHCi печатает это.
+0
Спасибо, мистер чи, я чувствую себя просветленным сейчас :) –
Смежные вопросы
- 1. Понимание того, как функция Lambda и foldl работают в Haskell
- 2. Понимание Haskell
- 3. Понимание того, как функция preg_replace работает
- 4. Понимание того, как работает функция reduce()
- 5. понимание того, как работает функция lua?
- 6. Понимание того, как работает функция защиты паролем
- 7. Понимание того, как работает функция лямбда
- 8. Явное определение которой чистая функция использовать
- 9. Понимание того, как: спринт и оценка оценки работает в haskell
- 10. Функция усреднения Haskell IO IO, чистая vs неуловимая попытка
- 11. чистая виртуальная функция с реализацией
- 12. Понимание списков в Haskell
- 13. Чистая функция вывода отладки?
- 14. Понимание функции связывания в Haskell
- 15. Понимание навсегда в Haskell
- 16. чистая функция сравнения в C++
- 17. Чистая виртуальная функция Call
- 18. Понимание этого типа в Haskell?
- 19. Понимание базовой рекурсии в Haskell
- 20. Понимание ошибки в haskell
- 21. Понимание $ в Haskell
- 22. понимание типа данных в haskell
- 23. Понимание немного Haskell
- 24. Понимание прямой самореференция в Haskell
- 25. Понимание Haskell seq
- 26. чистая виртуальная функция, как она работает
- 27. Haskell оптимизация списка понимание
- 28. Понимание того, как работает рекурсивная функция в javascript
- 29. Понимание того, как развязать
- 30. Понимание того, как реализованы потоки
http://stackoverflow.com/a/28979021/3608068 – user3608068
спасибо @ пользователь3608068. Ссылка, которую вы предоставили, точно отвечает на мой вопрос, но я не смог ее найти, когда искал ее. –