function-composition

Я изучаю CPS с помощью Racket, и мне удалось записать следующие функции: ;lift a regular single-arg function into CPS (define (lift/k f) (lambda (x k) (k (f x)))) ;compose two CPS functions (define (compose/k f g) (lambda (x k) (g x (lambda (y) (f y k))))) Они, кажется, работают пр...

Итак, давайте прямо к делу. :t (map.foldr) (map.foldr) :: (a1 -> a -> a) -> [a] -> [[a1] -> a] Что такое [[a1] - > a]? Я действительно пытаюсь понять эту композицию, поэтому я делал это: -- map.foldr map.foldr :: (a1 -> a -> a) -> [a] -> [[a1] -> a] map :: (a1 -...

Я пишу макрос для композиции функции / макроса (возможны смешанные комбинации). Внутри макроса я должен обращаться с символами, которые представляют функции и те, которые называют макросы по-разному. Это связано с тем, что функция результата должна работать с любым количеством аргументов (если "самая низкая" ...

Я хотел бы создать функцию "compose" в R, которая будет составлять произвольное число функций, заданных в качестве аргументов. До сих пор я достиг этого, определив функцию "of", которая составляет два аргумента, а затем уменьшив ее: of <- function(f,g) function(x) f(g(x)) id <- function(x) x compose...

Интересно, есть ли в Clojure идиома для объединения нескольких функций с одним аргументом в новую функцию, принимающую вектор. Новая функция должна применить первую функцию к первому аргументу и так далее. Я думаю, что это полезно в ряде ситуаций. Например, вы можете преобразовать координаты x, y и z точки с...

Я пытаюсь понять результат (*) . (+) В Хаскелле. Я знаю, что оператор композиции - это просто стандартная композиция математических функций-так что (f . g) = f (g x) Но: (*) . (+) :: (Num (a -> a), Num a) => a -> (a -> a) -> a -> a Я изо всех сил пытаюсь понять этот тип сигнатур...

Я изучал некоторые основные функциональные композиции в Хаскелле, и пока я играл, я понял кое-что, что я не могу действительно объяснить. Когда я использую следующий блок кода, компилятор, кажется, рад этому и работает нормально: doSomeX x = if x==7 then True else False doSomeY (x,y) = x+y+1 doSomeXY = doSo...

Я пытаюсь понять (>>=).(>>=), что GHCi говорит мне: (>>=) :: Monad m => m a -> (a -> m b) -> m b (>>=).(>>=) :: Monad m => m a -> (m b -> (a -> m b) -> b1) -> (a -> m b) -> b1 Можете ли вы дать пошаговое объяснение того, как получен р...

Я читал Реальный Мир Хаскелл, и я приближаюсь к концу, но вопрос стиля был придираться ко мне, чтобы сделать с (.) и ($) операторы. когда вы пишете функцию, которая является композицией других функций, вы пишете ее так: f = g . h но когда вы применяете что-то к концу этих функций, я пишу это так: k = a $...

Я пытаюсь понять, что делает оператор dot в этом коде Haskell: sumEuler = sum . (map euler) . mkList весь исходный код ниже. мое понимание оператор точки принимает две функции sum и в результате map euler и в результате mkList в качестве входных данных. а, sum не является ли функция аргументом функции...