A64m
ну это замена для части юзкейсов мутабельности
A64m
а без ленивости и мутабельности да, можно однонаправленный хип делать, только на таком языке ничего особо не написать
Алексей
Ilya
Вопрос понятий
надо переписать эти числа фибоначчи рекурсивно, тогда и будет видна разница
Ilya
(с сохранением эффективности)
Алексей
вот кстати готова идея для нового эзотерического языка программирования
Зигохистоморфный
лямбда это уже отложенные данные
Евгений
Ну без возможности функции писать в ADT это уже не рекурсивные типы данных
A64m
а рекурсия не зацикливает данные
в ферст ордер языке нет, в языке с замыканиями уже будут какие-то данные в хипе соотвествовать функциями и зациклить их можно
Евгений
Зигохистоморфный
можно вообще взять X базис и все будет строиться вокруг всего одной HOF
Зигохистоморфный
Евгений
Зигохистоморфный
Категорно-Комбинаторная машина
a66ath
Мне кажется что ванесса из твитора - трап
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
A64m
не знаю
Dmitry
Ну ладно
Dmitry
Можно ж просто файл в память отмапить в массив, или что там в Go, да посчитать \r. GC тогда вообще не затронется. То же самое в Haskell
A64m
речь то про программу, которая LOC считает, у нее посложнее логика
A64m
но, конечно, и ее можно без особой нагрузки на гц написать
Dmitry
С учётом комментариев?
A64m
https://github.com/boyter/scc
Dmitry
В смысле, loc - только значимые линии кода?
Dmitry
Да уж. Каждый раз, когда смотрю на Go, кажется, что это заговор производителей клавиатур. При таком объёме... ммм... кода клавиатуры надо очень часто менять
Евгений
Я думаю всё проще — просто авторы го пишут в акме
Зигохистоморфный
Danil
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
}
Сколько здесь значащих строк?
Алексей
Denis
Даже в rust лучше сделали чем в го :)
Алексей
то есть в блоке try может быть суммарно просто дофига кода, который об ошибках вообще не парится
Зигохистоморфный
Вот реальный кусок моего кода, который я сейчас пишу
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
}
Сколько здесь значащих строк?
выглядит правдиподобно, я в это верю
Алексей
Danil
Если работаете с сетевым по
Danil
То нужно чекать каждый опасный участок кода
Danil
А не завернуть все в один трай кэтч и положить большой и толстый
Denis
А это уже от задачи зависит
Алексей
если в Go так не нужны исключения, то зачем там panic/recover?
Алексей
шах и мат, голангисты
Евгений
Denis
Иногда надо чекать отдельные операции, а иногда проще перезапустить целиком не разбираясь
Евгений
Danil
К тому же эту конструкцию можно сократить до одной строчки
Danil
Написав функцию
Алексей
Евгений
Danil
func errobr(err){
if err!=nil{
...
return
}
}
Евгений
И чо?
Евгений
Это не поможет
Евгений
Перепиши мой код выше
Алексей
Алексей
более того, насколько я знаю, даже создатели стандартной либы go не смогли без исключений прожить и таки заюзали panic/recover в json библиотеке, даже в доке хвалились этим фактом
Denis
Ну тут либо макросы нужны, либо монадки, но их без сахара читать тяжко :)
Алексей
либо нормальные исключения
Алексей
тоже вариант, вполне нормальный для подобных языков
Евгений
Исключения это убогая разновидность call/cc
Зигохистоморфный
хм, а чего тут про го так оживленно говорят? я думал о нем вообще не надо говорить, а тут в хаскел чатике наспамили про этот го
Алексей
Евгений
call/cc это не монада
Denis
Ну кто то расстроился что его лапшу из return err назвали бесполезным кодом