A64m
ну это замена для части юзкейсов мутабельности
A64m
а без ленивости и мутабельности да, можно однонаправленный хип делать, только на таком языке ничего особо не написать
Ilya
Вопрос понятий
надо переписать эти числа фибоначчи рекурсивно, тогда и будет видна разница
Ilya
(с сохранением эффективности)
Евгений
ну вот в той же пурсе ничего толком нет, но имея lazy list там можно сделать что-то подобное
А без разницы можно ли завязывать узлы для этой задачи. Важно именно существование данных без нормальной формы. Написал data A = Lambda A->A | Unit и всё
Алексей
вот кстати готова идея для нового эзотерического языка программирования
Зигохистоморфный
лямбда это уже отложенные данные
Евгений
Ну без возможности функции писать в ADT это уже не рекурсивные типы данных
A64m
а рекурсия не зацикливает данные
в ферст ордер языке нет, в языке с замыканиями уже будут какие-то данные в хипе соотвествовать функциями и зациклить их можно
Зигохистоморфный
вот кстати готова идея для нового эзотерического языка программирования
нового? SKI ничего кроме базиса нет базис это набор неких лямбд SKI имеет всего одну метаоперацию SKI Тьюринг полный S и K изоморфны неким правилам логики высказываний
Евгений
в ферст ордер языке нет, в языке с замыканиями уже будут какие-то данные в хипе соотвествовать функциями и зациклить их можно
О я понял чего хочу, я хочу тьюринг-полный ЯП, в котором данные это достаточно крутой набор тотальных функции
Зигохистоморфный
можно вообще взять X базис и все будет строиться вокруг всего одной HOF
Евгений
Зигохистоморфный
Категорно-Комбинаторная машина
a66ath
Мне кажется что ванесса из твитора - трап
Зигохистоморфный
Мне кажется что ванесса из твитора - трап
конечно, там все ссылки на лгбт и геев с трансами постоянно
Зигохистоморфный
Там это где?
в ее (его?) твиттере
a66ath
Ясно понятно
Евгений
Зигохистоморфный
ох ман
Евгений
Звучит как неологизм
Зигохистоморфный
Звучит как неологизм
вроде это https://wiki2.org/ru/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0
Dmitry
https://twitter.com/boyter/status/1029943280350314496
А код там где-то рядом есть?
A64m
не знаю
Dmitry
Ну ладно
Евгений
вроде это https://wiki2.org/ru/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B0%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0
Ну учитывая то, что у любого нормального тотального языка нет рабочей категориальной модели, то такое. А если идти дальше и сказать, что всё-таки хочется, что бы в языке был сетценоровский pi-3 reflection, то дважды такое
Dmitry
Можно ж просто файл в память отмапить в массив, или что там в Go, да посчитать \r. GC тогда вообще не затронется. То же самое в Haskell
A64m
речь то про программу, которая LOC считает, у нее посложнее логика
A64m
но, конечно, и ее можно без особой нагрузки на гц написать
Dmitry
С учётом комментариев?
A64m
https://github.com/boyter/scc
Dmitry
В смысле, loc - только значимые линии кода?
Dmitry
Да уж. Каждый раз, когда смотрю на Go, кажется, что это заговор производителей клавиатур. При таком объёме... ммм... кода клавиатуры надо очень часто менять
Евгений
Я думаю всё проще — просто авторы го пишут в акме
Зигохистоморфный
Danil
Точно такой же как и в любом с подобном
Алексей
Danil
Ну да
Danil
Куда легче все трай кэтч блок завернуть
Danil
И забить на ошибки
Евгений
Вот реальный кусок моего кода, который я сейчас пишу conn, err := sonarqube.NewConnectionByToken(sonarURL, sonarToken) if err != nil { return err } searchProject := project if branch != "" { searchProject = fmt.Sprintf("%s:%s", project, branch) } projects, err := conn.ProjectSearch(sonarqube.ProjectSearchRequest{Projects: []string{ searchProject }}) if err != nil { return err } else if len(projects) > 0 { fmt.Printf("project '%s' with branch '%s' already registered\n", project, branch) return nil } _, err = conn.ProjectCreate(sonarqube.ProjectCreateRequest{Name: project, Project: project, Visibility: visibility, Branch: branch}) if err != nil { return err } Сколько здесь значащих строк?
Алексей
Куда легче все трай кэтч блок завернуть
неа, try catch не надо писать повсюду
Denis
Даже в rust лучше сделали чем в го :)
Алексей
то есть в блоке try может быть суммарно просто дофига кода, который об ошибках вообще не парится
Алексей
Даже в rust лучше сделали чем в го :)
везде лучше сделано, чем в го
Danil
Если работаете с сетевым по
Danil
То нужно чекать каждый опасный участок кода
Евгений
Куда легче все трай кэтч блок завернуть
if err != nil { return err } ^^^^ Не похоже на РЕАЛЬНОЕ БЕСПОКОЙСТВО ОБ ОШИБКАХ
Danil
А не завернуть все в один трай кэтч и положить большой и толстый
Denis
А это уже от задачи зависит
Алексей
если в Go так не нужны исключения, то зачем там panic/recover?
Алексей
шах и мат, голангисты
Евгений
А не завернуть все в один трай кэтч и положить большой и толстый
Странная позиция для человека, который защищает язык с GC
Denis
Иногда надо чекать отдельные операции, а иногда проще перезапустить целиком не разбираясь
Danil
К тому же эту конструкцию можно сократить до одной строчки
Danil
Написав функцию
Алексей
А не завернуть все в один трай кэтч и положить большой и толстый
а можно и не заворачивать, а нормально хэндлить ошибки но руками каждую ошибку пробрасывать наверх по стеку - это точно не является нормальным хэндлингом ошибки
Евгений
К тому же эту конструкцию можно сократить до одной строчки
А можно хуйнуть всё в ExceptionT монаду и не парится
Danil
func errobr(err){ if err!=nil{ ... return } }
Евгений
И чо?
Евгений
Это не поможет
Евгений
Перепиши мой код выше
Алексей
func errobr(err){ if err!=nil{ ... return } }
return - это выход из errorbr
Алексей
более того, насколько я знаю, даже создатели стандартной либы go не смогли без исключений прожить и таки заюзали panic/recover в json библиотеке, даже в доке хвалились этим фактом
Denis
Ну тут либо макросы нужны, либо монадки, но их без сахара читать тяжко :)
Алексей
либо нормальные исключения
Алексей
тоже вариант, вполне нормальный для подобных языков
Евгений
Исключения это убогая разновидность call/cc
Зигохистоморфный
хм, а чего тут про го так оживленно говорят? я думал о нем вообще не надо говорить, а тут в хаскел чатике наспамили про этот го
Алексей
Исключения это убогая разновидность call/cc
нормальная разновидность, не все языки ФП, не во всех языках монады будут нормально выглядить
Евгений
call/cc это не монада
Denis
Ну кто то расстроился что его лапшу из return err назвали бесполезным кодом