Nikolay
Это сейчас наверное никакой практической пользы не играет, но вот прост интересно, можно ли так сделать
Nikolay
Работы на F# нет, вот и придумываем задачи сами себе
Анна
как теперь уснуть с этими lazy ячейками в голове
Анна
Nikolay
Ахахаха
Nikolay
Сорян
Nikolay
Оно случайно получилось
Анна
Будут ещё задачки - приходи 😂
Nikolay
Надо Сайму задать этот вопрос
Nikolay
У него мозг сломается
Nikolay
Ещё идея есть
Nikolay
Хотя не, не прокатит
Romɑn
Интригант
Nikolay
Вот ещё идея
Nikolay
Интригант
Я думал мб как-то объявить в .fsi
Nikolay
Или как их там
Nikolay
Но видимо не прокатит
Dr. Friedrich
Вот ещё идея
let rec наверняка работает с массивами, и даст тебе ссылаться изнутри определения массива на него самого.
Romɑn
А что за зигаморфизм в твиттере запостили?
Nikolay
let rec r = Array.init 5 (fun i -> lazy(if i = 0 then 25 else r.[i-1].Force() * 2)) printfn "%d" (r.[4].Force())
Nikolay
Работает
Nikolay
Но кидает warn
Nikolay
warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'.
Romɑn
Сделай rне rec а lazy?
Vasily
Про то , чего хочет @Dolfik , вроде как недавно Ivan говорил. Комонады, вот это вот все
Nikolay
Это называется комонады?
Vasily
Угу
Romɑn
Это называется комонады?
Нет, но решается с помощью
Vasily
В общем там значение описывается контекстом и правилом, как значение вытащить/положить
gsomix
Вчера прошел 4 урок акка буткэмпа.
gsomix
Мне не нравится их код в F# версии. Надо зарефакторить.
gsomix
https://github.com/gsomix/akka-bootcamp-solutions/blob/master/Unit-1/WinTail/FileObserver.fs
gsomix
Ну, что это за непотребство?
Vasily
Действительно
Vasily
Вроде ничто не мешает вынести вотчер в стейт актора
Vasily
Он там не нужен.
А как предполагаешь изменения файлов слушать?
gsomix
Ну, в смысле, FileObserver — это нормальная обертка над вотчером.
gsomix
Просто надо убрать Start и отвзять его от актора.
Vasily
Ну если ты делаешь start сообщением
Vasily
Вопрос
Vasily
Где ты инициализируешь вотчер?
gsomix
FileObserver?
gsomix
Он в акторе. https://github.com/gsomix/akka-bootcamp-solutions/blob/master/Unit-1/WinTail/Actors.fs#L47
Nikolay
значения или размер в функцию передаешь?
Смотри пример выше сделал уже)
Vasily
Точнее, сделать актора, который только ссылку на вотчера хранит
gsomix
Зачем?
Vasily
Чтобы избавиться от мутабельности
Romɑn
Да, акка и мутабельность - грусть
Romɑn
А давайте все же f# обсуждать в f# чате
Vladislav
Вот
let lazyInit = List.fold (fun acc el -> [lazy(if el = 0 then 25 else acc.[el-1].Force() * 2)] @ acc) [] [1..5]
Vladislav
Чёт жестока
вот так вот
Igor
Помните, где-то был сайт с историей f#-чата, есть у кого ссылка на него?
gsomix
http://telegrammy.net/group/Fsharp_chat/page575.htm
gsomix
Не обновлялся с мая.
Анна
В соседнем чате топят за то, что рекурсия в языке не нужна
Bonart
Комбинаторы подавай?
Анна
спор, актуальный годов этак для 80-х что ли
Анна
я их боюсь
Анна
не, типа нечего рекурсию в продакшн, вдруг стековерфлоу
Bonart
На комбинаторах код хреново читается и примерно так же эффективно компилируется.
Bonart
не, типа нечего рекурсию в продакшн, вдруг стековерфлоу
Я думаю авторов таких предложений незачем пускать программировать
Bonart
У них мозг оверфлоу уже
Анна
Romɑn
https://twitter.com/k_cieslak/status/1007355409307504642?s=19
Ayrat
версионирование F# это какая-то дичь
gsomix
C 4.5 будет нормальное.
gsomix
Некоторое время. :)
Ayrat
будет нормальное, говорили они
Vladislav
C 4.5 будет нормальное.
он же с 15.8 студией выйдет, вроде?