Size: a a a

2021 March 26

JS

Jerzy Syrowiecki in ФП
Yuri Kostin
Есть какие-то идеи, как можно натренировать мозг на HTK?
это же ровно то же самое, что HOF, только для типов
источник

JS

Jerzy Syrowiecki in ФП
а с зависимыми типами это действительно одно и то же
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
это же ровно то же самое, что HOF, только для типов
Вот с одной стороны я это прекрасно осознаю, но с другой - не понимаю как это использовать.
Опыта в TS почти ноль.
Курта прошёл только до введения в обиход Maybe
источник

JS

Jerzy Syrowiecki in ФП
map принимает функцию из данных в данные, а, например, класс Functor принимает функцию из типа в тип
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
map принимает функцию из данных в данные, а, например, класс Functor принимает функцию из типа в тип
То есть здесь

class Functor f where
   fmap :: (a -> b) -> f a -> f b

f
- указание на тип?
источник

JS

Jerzy Syrowiecki in ФП
может, тогда сначала c lower-kinded types освоиться?
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
может, тогда сначала c lower-kinded types освоиться?
Что почитать?
источник

JS

Jerzy Syrowiecki in ФП
Yuri Kostin
То есть здесь

class Functor f where
   fmap :: (a -> b) -> f a -> f b

f
- указание на тип?
здесь f — функция из типа в тип. можно сказать "параметрический тип"
источник

JS

Jerzy Syrowiecki in ФП
Yuri Kostin
Что почитать?
того же Курта далее
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
того же Курта далее
Принято.
Мотивации не хватает, но попробую к нему вернуться
Спасибо)
источник

JS

Jerzy Syrowiecki in ФП
Yuri Kostin
То есть здесь

class Functor f where
   fmap :: (a -> b) -> f a -> f b

f
- указание на тип?
a — тип (данных)
f a — тоже тип (данных)
f — не тип, а преобразование между первыми двумя
источник

JS

Jerzy Syrowiecki in ФП
а можно перестать хотеть "понимать HKT" и просто пользоваться Maybe, Either, Reader, Writer, State. это более плодотворно, насколько я вижу
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
а можно перестать хотеть "понимать HKT" и просто пользоваться Maybe, Either, Reader, Writer, State. это более плодотворно, насколько я вижу
😁😅
источник

JS

Jerzy Syrowiecki in ФП
Yuri Kostin
То есть здесь

class Functor f where
   fmap :: (a -> b) -> f a -> f b

f
- указание на тип?
например, давай читать так:

f — это переменная, в которую можно подставить [], Maybe, Either e, Reader r, Writer w, State s и много других интересностей
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
например, давай читать так:

f — это переменная, в которую можно подставить [], Maybe, Either e, Reader r, Writer w, State s и много других интересностей
Ну то есть, условно, это тот контекст, в который поднимается функция a -> b?
источник
2021 March 27

JS

Jerzy Syrowiecki in ФП
Yuri Kostin
Ну то есть, условно, это тот контекст, в который поднимается функция a -> b?
да, можно и так сказать, хотя это довольно расплывчатая формулировка
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
да, можно и так сказать, хотя это довольно расплывчатая формулировка
У меня пока всё, что касается взрослого ФП - расплывчатое 🙈
источник

JS

Jerzy Syrowiecki in ФП
в Хаскеле есть несколько способов поднять функцию в контекст, выраженный функцией над типами

fmap     :: (a -> b) -> (f a -> f b)
pure     :: (a -> b) -> f (a -> b)
(pure .) :: (a -> b) -> (a -> f b)

один из них — fmap
источник

YK

Yuri Kostin in ФП
Jerzy Syrowiecki
в Хаскеле есть несколько способов поднять функцию в контекст, выраженный функцией над типами

fmap     :: (a -> b) -> (f a -> f b)
pure     :: (a -> b) -> f (a -> b)
(pure .) :: (a -> b) -> (a -> f b)

один из них — fmap
Да, первый я видел преимущественно в статьях, а вот другие два пока что нет
источник

JS

Jerzy Syrowiecki in ФП
есть и другие контексты, в которые можно поднимать функции, но не буду перегружать
источник