Size: a a a

2020 September 13

K

Kir in ФП
LevT
Окей, нет такой вещи как null
Но в ленивом хаскеле есть undefined - проблемы с которым чота-типа "изоморфны" проблемам с null (там где тот есть)

Это так на мой непросвещённый взгляд,
прошу разубедить
undefined - это "уронить рантайм, если дойдёт до вычисления значения"

Технически, оно выбрасывает UserError, который можно поймать.

Разница с null в том, что c null можно сравнивать, а с undefined - нет.
источник

IK

Ilya Kos in ФП
Проблему с null возможно поймать, проблему с undefined если и возможно, то очень сложно
источник

IK

Ilya Kos in ФП
Kir
undefined - это "уронить рантайм, если дойдёт до вычисления значения"

Технически, оно выбрасывает UserError, который можно поймать.

Разница с null в том, что c null можно сравнивать, а с undefined - нет.
Да, null — нормально значение

undefined — вообще отсутствие значения
источник

K

Kir in ФП
x <- (case undefined of True -> return 1; _ -> return 2) `catch` \(e :: SomeException) -> do print e; return 3

x будет 3
источник

IK

Ilya Kos in ФП
LevT
Окей, нет такой вещи как null
Но в ленивом хаскеле есть undefined - проблемы с которым чота-типа "изоморфны" проблемам с null (там где тот есть)

Это так на мой непросвещённый взгляд,
прошу разубедить
Есть такое понятие как bottom

undefined и бесконечная рекурсия это оба bottom. С точки зрения чистого кода они не различимы.
источник

IK

Ilya Kos in ФП
В Haskell может быть бесконечная рекурсия типа Int
источник

IK

Ilya Kos in ФП
В строгих языках не может
источник

IK

Ilya Kos in ФП
И ещё есть различие что если функция использует bottom, то ее результат сам становится bottom

С null так чаще всего не работает
источник

IK

Ilya Kos in ФП
И на практике случайно (ошибка разработчика) получить bottom в Haskell сильно сложнее, чем случайно получить null в Java
источник

K

Kir in ФП
Ilya Kos
И ещё есть различие что если функция использует bottom, то ее результат сам становится bottom

С null так чаще всего не работает
> если функция использует bottom, то ее результат сам становится bottom

Вот не факт. К сваливанию в bottom ведёт только попытка вычислить bottom - то есть сделать pattern-match, передать как strict-аргумент или скормить примитивной функции.
источник

IK

Ilya Kos in ФП
Kir
> если функция использует bottom, то ее результат сам становится bottom

Вот не факт. К сваливанию в bottom ведёт только попытка вычислить bottom - то есть сделать pattern-match, передать как strict-аргумент или скормить примитивной функции.
Ну я поэтому и сказал «использует», а не «принимает»
источник

K

Kir in ФП
А
источник

IK

Ilya Kos in ФП
Если принять, но не посмотреть значение, то оно вообще ни на что влиять не может
источник

IK

Ilya Kos in ФП
Ilya Kos
И на практике случайно (ошибка разработчика) получить bottom в Haskell сильно сложнее, чем случайно получить null в Java
Поэтому по моему субъективному мнению, на практике в Haskell проблема с bottom не стоит так, как она стоит с null в какой-нибудь Java
источник

ЗП

Зигохистоморфный Пре... in ФП
void 0
источник
2020 September 14

IK

Ilya Kos in ФП
?
источник
2020 September 16

L

LevT in ФП
Ахтунг
 SJW/BLM/феминизм учит теоркату
https://youtu.be/ho7oagHeqNc?t=1620
источник

L

LevT in ФП
Это я ещё на дату не посмотрел.. годы идут, партактив плодится и размножается
источник

L

LevT in ФП
Ну вот окружения хаскелиста и дотнетчика  -  
  явно, разные наследники наиболее общего рантайма (ОС)

Но что если 1% нуждается в обоих стеках?  
Поскольку экосистемы абсолютно разные, возможно
множественное коммутативное наследование (порядок не важен)

Интересна прежде всего формализация этой ситуации, когда такое возможно

В противоположной (некоммутативной) ситуации
выбор порядка наследования сразу же делает результат негодным для класса проектов.
И вот опять, что это за класс? Нужны ресёрч и формализация

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

Посмотрел я 1/3 Милевского, вроде как зашло наконец.
Останавливаться не планирую

Выходит, интересна категория, где стрелки - специализации окружения.

А "правильные" билды специализации окружения являются натур. трансформациями.
В том смысле, что если в неправильно специализированном окружении что-то билдится, это всего лишь везуха
источник

L

LevT in ФП
В последние годы пошли пейперы по генеративным эффектам, пытаются в подобной везухе выделить воспроизводимый конструктив и обезвредить хаос
источник