LINUX.ORG.RU
ФорумTalks

Просветление, дзен, Go

 ,


0

2

Мне обьяснили почему в Go мапа описывается вот так

m = make(map[string]int)

вместо

m = make(map[string, int])

Смотрим внимательно

m["hello"] = 10

Кто тоже считает что это весьма неочевидно, хотя вроде должно быть?

★★★★★

Последнее исправление: vertexua (всего исправлений: 4)

Ответ на: комментарий от PolarFox

Если ты не заметил, то тут есть тип, и в нем два параметра. Каждый из которых описано синтаксически по разному

vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua

Ты ещё спроси почему у функций возвращаемый тип описывается за скобками, а не в них. А в хаскеле пишут int → int → int для функции двух интов, возвращающей третий.

PolarFox ★★★★★
()

Вот бы в IDE, кроме подсветки кода и размера оступов, ещё и синтаксис можно было использовать свой.

E ★★★
()

А я жабу наркоманством считал. Приношу свои извинения. На фоне этого чуда жаба смотрится не так уж страшно.

der_looser ★★
()
Ответ на: комментарий от bluesman

Кен Томпсон не знает что рулит только С )

Хотя я тоже не фанат Go

vertexua ★★★★★
() автор топика
Ответ на: комментарий от vertexua

когда я спрашивал? это кто-то другой был, наверное

Harald ★★★★★
()
Ответ на: комментарий от PolarFox

А в хаскеле пишут int → int → int для функции двух интов, возвращающей третий.

Э... нет. Для функции двух интов, возвращающей третий, пишут (int, int) -> int. А вот для функции от одного инта, возвращающей функцию из интов в инты, пишут int -> int -> int (что расшифровывается как int -> (int -> int)).

Miguel ★★★★★
()

Напоминает объявление указателей в Си. K&R:

Новое здесь только объявление указателя ip:
int *ip;
Форма этого объявления задумывалась как мнемоническая — специально для 
облегчения его понимания и использования. Объявление сообщает, что выражение * ip имеет
тип int. Синтаксис объявления переменной копирует синтаксис выражений, в которых
эта переменная может появляться.

Weres ★★★
()
Ответ на: комментарий от Miguel
Prelude> let f x y = x + y
Prelude> :type f
f :: Num a => a -> a -> a
Prelude> f 5 6
11

Выглядит как функция от двух переменных и работает как функция от двух переменных.

Да, если буквоедствовать, то тут каррирование и всё такое. Но если буквоедствовать по поводу го, в нём нет параметрических типов и объявление массивов, слайсов, мап и каналов — специальная синтаксическая конструкция. Которая могла бы выглядеть вообще как угодно.

PolarFox ★★★★★
()

А что в третьем куске кода неочевидно? Вроде во многих языках так.

vurdalak ★★★★★
()
Ответ на: комментарий от PolarFox

Выглядит как функция от двух переменных и работает как функция от двух переменных.

Не-а.

let f (x, y) = x + y

А если буквоедствовать, то в хаскеле вообще нет функций от двух переменных.

Miguel ★★★★★
()
Ответ на: комментарий от PolarFox

В классическом понимании функции от n (n > 1) переменных — это как раз функции от (одного) «тупля», т. е. они принимают кортежи из произведения n множеств, составляющих домен.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

И вообще, то, что функция что-то принимает и возвращает, придумали для удобства. На самом деле n-арная функция — это всего лишь множество (n+1)-элементных кортежей.

theNamelessOne ★★★★★
()
Ответ на: комментарий от nerdogeek

Не, не умеет. Во всяком случае, пока. Ни многомерных массивов, ни многомерных карт.

proud_anon ★★★★★
()

после слов «просветление» и «дзен» слово Go воспринимается как название игры.

Lincor
()
Ответ на: комментарий от vladimir-vg

Go божественный язык

Древние египтяне почитали навозных жуков.

tailgunner ★★★★★
()

это(кривость синтаксиса ассоциативных массивов в Golang) известный косяк в Golang - лично мне он стал заметен когда при перескоке версий они меняли синтаксис отображений из не вполне укореного в совсем не однородный.

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

в остальном Golang вполне понятен.

qulinxao ★★☆
()

Зачем нужно это Г, если есть джава, или раст.

reality_hacker
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.