
Дмитрий
19.07.2016
18:33:13

Dreamerinnoise
19.07.2016
18:33:24
http://functionaljavascript.blogspot.com/2013/07/functors.html

Дмитрий
19.07.2016
18:34:22

Саторин
19.07.2016
18:35:04

Google

Саторин
19.07.2016
18:36:53
According to the theory, function F is afunctor when for two composable ordinary functions f and g
F(f . g) = F(f) . F(g)
where . indicates composition. ie. functors must preserve composition.

Дмитрий
19.07.2016
18:39:10
Это скорее интерфейс, а не класс)
И нет, это одновременно полноценная функция высшего порядка)) Посмотри по ссылке как это сделано.
В js/ts слишком хорошее функциональное программирование, чтобы размышлять в терминах C++

Саторин
19.07.2016
18:40:15
Я не шарю особо в теоркате но я знаю что функтор это не фвп.
Точнее эти понятия не эквивалентны

Дмитрий
19.07.2016
18:42:42

Саторин
19.07.2016
18:43:31
А, ну сори. Просто ты написал что это функция, которая принимает на вход другую функцию
Я вообще больше за традиционный подход, функциональное программирование мне кажется не подходит для жс. Хотя не буду разжигать срач, каждому свое

Dreamerinnoise
19.07.2016
18:51:31
Традиционный в js :)

Дмитрий
19.07.2016
19:41:48
class Layer ... //твой слой
let images //твои изображения
let print //твоя функция печати слоя
const enum TLayer {TOP, MIDDLE, BOTTOM}
type Order = TLayer[]
interface ILayered {
getLayer(lt:TLayer)=>Layer
}
let imgLayers = (order:Order)=>
(img:ILayered)=>
order.map(img.getLayer)
let printLayers =
(printFunc,layersFunc)=>
//композиция двух функций
(img:ILayered)=>
layersFunc(img).map(printFunc)
let _order = [
TLayer.BOTTOM,
TLayer.MIDDLE,
TLayer.TOP
];
//заметь, порядок выбираем мы сами
let orderFunctor = imgLayers(_order);
let printImage=printOrdered(print,orderFunctor);
images.map(printImage)
По моему вполне элегантно js/ts подходит))
С ramda так вообще шик и блеск будет


Саторин
19.07.2016
19:54:39
Спасибо бро что накатал свой пример, но проблему энума ты не решил похоже. Он остался в виде TLayer

Google

Дмитрий
19.07.2016
19:56:11
Ты от него по определению не избавишься, он тебе в любом случае нужен, если ты хочешь как-то более-менее унифицированно решить свою задачу.

Саторин
19.07.2016
19:57:28

Дмитрий
19.07.2016
19:58:22
Заметно))

Ҫѐҏӗѫӑ
19.07.2016
23:51:54
btw про енумы на след неделе на митинге tc39 будут говорить

Dreamerinnoise
20.07.2016
05:52:12
О, а второй вебпак будет поставляться с этим.
https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/webpack

Viacheslav
20.07.2016
08:38:57

Vladimir
20.07.2016
09:27:46
Зачем в джсе енумы?

Viacheslav
20.07.2016
09:42:51
дабы не писать
const USER_LOGGED_OUT = 'USER_LOGGED_OUT'
:)

Vladimir
20.07.2016
10:02:01
ну это уж совсем сахар

Ҫѐҏӗѫӑ
20.07.2016
10:22:57
ваще enum в js зарезервированное слово с самого начала если что

Vladimir
20.07.2016
10:24:14
ну это примерно ничего не значит
http://www.ecma-international.org/activities/Languages/Language%20overview.pdf
Угарный док

Ҫѐҏӗѫӑ
20.07.2016
10:25:59
все так. но факт остается фактом. rwaldron собирается втирать 15 минут про енумы

Vladimir
20.07.2016
10:26:33
Да хз че там имеется в виду. Там просто написано: enum

Ҫѐҏӗѫӑ
20.07.2016
10:27:12
Угарный док
ты наверное еще этот не видел http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-414.pdf

Artur
20.07.2016
14:35:32
А у кого-нибудь, кто пользуется WebStorm последним, были проблемы с конфликтом node.d.ts и lib.es6.d.ts?

Саторин
20.07.2016
15:08:32
Я в саблайме пишу)

Google

Dreamerinnoise
20.07.2016
15:44:05
я продался MS и пишу на vscode

Саторин
20.07.2016
15:45:23
У атома поддержка лучше но мне не нравится как там подсказки работают

Dreamerinnoise
20.07.2016
15:48:50

Саторин
20.07.2016
15:50:28
Ну то что я заметил есть автокомплит для импортов и можно найти все использования для символа

Dreamerinnoise
20.07.2016
15:50:58
автовставка? да, не хватает в code

Саторин
20.07.2016
15:52:04
Нет, такого нет - просто имя файла подсказывает

Dreamerinnoise
20.07.2016
15:52:51
А. тогда это киллер-фича JetBrains

Vasiliy
20.07.2016
17:11:45
выдалось время поразбираться в тайпскрипте
начал с основ
function isFish(pet: Fish | Bird): pet is Fish {
return (<Fish>pet).swim !== undefined;
}
вот это позволяет писать так:
if (isFish(pet)) {
pet.swim();
}
else {
pet.fly();
}
т.е. User-Defined Type Guards, не очень понимаю как это работает
как он понимает внутри фигурных скобок какого типа pet
это типа прям в язык встроено
блин, как же странно это выглядит
Notice that TypeScript not only knows that pet is a Fish in the if branch; it also knows that in the else branch, you don’t have a Fish, so you must have a Bird.
это тааак не привычно выглядит, ладно, я понял, наверное, ими очень редко пользуются на деле

andretshurotshka?❄️кде
20.07.2016
17:20:41
а когда user-defined type guards в switch'ах будут работать?

Ҫѐҏӗѫӑ
20.07.2016
17:22:52
я продался мс и везде пропагандирую их технологии
и не понимаю когда они мне заплатят уже за евангелие

Google

Vasiliy
20.07.2016
17:26:10
Do not use "I" as a prefix for interface names.
уупс :)
читаю https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines
а я уже везде все интефейсы назвал с префиксом I :) причем почти со всеми остальными рекомендациями чисто интуитивно угадал

Aleh
20.07.2016
17:30:25
никогда не юзал I для интерфейсов)
но это для тех, кто в ts контрибутит

Vasiliy
20.07.2016
17:33:34
да, с шарпа привычка, хоть и не писал на нем лет 5) ничего, сейачас все прочитаю пока есть возможность. да стайлгайд для контрибьюторов, просто другого не нашел, хотя, нашел
https://basarat.gitbooks.io/typescript/content/docs/styleguide/styleguide.html и это еще https://github.com/Platypi/style_typescript

Aleh
20.07.2016
17:34:55
пропагандируешь

Ҫѐҏӗѫӑ
20.07.2016
17:35:13
винду)
офис

Aleh
20.07.2016
17:35:53
винду О.о

Ҫѐҏӗѫӑ
20.07.2016
17:36:01
а чо нет?
YOLO

Aleh
20.07.2016
17:37:09
ну только вот с убунту терминалом
хз как там хорошо оно работает

Andrey
20.07.2016
17:37:38
не, винда для игр только норм)

Vasiliy
20.07.2016
17:38:09
кек https://github.com/Platypi/style_typescript#interfaces
Interfaces should be prefaced with the capital letter I.
а basarat: Don't prefix with I

Google

Aleh
20.07.2016
17:39:16
ну я поддерживаю тех, кто не префиксит)

Алексей
20.07.2016
17:39:18
я за prefixing with I ... не понимаю почему нет.. не услышал ни 1 аргумента

Vasiliy
20.07.2016
17:39:29
ладно, пусть все остается как было

Aleh
20.07.2016
17:39:41
типа, зачем искажать имя?

Ҫѐҏӗѫӑ
20.07.2016
17:40:00
винда не только для игр норм, не надо
она дохуя для чего норм

Алексей
20.07.2016
17:40:13
в чем "искажение" ?

Aleh
20.07.2016
17:40:42
ну, какая-то левая буква, которая говорит внешнему наблюдателю, что перед ним интерфейс, а ему должно быть все равно интерфейс перед ним, тип или класс

Andrey
20.07.2016
17:41:15

Aleh
20.07.2016
17:41:33
так а кто-нить тестил эту убунту виндовую?

Ҫѐҏӗѫӑ
20.07.2016
17:41:33
99% населения планеты похуй на npm как-т

Aleh
20.07.2016
17:41:51
@chicoxyzzy а ты не девелоперов агитируешь?
для офисной ерунды она норм, как и убунту или мак, одинаковые они)

Ҫѐҏӗѫӑ
20.07.2016
17:42:14
и девелоперов тоже

Aleh
20.07.2016
17:42:18
кино посмотреть, пасьянс разложить в вк написать

Ҫѐҏӗѫӑ
20.07.2016
17:42:25
лучше платформы для разработки на плюсах просто нет

Aleh
20.07.2016
17:43:21
ну хз, я не специалист в плюсах ниразу, может оно и удобно
но плюсы опять же не про вебдев, обычно

Ҫѐҏӗѫӑ
20.07.2016
17:43:39
vs — единственная нормальная ide для плюсов
это пока что)

Aleh
20.07.2016
17:43:58
vim и emacs нормальные ide с нормальными компиляторами, а все остальное хз)