Dr. Friedrich
Как пример самого уёбищного интеропа можете посмотреть на purescript
サイトー
Не верю, покажите.
ну вот биндинги под момент например https://github.com/reasonml-community/bs-moment/blob/master/src/MomentRe.re
я не берсь за качество говорит, но они занимают даже меньше чем нативные https://github.com/moment/moment/blob/develop/moment.d.ts
Dr. Friedrich
Dr. Friedrich
А, ок, это иммутабельные врапперы
Dr. Friedrich
Просто сам momentjs плохо написан, а тут они поправили это, здесь ок
Dr. Friedrich
Пример неудачный в том смысле, что тут как раз авторы враппера своего кода вокруг написали, чтобы исправить ошибку в проектировании библиотеки.
Dr. Friedrich
Ну то есть он не очень показательный.
Vladislav
Сейчас вроде dayjs- смузи
サイトー
проблемы есть с string literal union, потому что если хочешь статических проверок то изволь писать конвертацию из/в DU
サイトー
https://github.com/reasonml-community/bs-fetch/blob/master/src/Fetch.ml
サイトー
Dr. Friedrich
Ну то есть у меня вот есть публичный интерфейс с var a: () -> (), а я хочу на этот объект навесить экстенд в языке, который транслируется в JS.
Dr. Friedrich
Это хороший тест на совместимость.
Dr. Friedrich
Во всех языках, которые «хорошо» интероперируются с JS, написать такое можно и это просто. А в тех, кто «плохо» интероперируется, написать такое нельзя без какого-нибудь ущербного враппера над JS-конструкциями (а в случае с extends тебе ещё и враппер придётся транспилить, тоже та ещё веселуха).
Igor
Как можно вообще “хорошо” интеропиться с языком в котором существуют только мутабульеные-словари?
Любые попытки покрыть это типами и при этом прозрачным интеропом - генерируется гору костылей и переусложнений тупо для интеропа.
Хороший пример этого ужаса - это TypeScript
Aleksandr
чет у меня сомнения что тут не хрень написана
Dr. Friedrich
Dr. Friedrich
Dr. Friedrich
Я не сомневаюсь, что для реакта в ризоне уж что-нибудь придумали, но как оно реализуется?
Анна
Dr. Friedrich
На завтра ожидается:
Утро: ясно −41 °C ☀️
День: ясно −37 °C ☀️
Вечер: ясно −44 °C ☀️
Ночь: ясно −47 °C ☀️
-47 градусов, нормас!
サイトー
а поводу наследования от либы отличный поинт, спасибо, я поизучаю
я просто неверно понял изначальный вопрос
Крылатый
Крылатый
Хотя по цельсию -40к это какая-то нереальная температура.
Крылатый
Она вообще возможна?
Крылатый
Хотя не, это ведь ниже абсолютного нуля...
サイトー
サイトー
а, к
サイトー
сорян
Dr. Friedrich
Крылатый
サイトー
Крылатый
Крылатый
Бубка Гоп!
サイトー
サイトー
-30 зимой для них вообще лафа, можно шестую шубу не надевать
Крылатый
Ну, -30 и -50 по разному ощущается везде. Ну и да, если там -30 всю зиму, то это считай всю зиму не учиться...
Ayrat
хотя школа может и работала, но дети в неё не ходили)
サイトー
главное повод найти
Анна
Крылатый
Крылатый
Снежные бабы лепить! Из сухого снега... так что они держаться и рассыпаются в снежные горки.
サイトー
Анна
Не ну а для чего ещё отменять школы
Анна
Мама говорит, в Новгороде вчера эвакуировали всех отовсюду по ложной тревоге. И школы тоже 🤔
Ayrat
Говорят, это C++
using namespace std;
template<Semiregular T>
struct maybe_view : view_interface<maybe_view<T>> {
maybe_view() = default;
maybe_view(T t) : data_(std::move(t)) {
}
T const *begin() const noexcept {
return data_ ? &*data_ : nullptr;
}
T const *end() const noexcept {
return data_ ? &*data_ + 1 : nullptr;
}
private:
optional<T> data_{};
};
inline constexpr auto for_each =
[]<Range R,
Iterator I = iterator_t<R>,
IndirectUnaryInvocable<I> Fun>(R&& r, Fun fun)
requires Range<indirect_result_t<Fun, I>> {
return std::forward<R>(r)
| view::transform(std::move(fun))
| view::join;
};
inline constexpr auto yield_if =
[]<Semiregular T>(bool b, T x) {
return b ? maybe_view{std::move(x)}
: maybe_view<T>{};
};
int main() {
// Define an infinite range of all the
// Pythagorean triples:
using view::iota;
auto triples =
for_each(iota(1), [](int z) {
return for_each(iota(1, z+1), [=](int x) {
return for_each(iota(x, z+1), [=](int y) {
return yield_if(x*x + y*y == z*z,
make_tuple(x, y, z));
});
});
});
// Display the first 10 triples
for(auto triple : triples | view::take(10)) {
cout << '('
<< get<0>(triple) << ','
<< get<1>(triple) << ','
<< get<2>(triple) << ')' << '\n';
}
}
Анна
Да, можно теперь отстреливать себе ногу в функциональном стиле!
Vasiliy
имхо это наркомания а не c++
Ayrat
синтаксис местами вижу первый раз.
это что?
return for_each(iota(1, z+1), [=](int x) {
а это что???
| view::transform(std::move(fun))
| view::join;
Ayrat
а это мать его что???
[]<Semiregular T>(bool b, T x) {
Анна
サイトー
Крылатый
Говорят, это C++
using namespace std;
template<Semiregular T>
struct maybe_view : view_interface<maybe_view<T>> {
maybe_view() = default;
maybe_view(T t) : data_(std::move(t)) {
}
T const *begin() const noexcept {
return data_ ? &*data_ : nullptr;
}
T const *end() const noexcept {
return data_ ? &*data_ + 1 : nullptr;
}
private:
optional<T> data_{};
};
inline constexpr auto for_each =
[]<Range R,
Iterator I = iterator_t<R>,
IndirectUnaryInvocable<I> Fun>(R&& r, Fun fun)
requires Range<indirect_result_t<Fun, I>> {
return std::forward<R>(r)
| view::transform(std::move(fun))
| view::join;
};
inline constexpr auto yield_if =
[]<Semiregular T>(bool b, T x) {
return b ? maybe_view{std::move(x)}
: maybe_view<T>{};
};
int main() {
// Define an infinite range of all the
// Pythagorean triples:
using view::iota;
auto triples =
for_each(iota(1), [](int z) {
return for_each(iota(1, z+1), [=](int x) {
return for_each(iota(x, z+1), [=](int y) {
return yield_if(x*x + y*y == z*z,
make_tuple(x, y, z));
});
});
});
// Display the first 10 triples
for(auto triple : triples | view::take(10)) {
cout << '('
<< get<0>(triple) << ','
<< get<1>(triple) << ','
<< get<2>(triple) << ')' << '\n';
}
}
Неплоха.
Крылатый
И вроде просто итерация в компилтайме по туплям (трайплам?)
Ayrat
Ayrat
спиздил отсюда
http://ericniebler.com/2018/12/05/standard-ranges/
Крылатый
Ааа!
Крылатый
Артем
int f(int x)
[[expects audit: x>0]]
[[ensures axiom res: res>1]];
void f(int x, int y)
[[expects: x>0]]
[[expects: y!=0]]
[[ensures result: result > x+y]]; скоро в С++ такое еще завезут к 20 году
Крылатый
Ayrat
Но код для меня остался загадкой. Хотя я плюсы читал (пару лет назад) нормально
Крылатый
Крылатый
Отлично же!
Крылатый
template generic lambda кек
Анна
Схожу на лекцию по C++ сегодня
x
зашёл в чат про джаву - а тут с++
x
Анна
Заманчиво же 🌚
Анна
я тебе помогу: я научу тебя любить С++
Анна
ты перейдешь в плюсовые разработчики и никогда больше не будешь заниматься этим говном
Артем
Срр скоро полирнут, и Растишка не успеет выстрелить :))