Size: a a a

F# Flood: кибербабулинг башкиров

2020 September 17

VA

Vagif Abilov in F# Flood: кибербабулинг башкиров
👍
источник

VP

Vasiliy Pereverzev in F# Flood: кибербабулинг башкиров
Пролететь на велосипеде между двумя девятиэтажками смог студент из Челябинской области 😨 Не пытайтесь повторить увиденное. Расстояние между зданиями — 6 метров! К трюку парень готовился целый месяц ☝🏻
источник

АВ

Андрей Вилинский... in F# Flood: кибербабулинг башкиров
Vladimir Shchur
задачка на ночь по мотивам обсуждения на работе) нужно ли покрывать такую функцию тестами и если да, то какими

let f a b =
 a()
 b()
öбнулись
источник

АВ

Андрей Вилинский... in F# Flood: кибербабулинг башкиров
как из 10 секунд работы сделать неделю челочасов
источник

VA

Vagif Abilov in F# Flood: кибербабулинг башкиров
Vladimir Shchur
ну вот в том и вопрос) предлагают мне тестить что вторая функция вызвалась после первой
Если за такие тесты платят по часовой расценке и заказчик настаивает, что они нужны - то обязательно нужно их писать. Однако, в моей практике такого не случалось.
источник

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
Shub Niggurath
Проще говоря, не надо это тестить, потому что вы докатитесь до тестирования арифметики - а вдруг функция вместо сложения вычитает там?
аргумент был такой - если кто-то поменяет порядок, то два раза подумает вместо одного
источник

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
плюс покрытие тестами увеличится
источник

VA

Vagif Abilov in F# Flood: кибербабулинг башкиров
Говорю это как в прошлом unit test junkie, доводивший с высунутым языком test code coverage до 100 процентов, но это было в прошлом.
источник

VA

Vagif Abilov in F# Flood: кибербабулинг башкиров
Vladimir Shchur
плюс покрытие тестами увеличится
Это опасный аргумент. Покрытие тестами не должно влиять на приоритет работ, а значит его вообще не нужно учитывать в метриках проекта.
источник

VA

Vagif Abilov in F# Flood: кибербабулинг башкиров
Vladimir Shchur
аргумент был такой - если кто-то поменяет порядок, то два раза подумает вместо одного
Ну так проще комментарий там написать: "don't change the execution order, suka!"
источник

DS

Doge Shibu in F# Flood: кибербабулинг башкиров
Shub Niggurath
Тут должен был быть номер от лица свидетелей tagless final, но они опаздывают - красный нос закатился под гримировочное трюмо
Так тут не нужен никакой FT, достаточно функция a возвращала значение, необходимое функции b и которое нельзя создать вне a.

Можно это через подобный трейт выразить:

trait MyTrait {
   type Evidence;
   type EvidenceOfA;
   type EvidenceOfB;

   fn a(ev: Evidence): EvidenceOfA;
   fn b(ev: EvidenceOfA): EvidenceOfB;
}
источник

DS

Doge Shibu in F# Flood: кибербабулинг башкиров
Если мы при этом говорим про раст, то там вообще зашибись из-за афинных типов
источник

DS

Doge Shibu in F# Flood: кибербабулинг башкиров
Т.к. не будет возможности вызвать b два раза т.к. EvidenceOfA нельзя копировать или клонировать
источник

DS

Doge Shibu in F# Flood: кибербабулинг башкиров
И оно будет замувлено в b
источник

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
Doge Shibu
Так тут не нужен никакой FT, достаточно функция a возвращала значение, необходимое функции b и которое нельзя создать вне a.

Можно это через подобный трейт выразить:

trait MyTrait {
   type Evidence;
   type EvidenceOfA;
   type EvidenceOfB;

   fn a(ev: Evidence): EvidenceOfA;
   fn b(ev: EvidenceOfA): EvidenceOfB;
}
а как обеспечивается что EvidenceA нельзя создать вне функции a?
источник

VS

Vladimir Shchur in F# Flood: кибербабулинг башкиров
Vagif Abilov
Ну так проще комментарий там написать: "don't change the execution order, suka!"
да, я тоже такое хотел предложить)
источник

DS

Doge Shibu in F# Flood: кибербабулинг башкиров
Vladimir Shchur
а как обеспечивается что EvidenceA нельзя создать вне функции a?
Тем что это трейт, а типы EvidenceOfA, EvidenceOfB ассоциированные в нём.

Функция, которая будет просто использовать этот трейт ничего не знает про типы EvidenceOfA, EvidenceOfB, кроме того, что указано в трейте, а в нём ничего не указано про них
источник

VK

Vladislav Khapin in F# Flood: кибербабулинг башкиров
Ayrat Hudaygulov
TIL, 95.5% игроков в CK3 играют неправильно
Я хз какой инбред если у тебя tribal государство
источник

AH

Ayrat Hudaygulov in F# Flood: кибербабулинг башкиров
Vladislav Khapin
Я хз какой инбред если у тебя tribal государство
А как это мешает?
источник

DS

Doge Shibu in F# Flood: кибербабулинг башкиров
Vladimir Shchur
а как обеспечивается что EvidenceA нельзя создать вне функции a?
В принципе тоже самое можно сделать и через обычные универсальные типы, но тогда сигнатура функции будет чуть другой:


fn f<A, B, E>(ev: E, a: impl Fn(E) -> A, b: impl Fn(A)
-> B): B



Тут опять из-за параметричности и не копируемости A, E и B тело у функции может быть только одно, а именно: b(a(ev))
источник