Size: a a a

Сrystal Lang — русскоговорящее сообщество

2021 March 24

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Anton Korotkikh
а причём здесь это? речь про поддержку функций высшего порядка
чтобы ими спокойно оперировать как возращемыми занчениями так и аргументами, при этом сравнительно легко описывать получившиеся сигнатуры.
Эти функции - объекты-инстансы класса Proc(**args) - что не так-то с ними?
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
def tui () : Proc(Nil)
       -> () { puts "hello" }
end
источник

G

GNU/Плюшка in Сrystal Lang — русскоговорящее сообщество
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Ничего себе, я вообще не понимаю, что делает эта конструкция:
partial = ->sum(Int32, Int32).partial(3)
источник

AK

Anton Korotkikh in Сrystal Lang — русскоговорящее сообщество
это скажем так пример, про функциональность. а вопрос был про описание сигнатур (т.е. читаемость, чтобы понимать что код делает, например и чего от него ждать), и тут его нет.
partialSum(x int) func(int) int

где описано, что функция возвращает функцию которая принимает инт и возвщает инт?
источник

G

GNU/Плюшка in Сrystal Lang — русскоговорящее сообщество
а зачем мне описывать, что возвращает метод из стандартной библиотеке? это описано в доках.
источник

AK

Anton Korotkikh in Сrystal Lang — русскоговорящее сообщество
GNU/Плюшка
а зачем мне описывать, что возвращает метод из стандартной библиотеке? это описано в доках.
вопрос не про стд.либу, а про то как это описать на кристале и насколько это синтаксис хорош. утверждение про то, чт оу кристала он понятный и классный - очень спорное имхо
источник

G

GNU/Плюшка in Сrystal Lang — русскоговорящее сообщество
ну, можно сделать def partial_sum(x) : Int -> Int
источник

G

GNU/Плюшка in Сrystal Lang — русскоговорящее сообщество
что такое Int -> Int становится очевидным после 15 минут чтения документации
источник

S

Sasha in Сrystal Lang — русскоговорящее сообщество
GNU/Плюшка
что такое Int -> Int становится очевидным после 15 минут чтения документации
welcome to the crystal club
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Никогда такой штукой не пользовался, но даже там описан синтаксис другой: в примере именно от замыкания берётся partial...
https://crystal-lang.org/api/1.0.0/Proc.html#partial(*args:*U)forallU-instance-method
источник

G

GNU/Плюшка in Сrystal Lang — русскоговорящее сообщество
можно по приколу вообще все типы явно указывать )
источник

AK

Anton Korotkikh in Сrystal Lang — русскоговорящее сообщество
Andrey Konovalov
Никогда такой штукой не пользовался, но даже там описан синтаксис другой: в примере именно от замыкания берётся partial...
https://crystal-lang.org/api/1.0.0/Proc.html#partial(*args:*U)forallU-instance-method
не наброса ради, но со стороны это всё выглядит как-то неконсистетно, вроде бы большая часть языка без фигурных скобок, а потом хопача и они появляются ->(x : Int32, y : Int32) { x + y }
блоки эти, там уже аргумент в || заключен становится {  |x| x + 1 }

синтаксис го гораздо проще выходит. там есть базовая штука func и она везде, замыкания, опередления типа итд
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Anton Korotkikh
не наброса ради, но со стороны это всё выглядит как-то неконсистетно, вроде бы большая часть языка без фигурных скобок, а потом хопача и они появляются ->(x : Int32, y : Int32) { x + y }
блоки эти, там уже аргумент в || заключен становится {  |x| x + 1 }

синтаксис го гораздо проще выходит. там есть базовая штука func и она везде, замыкания, опередления типа итд
Так {} - это сокращение для do ... end
источник

G

GNU/Плюшка in Сrystal Lang — русскоговорящее сообщество
Anton Korotkikh
не наброса ради, но со стороны это всё выглядит как-то неконсистетно, вроде бы большая часть языка без фигурных скобок, а потом хопача и они появляются ->(x : Int32, y : Int32) { x + y }
блоки эти, там уже аргумент в || заключен становится {  |x| x + 1 }

синтаксис го гораздо проще выходит. там есть базовая штука func и она везде, замыкания, опередления типа итд
можно do/end вместо фигурных скобок использовать
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Если мне склероз не изменяет, {} - это вообще макрос в компиляторе
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
То есть на самом деле исходник преобразуется в do .. end
источник

AK

Anton Korotkikh in Сrystal Lang — русскоговорящее сообщество
Andrey Konovalov
Так {} - это сокращение для do ... end
это уже детали реализация. я c позиции чисто UX, скажем так, как синтаксис для конечного пользователя или человека который напрмиер решил глянуть на новый язык. гошка, имхо, проще и логичнее.
источник

AP

Alexander Popov in Сrystal Lang — русскоговорящее сообщество
Anton Korotkikh
это уже детали реализация. я c позиции чисто UX, скажем так, как синтаксис для конечного пользователя или человека который напрмиер решил глянуть на новый язык. гошка, имхо, проще и логичнее.
Это взято из Ruby. Он вроде считается самым читаемым и понятным языком. Не в вашем вкусе — ладно, нет проблем. Мне вот camelCase не нравится, например.
источник

AK

Andrey Konovalov in Сrystal Lang — русскоговорящее сообщество
Anton Korotkikh
это уже детали реализация. я c позиции чисто UX, скажем так, как синтаксис для конечного пользователя или человека который напрмиер решил глянуть на новый язык. гошка, имхо, проще и логичнее.
В Go описания "методов" на типах данных выглядят жутковато, например, врагу бы такого не пожелал
источник