Вопросы с тегом 'lifting'

преобразование функции в соответствующую функцию в более общем контексте.
4

Что такое "подъем" в Scala?

Иногда, когда я читал статьи в экосистеме Scala, я читал термин "подъем" / "поднял". К сожалению, не объяснено, что именно это означает. Я сделал некоторые исследования, и кажется, что лифтинг имеет какое-то отношение к функциональным ценностям или...
31 июл. '13 в 8:16
1

Возможно ли реализовать liftM2 в Scala?

В Haskell liftM2 можно определить как: liftM2 :: (Monad m) => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r liftM2 f m1 m2 = do x1 <- m1 x2 <- m2 return $ f x1 x2 Я хотел бы перевести это на Scala. Моя первая попытка заклю...
03 дек. '11 в 8:31
4

С# Проблемы/возможности/рекомендации по производительности лямбда

Я тестирую различия производительности, используя различные синтаксисы выражений лямбда. Если у меня есть простой метод: public IEnumerable<Item> GetItems(int point) { return this.items.Where(i => i.IsApplicableFor(point)); } то здес...
29 нояб. '11 в 2:37
1

Как разбить цепочку выражений доступа к члену?

Короткая версия (TL; DR): Предположим, что у меня есть выражение, которое представляет собой цепочку операторов доступа к элементам: Expression<Func<Tx, Tbaz>> e = x => x.foo.bar.baz; Вы можете представить это выражение в виде ком...
19 июн. '12 в 19:45
3

Невозможно обернуть голову вокруг "подъема" в Ramda.js

Глядя на источник для Ramda.js, особенно на функцию "лифта". lift liftN Здесь приведен пример: var madd3 = R.lift(R.curry((a, b, c) => a + b + c)); madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] Итак, первое число резул...
11 апр. '16 в 20:26
1

Поднятие функции более высокого порядка в Haskell

Я пытаюсь построить функцию типа: liftSumthing :: ((a -> m b) -> m b) -> (a -> t m b) -> t m b где t является монадным трансформатором. В частности, я заинтересован в этом: liftSumthingIO :: MonadIO m => ((a -> IO b) -> IO...
11 февр. '12 в 19:11
1

Уборка Monads - превращение монодального трансформатора в новую монаду

Я пытаюсь принять, например. ExceptT a (StateT A M), для определенного типа A и monad M, и заверните их в мои новые пользовательские монады. Сначала я определил, что StateT A M часто появляется в других контекстах, и поэтому я решил, что было бы л...
14 сент. '15 в 19:09
1

Трансформация в трансформаторах

В настоящее время я испытываю трудности с трансформаторами монады. Я определяю несколько разных недетерминированных отношений, которые используют трансформаторы. К сожалению, у меня возникли проблемы с пониманием того, как правильно переводить из одн...
14 мая '13 в 20:31
1

Путаница с функциями "подъема" в Scala

В книге Функциональное программирование В Scala приведен пример "Lift", в котором продвигается функция с типом A => B до Option[A] => Option[B]. Вот как реализуется лифт: def lift[A,B](f: A => B):Option[A] => Option[B] = _ map f У ме...
22 июн. '13 в 23:26
1

Типичные трюки для подъема обобщенной многопараметрической функции

Я хочу поднять функцию Haskell в кодировку лямбда-исчисления более высокого порядка. Это берется почти дословно из Олега Типида без надписей Конечная кодировка. class Lam r where emb :: a -> r a (^) :: r (r a -> r a) -> (r a -> r a) ...
21 нояб. '13 в 18:01
3

Каковы шаги для вывода этого кода без кода?

Я просматривал какой-то код и наткнулся на следующий камень, который я ставлю в виде копии pointfree output: (Я думал, что следующее более подходящее, чем обычный foo/bar для данного конкретного вопроса: P) import Control.Monad (liftM2) data Bat...
19 нояб. '14 в 23:25
1

В Haskell существуют ли псевдонимы для (liftM. LiftM), (liftM. LiftM. LiftM) и т.д.?

В Haskell есть ли какие-либо псевдонимы для (liftM. liftM), (liftM. liftM. liftM) и т.д. Так что мне не нужно быть таким подробным, например: (liftM . liftM) (+ 1) [Just 1, Just 2] = [Just 2, Just 3] (liftM2 . liftM2) (+) [Just 1] [Just 2] = [Ju...
23 февр. '15 в 1:15
1

Поднимите Либо в ExceptT автоматически

Скажем, у меня есть (возможно, вводящий в заблуждение) фрагмент кода, лежащий вокруг: import System.Environment (getArgs) import Control.Monad.Except parseArgs :: ExceptT String IO User parseArgs = do args <- lift getArgs case safeHead...
04 янв. '16 в 9:55
2

Почему я могу передать функции поднятому R.divide?

Учитывая следующее: var average = R.lift(R.divide)(R.sum, R.length) Как получилось, что это работает как функция с плавающей точкой average? Я не понимаю, почему я могу передавать R.sum и R.length, когда они являются функциями, и поэтому я не мог...
17 сент. '16 в 10:47
2

Когда именно требуется подъем в монадных трансформаторах?

Я изучаю трансформаторы монады, и я смущен, когда нужно использовать лифт. Предположим, что у меня есть следующий код (он не делает ничего интересного, просто самый простой, с которым я мог бы прийти для демонстрации). foo :: Int -> State Int Int...
21 июл. '17 в 11:13