
kana
01.10.2017
10:55:27
Тупо каждый с каждым, обычный перебор

Denis
01.10.2017
10:55:35

Kelin
01.10.2017
10:55:53

Denis
01.10.2017
10:56:10

Google

Denis
01.10.2017
10:56:13
аппликации

Дмитрий
01.10.2017
10:56:32
но какие у этого юзкейсы могут быть?
У тебя есть три Future<number> (может ты у сервера их спрашиваешь)
И есть функция add3 = a => b => c => a + b + c
lift(add3)(future, future, future)
Вжух!
У тебя теперь future с суммой этих чисел

Name
01.10.2017
10:56:49
((a, b=1) => b).length

Denis
01.10.2017
10:57:02
ага) как Promise.all только последовательно

Дмитрий
01.10.2017
10:57:10
То же самое можно с maybe, в общем, упростить себе жизнь когда есть куча контейнеров и большое желание работать с данными напрямую

Denis
01.10.2017
10:57:13
еще представитель Observable.combineLatest

Kelin
01.10.2017
10:57:47
так, а теперь еще один тупой вопрос
что за future

Дмитрий
01.10.2017
10:57:54
Промис, бро

Kelin
01.10.2017
10:57:59
ок

Дмитрий
01.10.2017
10:58:07
В данном случа не важно, короче

Denis
01.10.2017
10:58:17

kana
01.10.2017
10:58:57
Функтор переносит функцию a -> b в мир f a -> f b
То есть была toString :: a -> String.
map(toString) :: f a -> f String
Например, если функтор - массив, то
x = map(toString) :: [a] -> [String]
x([1, 2]) // ["1", "2"]
Лифт просто делает это с функциями большего количества аргументов
g :: a -> b -> c
lift2(g) :: f a -> f b -> f c
Долго писал...

Google

kana
01.10.2017
11:00:17
Там все это работает изнутри через пару map, ap
В fl какие-то дибильные апы, сейчас не вспомню

Дмитрий
01.10.2017
11:03:02
Они там спеку поменяли недавно
Или не очень недавно, но в общем починили
Предыдущий вариант блин даже не типизировался ? А теперь норм

illiatshurotshka❄️
01.10.2017
11:05:27
а зачем нужна возможность создавать свои кайнды?

Denis
01.10.2017
11:08:02
ap :: Functor f => f (a -> b) -> f a -> f b
У нас функциональная стрелка r -> e
Так как нам нужен kind * -> * а у стрелки * -> * -> * то мы частично применим ее
и наш f будет ((->)r)
тогда
ap :: ((->)r) (a -> b) -> ((->)r) a -> ((->)r) b
ap :: (r -> (a -> b)) -> (r -> a) -> (r -> b)
ap :: (r -> a -> b) -> (r -> a) -> r -> b
что есть в теории комбинаторов аксиоматический базисный комбинатор S
и как можно заметить процесс инхабитации можно сделать по типу
f :: (r -> a)
g :: (r -> a -> b)
x :: r
теперь попробуем решить это
нам нужно прийти к b как конечному типу, а для этого у нас есть такой путь
f(x) :: a
g(x)(f(x)) :: b
и того имеем что наш ap для функциональной стрелки ap g f x = g x $ f x


kana
01.10.2017
11:08:22
map :: (a -> b) -> (f a -> f b)
ap :: f (a -> b) -> f a -> f b
add :: Int -> Int -> Int
add = a => b => a + b
map(add) :: [Int] -> [Int -> Int]
map(add, [1, 2]) :: [Int -> Int]
[b => 1 + b, b => 2 + b]
map(add, [1, 2]).ap([2, 3]) :: [Int]
[1 + 2, 1 + 3, 2 + 2, 2 + 3]
[3, 4, 4, 5]
Но полагаю, в фл ap будет принимать мап

Дмитрий
01.10.2017
11:09:40
map :: (a -> b) -> (f a -> f b)
ap :: f (a -> b) -> f a -> f b
add :: Int -> Int -> Int
add = a => b => a + b
map(add) :: [Int] -> [Int -> Int]
map(add, [1, 2]) :: [Int -> Int]
[b => 1 + b, b => 2 + b]
map(add, [1, 2]).ap([2, 3]) :: [Int]
[1 + 2, 1 + 3, 2 + 2, 2 + 3]
[3, 4, 4, 5]
Во, вот тут ap в состоянии как было
Неудобно просто жесть как))

Denis
01.10.2017
11:10:36
TDD же

Дмитрий
01.10.2017
11:10:38
То есть если у тебя структура
class Maybe<T> {
ap<??>
}
То её ap просто не выражается
Теперь первые два параметра поменяли местами

Denis
01.10.2017
11:11:04
Type driving development

Дмитрий
01.10.2017
11:11:16
ap :: Apply f => f a ~> f (a -> b) -> f b

Denis
01.10.2017
11:11:42
шляпа весь этот FL

illiatshurotshka❄️
01.10.2017
11:11:54

Дмитрий
01.10.2017
11:12:22

Google

Котяй Негодяй
01.10.2017
11:12:37
Ы

kana
01.10.2017
11:12:47
Ну вот в асме один тип, числовой, там это не очень удобно, ввели еще типов
Но типов типов тоже мало, ввели еще каиндов. На самом деле полагаю, что каинды - адхок решение в языке, где типы не первоклассны
Иначе можно было вводить сразу универсумы

illiatshurotshka❄️
01.10.2017
11:14:21

kana
01.10.2017
11:15:00
Там все есть число, отвечаю, я джва года на асме писал для колибри)

Дмитрий
01.10.2017
11:15:54
Жс ето асм

illiatshurotshka❄️
01.10.2017
11:16:54
?
числа это же просто наборы битов

Дмитрий
01.10.2017
11:18:06
Неверная абстракция
Сколько бит в числе пи?

illiatshurotshka❄️
01.10.2017
11:19:01
сколько цифер в числе пи?

adam
01.10.2017
11:19:17
Числа — это набор выполненных succ над true по-моему

Дмитрий
01.10.2017
11:20:06

illiatshurotshka❄️
01.10.2017
11:20:43
можешь ли ты сделать это в asm?

adam
01.10.2017
11:20:44
С плавающей точкой числа репрезентатированы по IEEEE-754 как произведение числа на 2^n

Дмитрий
01.10.2017
11:21:15

illiatshurotshka❄️
01.10.2017
11:21:23
какие-то мемы
в информатике это самая валидная абстракция

adam
01.10.2017
11:23:09
словил наживку :(

Google

Kelin
01.10.2017
11:34:11
Ля ребят, не в тему вопрос, конечно, но мб кто знает
Есть ли возможность вывести деньги с карты, если проебал пин?
Знаю, что покупки можно совершать, а вот просто вывести/перевести на другую карту?

illiatshurotshka❄️
01.10.2017
11:35:53
?

Дмитрий
01.10.2017
11:36:16
восстановить же можно

? animufag ?
01.10.2017
11:36:39
не помогайте плз
человек должен сам научиться решать базовые проблемы

Kelin
01.10.2017
11:38:13
омг

Admin
ERROR: S client not available

Котяй Негодяй
01.10.2017
11:40:16

? animufag ?
01.10.2017
11:40:30
это очень пустой оффтоп
все знают ответ и отвечая вы провоцируете его на то чтобы он вместо гугла лез в первую очередь в чатики
ну кроме гугла есть ещё дофига каналов

Таймураз
01.10.2017
11:42:23

Kelin
01.10.2017
11:43:07

? animufag ?
01.10.2017
11:43:16
ну да сосед по хате меня считает мудаком. ну скорее в положительную сторону. типа как равный себе

Cenator
01.10.2017
11:46:12
Если есть доступ к интернет банку, то вообще похер, спокойно можно (с комиссией)

Andrey
01.10.2017
11:48:25

Cenator
01.10.2017
11:49:28

Artsiom
01.10.2017
12:23:28
Подскажите, плз, есть ли какие дельные подкасты/аудио книги на английском по ФП?

Google

? animufag ?
01.10.2017
12:27:06
подкасты о функциональщине https://www.fpcasts.com/

Artsiom
01.10.2017
12:52:32

? animufag ?
01.10.2017
13:02:27
(хотя если гуглить это тоже на первой строке)
и есть что-нибудь ок?
на вкус и цвет. мне например ок этот http://typetheorypodcast.com/2014/08/episode-1-peter-dybjer-on-type-theory-and-testing/

Name
01.10.2017
15:56:01
Туториал по написанию REST API на PureScript
https://abhinavsarkar.net/posts/ps-simple-rest-service/
https://abhinavsarkar.net/posts/ps-simple-rest-service-2/

illiatshurotshka❄️
01.10.2017
15:57:30
посмотрел на готовый код и стало некомфортно

andretshurotshka?❄️кде
01.10.2017
16:03:24
лол
монад трансформер не не слышал

Name
01.10.2017
16:03:47

illiatshurotshka❄️
01.10.2017
16:04:27

andretshurotshka?❄️кде
01.10.2017
16:05:33
да я просто мастер открыл

illiatshurotshka❄️
01.10.2017
16:06:48
почему не использовать do ?

kana
01.10.2017
16:06:55
Пример написания абстрактной бизнес-логики на хаскеле с фри монадами и линзами. Внезапно, это оказалось очень простым делом, потому что
а) функтор для команд выводится автоматически
б) хэлперы для создания фри-команд из обычный команд тоже генерируеются автоматически через TemplateHaskell
И ниже написан простой интерпретатор run, который работает с StateT (аналогично, мы можем написать второй интерпретатор для работы с базой данных и выполнять одну и ту же бизнес-логику там, это проще, чем DI)
https://gist.github.com/kana-sama/658ccb7b0d0bb6a10f9bcb55f04c3941

Name
01.10.2017
16:06:57

andretshurotshka?❄️кде
01.10.2017
16:07:06

illiatshurotshka❄️
01.10.2017
16:07:36