@frp_ru

Страница 122 из 420
Denis
28.07.2017
18:09:53
в ленивых язках нет

вроде

а не

но только не все, а что надо для take

Google
Denis
28.07.2017
18:24:56
а (.) . (.) . (.) это три аргумента - два аргумента - один аргумент?
(.) . (.) . (.) :: (b -> c) -> (a2 -> a1 -> a -> b) -> a2 -> a1 -> a -> c

illiatshurotshka❄️
28.07.2017
18:25:09
сложно

Denis
28.07.2017
18:25:25
ну функция от 3 потом от 1

illiatshurotshka❄️
28.07.2017
18:25:34
а

Denis
28.07.2017
18:25:41
а сиси вот

(.).(.) :: (b -> c) -> (a1 -> a -> b) -> a1 -> a -> c

illiatshurotshka❄️
28.07.2017
18:25:55
а как запилить три, потом два, потом один?

Denis
28.07.2017
18:25:55
от 2 а потом от 1

у джина спроси)

illiatshurotshka❄️
28.07.2017
18:26:14
че за джин

Denis
28.07.2017
18:26:15
это назвается процесс инхабитации

восстановление функции по ее сигнатуре

https://hackage.haskell.org/package/djinn

Google
illiatshurotshka❄️
28.07.2017
18:27:11
о

спасибо

Denis
28.07.2017
18:27:46
ну еще есть варинт программирования на дырках

illiatshurotshka❄️
28.07.2017
18:29:05
хм, слышал про такое в идрисе

оно есть в хаскеле?

Denis
28.07.2017
18:29:33
в агде это раньше было

illiatshurotshka❄️
28.07.2017
18:29:52
о

Denis
28.07.2017
18:35:42
оно есть в хаскеле?
http://vaibhavsagar.com/blog/2017/05/22/discovering-continuations/

о
Djinn> f ? a -> a f :: a -> a f a = a Djinn> f ? (b -> c) -> (a -> b) -> a -> c f :: (b -> c) -> (a -> b) -> a -> c f a b c = a (b c) Djinn> f ? (b -> c) -> (a -> a1 -> b) -> a -> a1 -> c f :: (b -> c) -> (a -> a1 -> b) -> a -> a1 -> c f a b c d = a (b c d) Djinn> f ? (b -> c) -> (a -> a1 -> a2 -> b) -> a -> a1 -> a2 -> c f :: (b -> c) -> (a -> a1 -> a2 -> b) -> a -> a1 -> a2 -> c f a b c d e = a (b c d e)

continuation) Djinn> type C a = (a -> r) -> r Djinn> returnC ? a -> C a returnC :: a -> C a returnC x1 x2 = x2 x1 Djinn> bindC ? C a -> (a -> C b) -> C b bindC :: C a -> (a -> C b) -> C b bindC x1 x2 x3 = x1 (\ c15 -> x2 c15 (\ c17 -> x3 c17)) Djinn> callCC ? ((a -> C b) -> C a) -> C a callCC :: ((a -> C b) -> C a) -> C a callCC x1 x2 = x1 (\ c15 _ -> x2 c15) (\ c11 -> x2 c11)

есть еще одна штука

ща вспомню

во! https://github.com/lspitzner/exference

а в общем это называется инхабитация

kana
28.07.2017
18:51:14
oooooo
caaaddr

Denis
28.07.2017
18:57:57
а как запилить три, потом два, потом один?
фух! f :: (c1 -> c2) -> (d -> e -> c1) -> (a -> b -> c -> d) -> a -> b -> c -> e -> c2 f a b c d e f g = a (b (c d e f) g) f (\x -> x + 10) (\x y -> x * y) (\x y z -> x + y + z) 10 20 30 40 50 60 70 2410

illiatshurotshka❄️
28.07.2017
18:58:30
офигеть

Denis
28.07.2017
18:58:53
теперь осталось поинт фри

ахаха

Google
Denis
28.07.2017
18:59:18
f = ((((const .) .) .) .) . (. flip (flip . ((flip . ((flip . (ap .)) .)) .) . (.) . (.) . (.)) id) . (.) . (.) . (.) . (.)

andretshurotshka?❄️кде
28.07.2017
18:59:32
лол

illiatshurotshka❄️
28.07.2017
18:59:42
найс

kana
28.07.2017
18:59:47
Генерация таких функций - не самое интересно, было бы интереснее, если бы он часть выражал через известные функции типа композиции

Или комбинаторы хотя бы

Denis
28.07.2017
19:00:30
illiatshurotshka❄️
28.07.2017
19:01:49
которая берет 4 потом 3 [...]

а нет

f = ((((const .) .) .) .) . (. flip (flip . ((flip . ((flip . (flip .)) .)) .) . (. flip (flip . ((flip . (flip .)) .) . (. flip (flip . (flip .) . flip flip id . (ap .)) h) . (.) . (.)) i) . (.) . (.) . (.)) j) . (.) . (.) . (.) . (.)

andretshurotshka?❄️кде
29.07.2017
00:28:58
магия

illiatshurotshka❄️
29.07.2017
14:10:29
так

параморфизм это фолд но есть доступ ко всей структуре?

Vadim
29.07.2017
18:52:30
Можно ли методами рамда сделать это же? const fn = a => () => inc(a); const futureCall = fn(5); futureCall() //=> 6

Типа кэрринга, но для функции с одним аргументом, типа inc.

illiatshurotshka❄️
29.07.2017
18:54:42
зачем?

Vadim
29.07.2017
18:56:09
Какие примитивные утилитарные вопросы )

Google
Vadim
29.07.2017
19:01:15
Нашел: const fn = compose(always, inc); const futureCall = fn(5); futureCall() //=> 6

Хотя нет, не то. Нужно что б вычисление выполнилось именно в момент финального вызова

andretshurotshka?❄️кде
29.07.2017
19:09:24
partial?

Vadim
29.07.2017
19:10:41
partial?
Ого! Спасибо огромное! )

Вот блин, знаю же все методы, а в голове в нужный момент не всплывают )

В итоге так: compose(partial(inc), of)(5)() //=> 6

Admin
ERROR: S client not available

illiatshurotshka❄️
29.07.2017
20:11:37
а в хаскеле groupBy

хмм

Vadim
29.07.2017
22:20:38
Раз уж напомнили о тех задачках, то я тут еще попрактиковался )

frequency([1,2,1,2,4,2,1]) // => [[1,1],[2,1],[1,2],[2,2],[4,1],[2,3],[1,3]]
const frequency = o(nth(1), mapAccum((acc, val) => { const getIncreasedVal = o(inc, propOr(0, val)) const getAccumPair = juxt([assoc(val, __, acc), pair(val)]); return o(getAccumPair, getIncreasedVal)(acc) }, {} )); frequency([1,2,1,2,4,2,1]); //=> [[1, 1], [2, 1], [1, 2], [2, 2], [4, 1], [2, 3], [1, 3]]

Может есть и более краткое решение на рамде, но я пока не нашел

andretshurotshka?❄️кде
29.07.2017
22:23:31
Vadim
29.07.2017
22:24:13
объясни что делает juxt
Как раз возвращает тапл, как и надо для mapAccum

andretshurotshka?❄️кде
29.07.2017
22:41:30
?

Google
Vadim
30.07.2017
09:57:26
Есть ли в рамде какой-то "не громоздкий" способ прокидывать сразу несколько аргументов через цепочку вызовов? Все что приходит в голову, это создать из набора аргументов объект, и прокидывать его через compose, преобразуя перед передачей в каждую из функций, и дальше преобразовывая назад. Но это очень уж громоздко. А можно ли проще?

andretshurotshka?❄️кде
30.07.2017
09:58:39
?

делать функции data last

? animufag ?
30.07.2017
10:00:05
map(f => f(a,b))

Vadim
30.07.2017
10:00:14
andretshurotshka?❄️кде
30.07.2017
10:00:42
ну данные последним аргументом

Vadim
30.07.2017
10:01:27
Я про НАБОР аргументов, и в каждую функцию в цепочке

? animufag ?
30.07.2017
10:01:47
compose сможет как-нибудь массив принять?

map(f => f(НАБОР АРГУМЕНТОВ), [КАЖДАЯ ФУНКЦИЯ])

Vadim
30.07.2017
10:03:48
map(f => f(НАБОР АРГУМЕНТОВ), [КАЖДАЯ ФУНКЦИЯ])
Спасибо за наводку на мысль! )

Дмитрий
30.07.2017
10:27:36
Либа в две строки) https://github.com/zerobias/ensue Но это всё равно не выход

Нужен нормальный Reader, всё остальное — полумеры

kana
30.07.2017
10:33:37
Не совсем понятно, нужно ли передавать в функции одни и те же аргументы, или каждая функция должна генерить новые n аргументов, которые нужно передать дальше

Можно оборачивать каждую функцию в apply и возвращать массив аргументов

Дмитрий
30.07.2017
10:41:31
Просто передавать через все функции ровно один аргумент

Контекст выполнения, в котором будут содержаться все необходимые данные

Vadim
30.07.2017
11:28:34
Не совсем понятно, нужно ли передавать в функции одни и те же аргументы, или каждая функция должна генерить новые n аргументов, которые нужно передать дальше
Конечно аргументы по пути должны трансформироваться. Поэтому я и сказал именно об аналоге compose. По пути через цепочку аргументы должны трансформироваться.

Иначе я бы применил juxt )

Или converge

Я так понимаю, что монада Reader для этой таких задач не подходит? Она же обеспечивает только чтение переменных?

Страница 122 из 420