Size: a a a

F# Flood: кружок пассивно агресивных

2020 April 17

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
Doge Shibu
Поэтому все заявления дегуза надо не забыть через эту призму рассматривать
Безусловно. Но доля истины в его словах тоже есть.

Если чо я и зио считаю оверинжинирингом, так же как он считает ТФ
источник

DS

Doge Shibu in F# Flood: кружок пассивно агресивных
Ayrat Hudaygulov
Безусловно. Но доля истины в его словах тоже есть.

Если чо я и зио считаю оверинжинирингом, так же как он считает ТФ
TF в скаловском стиле смотрится оверинжиниронгом - потому что в какой-то степени он им и является. Это взяли технику для написания расширяемых eDSL (и она буквально идеальная, если её так использовать) и зафигачили в качестве системы эффектов, а-ля напишем eDSL для эффектов и будем ей пользоваться.

Как и любая доморошенная система эффектов, смотрится оверинжинирингом, проблема лишь в том, что ничего лучше и одновременно уже рабочего пока не придумали в плане контроля эффектов
источник

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
Doge Shibu
TF в скаловском стиле смотрится оверинжиниронгом - потому что в какой-то степени он им и является. Это взяли технику для написания расширяемых eDSL (и она буквально идеальная, если её так использовать) и зафигачили в качестве системы эффектов, а-ля напишем eDSL для эффектов и будем ей пользоваться.

Как и любая доморошенная система эффектов, смотрится оверинжинирингом, проблема лишь в том, что ничего лучше и одновременно уже рабочего пока не придумали в плане контроля эффектов
Как он правильно заметил, эффекты все равно не проконтролируешь в языке с сайд эффектами, главное код ревью и дисциплина
источник

DS

Doge Shibu in F# Flood: кружок пассивно агресивных
Ayrat Hudaygulov
Как он правильно заметил, эффекты все равно не проконтролируешь в языке с сайд эффектами, главное код ревью и дисциплина
Да, это такая "игра в чистоту", которая всё равно дает свои плюсы. И с такой системой эффектов поддерживать её проще, чем без неё.
источник

DS

Doge Shibu in F# Flood: кружок пассивно агресивных
То есть даже тот же хаскель - это точно такая же "игра в чистоту" (привет unsafePerformIO, inlinePerformIO и accursedUnutterablePerformIO, как и какой-нибудь раст "игра в memory-safety"
источник

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
Doge Shibu
То есть даже тот же хаскель - это точно такая же "игра в чистоту" (привет unsafePerformIO, inlinePerformIO и accursedUnutterablePerformIO, как и какой-нибудь раст "игра в memory-safety"
Не совсем. В хаскеле и расте надо явно ансейф писать чтобы начать делать дичь.
В скале можно посреди любой чистой функции воткнуть вывод в консоль и компилятор скушает без всяких проблем.

Мне-то норм, я не люблю церемонии вокруг банального IO, но те кто пытаются юзать эту монаду в скале выглядят странно
источник

DS

Doge Shibu in F# Flood: кружок пассивно агресивных
Ayrat Hudaygulov
Не совсем. В хаскеле и расте надо явно ансейф писать чтобы начать делать дичь.
В скале можно посреди любой чистой функции воткнуть вывод в консоль и компилятор скушает без всяких проблем.

Мне-то норм, я не люблю церемонии вокруг банального IO, но те кто пытаются юзать эту монаду в скале выглядят странно
Ну разницы между println("asdasd") и unsafePerformIO $ putStrLn "asdasd" не очень много.
источник

DS

Doge Shibu in F# Flood: кружок пассивно агресивных
Точно так же и в расте с ансейфом.
источник

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
Doge Shibu
Ну разницы между println("asdasd") и unsafePerformIO $ putStrLn "asdasd" не очень много.
На второе очень просто поставить хук на слово unsafe в CI )
источник

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
На скалу не получится
источник

DS

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

И что я вижу в одной библиотеке по середине её бизнес логики:
pub unsafe fn as_mut<T>(reference: &T) -> &mut T {
   let const_ptr = reference as *const T;
   let mut_ptr = const_ptr as *mut T;
   &mut *mut_ptr
}


Которой автор замечательным образом достаёт из Arc ссылку и мутирует её как хочет сквозь потоки.
источник

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
Но тут явно написано - ансейф!
источник

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
Так что никаких вопросов
источник

AH

Ayrat Hudaygulov in F# Flood: кружок пассивно агресивных
Раст хотя бы какие-то гарантии в сейф режиме имеет как компилятор.
источник

DS

Doge Shibu in F# Flood: кружок пассивно агресивных
Ayrat Hudaygulov
Но тут явно написано - ансейф!
Да, но ничто не мешает с эту красоту вызывать откуда угодно, обернул в unsafe { ... } и погнали.

То есть хаскель - это условно раст в мире чистого ФП, а скала - это кресты.
источник

DS

Doge Shibu in F# Flood: кружок пассивно агресивных
В обоих можно всё, разница лишь в том насколько тебе будет мешаться экосистема и сам язык.

(Хотя хаскелю от хаков с IO может сильно поплохеть, потому что оптимизатор и рантайм ожидают неких гарантий)
источник

А

Артёмка ;) in F# Flood: кружок пассивно агресивных
Кто читал всякие type theory и lambda calculus - можете ли вы сказать что время было не зря потрачено? Или лучше бы вы чем-то другим занялись? Ну, там, допустим что то практичное выучить или там компьютер саенс.
источник

А

Артёмка ;) in F# Flood: кружок пассивно агресивных
Сомневаюсь что есть такие люди которые прочли и нашли применение в жизни (кроме как торговли лицом ) или я ошибеюсь?
источник

VP

Vasiliy Pereverzev in F# Flood: кружок пассивно агресивных
@jowney слушай, а тебе в целом вообще прогать нравится?
источник

А

Артёмка ;) in F# Flood: кружок пассивно агресивных
Vasiliy Pereverzev
@jowney слушай, а тебе в целом вообще прогать нравится?
Да
источник