Size: a a a

2020 April 23

DS

Doge Shibu in rust_offtopic
polunin.ai
да-да, и программа ничего не выводит, и в программу ничего не вводят
Тут надо разделять то, что происходит на момент работы с кодом и в момент выполнения программы.

Программа с IO - на хаскеле, это считай работа с чистым eDSL, которым IO и является. Ты можешь спокойно куда и как угодно передавать IO, т.к. это чистые значения, которые по сути являются описаниями того, что нужно будет программе сделать в момент исполнения.
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Тут надо разделять то, что происходит на момент работы с кодом и в момент выполнения программы.

Программа с IO - на хаскеле, это считай работа с чистым eDSL, которым IO и является. Ты можешь спокойно куда и как угодно передавать IO, т.к. это чистые значения, которые по сути являются описаниями того, что нужно будет программе сделать в момент исполнения.
во время выполнения грязь выполняется, и ты рассчитываешь это до компиляции
источник

p

polunin.ai in rust_offtopic
IO хорошо как эффект, но говорить что функция ссылочно прозрачна когда она делает ввод-вывод это самообман
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
во время выполнения грязь выполняется, и ты рассчитываешь это до компиляции
Да, примерно так.

Т.е. твоя программа на хаскеле - это, считай, программа, которая конструирует программу для рантайма.
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Да, примерно так.

Т.е. твоя программа на хаскеле - это, считай, программа, которая конструирует программу для рантайма.
один фиг, мой коде делает ввод-вывод
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
IO хорошо как эффект, но говорить что функция ссылочно прозрачна когда она делает ввод-вывод это самообман
Но она буквально по определению будет ссылочнопрозрачной
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
один фиг, мой коде делает ввод-вывод
Вопрос в том, что с IO - у тебя все функции будут ссылочно прозрачными, что упрощает рефакторинг на порядки
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Вопрос в том, что с IO - у тебя все функции будут ссылочно прозрачными, что упрощает рефакторинг на порядки
нет
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
во время выполнения грязь выполняется, и ты рассчитываешь это до компиляции
я уже показывал пример:

main = do
   let hello = print "Hello"
   print "World"
источник

AZ

Alex Zhukovsky in rust_offtopic
какой вывод будет на экране?
источник

p

polunin.ai in rust_offtopic
World
источник

AZ

Alex Zhukovsky in rust_offtopic
почему?
источник

DS

Doge Shibu in rust_offtopic
Возьми определение ссылочной прозрачности, примени к функции возвращающей IO - получишь, что она ссылочно прозрачна. (Если без всяких unsafePerformIO)
источник

p

polunin.ai in rust_offtopic
ты не вызвал первый принт а просто записал в переменную его
источник

AZ

Alex Zhukovsky in rust_offtopic
polunin.ai
ты не вызвал первый принт а просто записал в переменную его
это и значит что значение ссылочно прозрачное
источник

AZ

Alex Zhukovsky in rust_offtopic
непрозрачное значение записать в переменную нельзя
источник

p

polunin.ai in rust_offtopic
Doge Shibu
Возьми определение ссылочной прозрачности, примени к функции возвращающей IO - получишь, что она ссылочно прозрачна. (Если без всяких unsafePerformIO)
херня, функция все равно делает ио а оно по определению непрозрачно
источник

p

polunin.ai in rust_offtopic
а то что кажется что она что-то возвращает это самообман
источник

DS

Doge Shibu in rust_offtopic
polunin.ai
херня, функция все равно делает ио а оно по определению непрозрачно
Ты можешь взять и воспользоваться определнием?
источник

DS

Doge Shibu in rust_offtopic
Тупо формально посмотреть удовлетворяет ли ему функция возвращающая IO
источник