A64m
чем проще язык, тем больше сложного кода надо писать и более заумные энкодинги нужных вещей, которых в простом языке просто нет костылить
Nikita
https://www.youtube.com/watch?v=rFejpH_tAHM
Nikita
как раз tlk есть про это
Евгений
Ппц пайк на задорнова похож
A64m
A64m
Евгений
По моему наличие замыканий важнее типизированности
Nikita
Nikita
можно все вывесте к одному function call
Nikita
Ну сделать функцию that takes an interface and does sorting on it
Nikita
Почему нельзя
Nikita
Все turing complete,разве нет?
Anonymous
вот так же на го с дженериками пишут
https://twitter.com/yogthos/status/883058510275149826
A64m
Aragaer
на си можно все инты кастить друг к другу
Cheese
можно, только если выкинуть типы
A64m
а что на Го нельзя?
Aragaer
а для того, что не кастится, приходится делать то же, что и в го - реализовывать функции сравнения для всех нужных типов
分解物質
Aragaer
на го нет - нет неявного приведения между целыми типами, только явное
Anonymous
A64m
ну явное то есть
A64m
этого достаточно
Nikita
нет неявного приведения между целыми типами, только явное
Nikita
что значет не явное
Aragaer
ну просто вот по этой причине и получается, что для сравнения двух интов32 нужна одна функция, а для сравнения двух интов16 другая
A64m
в случае квиксорта это не так страшно
Aragaer
func cmp(x, y int64) {
}
var a, b int32
cmp(a, b) // ошибка
Cheese
в обобщённую функцию сортировки инт32 можно передать функцию сравнения инт16, и всё разъедется
Aragaer
ну функции сортировки по идее все равно должно быть, она может с аргументами оперировать как interface{}
A64m
ну т.е. без дженериков раньше куча языков была, вообще мейнстрим был именно без дженериков, и писали, сейчас без HKT пишут. Это все мучительно, конечно, но программисты с самого начала учатся любить страдания, другие в программировании не выживают
Aragaer
а вот функция сравнения должна работать именно с тем, что в в контейнере лежит
Cheese
A64m
Aragaer
я вот не помню, есть ли в го тип, в который бы можно было присвоить тип. Тогда можно было бы вместо дженериков использовать структуры контейнер+тип. Но неудобно.
Aragaer
ну так а в си так и живут - там в квиксорте void *
Aragaer
который и есть тот же interface{}
Cheese
Aragaer
потому что в хаскелле у контейнера есть указание на тип содержимого. А в го нету
Cheese
Dmitry
а вот это было обидно
Aragaer
да наверно. Но мне нравится ковыряться руками во всякой подобной ерунде 8)
Cheese
ну, в массе. отдельные извращенцы всегда найдутся
Nikita
А есть что то типа interface{} в Haskell?
A64m
A64m
Cheese
Cheese
а для чего?
мы, например, вынуждены использовать С для совместимости и переносимости, но генерим его из Хаскеля
分解物質
A64m
кто-то конечно генерит си (и всегда так было), но он конечно для написания руками, а не генерирования. То, что он плохо пригоден для написания руками - это не довод, тогда хорошо языки делать и не умели, да и для генерирования он плохо пригоден
Aragaer
да, должен оговориться, мой опыт го это чуть-чуть несколько лет назад и чуть-чуть побольше в этом году
Cheese
Aragaer
си хорошо пригоден для получения такого машинного кода, какой требуется
A64m
и сейчас, думаю, на нем руками пишут намного больше, чем генерируют
A64m
Aragaer
ну когда я смотрю на сишный код, то (в контексте эмбеддед) я более-менее понимаю, что при этом происходит в кишках у компьютера
Cheese
Aragaer
а когда смотрю допустим на питоновский - не настолько прозрачно
A64m
Nikita
А правда что если реально выучить Haskell
Nikita
То писать на другом отдодает желание
Nikita
ну или вообще functional paradigm
Cheese
A64m
То писать на другом отдодает желание
так часто бывает, но тут скорее, я думаю, не от того что выучил хаскель желание пропадает, а хаскель учат потому что измучены другими до невозможности уже
A64m
вот я и до того как хаскель изучил почти все ЯП ненавидел
Nikita
Haskell все равно больше academic язык
Nikita
а Go focused on production
A64m
ну вот C++ академический, но это его распространению не помешало
A64m
Nikita
Важен больше даже не язык а ecosystem
A64m
ну с такими представлениями в хаскеле делать нечего, там если язык еще сносный, то про экосистему такого точно не скажешь
Cheese
Кабачок
Ну мне вот идрис нравится, никаких синглтонов, завтипы и даже fmap называется map