Я новичок в Haskell, и я стараюсь монады. Я читал о лифтеM2, и я хотел знать, можете ли вы сделать его вариативным.Haskell: функция монодичного подъема Variadic
1
A
ответ
1
В общем, вы не можете иметь вариативные функции Haskell, потому что функции, которые принимают разные значения параметров, имеют разные типы.
Однако, есть обобщение liftM2
с использованием операторов из Control.Applicative
, которые могут найти интересные:
liftM2 f a b = f <$> a <*> b
liftM3 f a b c = f <$> a <*> b <*> c
liftM4 f a b c d = f <$> a <*> b <*> c <*> d
(Технически, это применимо только если вашей Монада также Аппликативная, но по GHC 7.10, все Монады Аппликативный)
и т. Д. Стоит изучить типы, чтобы выяснить, как работают эти выражения.
Смежные вопросы
- 1. Haskell VARIADIC Функция & Instance Объявление
- 2. Функция подъема в js
- 3. Функция подъема функции AngularJS
- 4. Простейшие VARIADIC Функция
- 5. Функция подъема и оператор возврата
- 6. Monad Трансформаторы и функция подъема
- 7. функция VARIADIC захода в VARIADIC макро
- 8. Функция функции Variadic?
- 9. VARIADIC функция - определение тип возвращаемого
- 10. функция VARIADIC без имени аргумента
- 11. VARIADIC Функция Перегрузки в C
- 12. VARIADIC функция аргументов множественного типа
- 13. Функция Variadic для продукта Kronecker
- 14. Функция члена Variadic класса шаблона
- 15. VARIADIC функция: Проверка число аргументов
- 16. allong.es VARIADIC функция не найдена
- 17. IIFE и функция подъема - это не функция ошибки
- 18. Можно ли кодировать общую функцию «подъема» в Haskell?
- 19. Значение после подъема?
- 20. функция VARIADIC с аргументами ключевого слова
- 21. VARIADIC функция va_arg() возврат неверных параметров
- 22. Функция Variadic - как получить число var_args?
- 23. Pass член Функции VARIADIC шаблон Функция
- 24. Функция Variadic: Извлечь аргументы и добавить строку
- 25. Функция вызова объектов в шаблоне Variadic
- 26. Конструктор и функция, использующее VARIADIC шаблонных параметров
- 27. частичного упорядочения функция VARIADIC шаблона лязг
- 28. Функция Variadic в Ada (C - Ada binding)?
- 29. C Variadic Функция не работает по назначению
- 30. Функция Variadic (va_arg) не работает с поплавком?
Вы должны иметь в виду 'liftM2',' liftM3' и 'liftM4', скорее. Кроме того, определения, которые вы даете, - это слова 'liftA2',' liftA3' и 'liftA4'. См. Http://hackage.haskell.org/package/base-4.8.0.0/docs/src/GHC-Base.html#liftM2 – Jubobs
Правильно, я поменял «М» вокруг; опасность ответа с мобильного устройства. Но что касается разницы между 'liftA2' и т. Д. И' liftM2', вот что я имел в виду в комментарии о ghc 7.10. После реализации AMP все правильно определенные Monads имеют 'liftM2', определенные как' liftA2' и т. Д. –
Несмотря на то, что AMP вступает в силу, функция 'liftMn' по-прежнему реализуется в монадических терминах в' base'; см. https://github.com/ghc/ghc/blob/b98ca17e12c7efdc906f4901f25e6263a5399be1/libraries/base/GHC/Base.hs#L566 – Jubobs