?

Log in

No account? Create an account
tech

Хаскелл и ассоциативный массив

В изучении Хаскела движусь очень потихоньку :) Вот дочитал до кортежей. Кортежи, это такие списки, где элементы имеют разный тип.

И что-то загрустил от фразы Haskell's type system makes it tricky to write a generalised “get the second element from any tuple, no matter how wide” function.

Как бы я уже привык что могу намешать в ассоциативный массив чего угодно любой длины и иметь доступ хоть по индексу, хоть по ключу. Ну да наверное просто парадигма еще не переключилась :)

UPD. И переменных нет. А то, что есть менять нельзя.

x=10
x=11

и ошибка Multiple declarations

новая вселенная, здравствуй :)

Comments

А кортеж — это не массив. Если приходилось писать на Си, то думай о нём как о "структуре" с нумероваными (а не именоваными) полями. При этом сохраняется правило типизации (ну насколько Си, в принципе, можно считать типизированым)
Ну Си для меня, как родной. Правда я давно с ним не виделся.

но все же, если мне надо выбрать второй элемент из произвольной структуры на чистом Си, я все же наверное могу это сделать хотя бы грубо через указатель и sizeof(type) первого элемента структуры. а тут tricky :)

Вообще-то мне пока нравится процесс изучения. Книжка очень приятная, и изучать приятно. В предисловии обещали

As a new Haskell programmer, you'll inevitably start out writing quite a bit of code by hand for which you could have used a library function or programming technique, had you just known of its existence. We've packed this book with information to help you to come up to speed as quickly as possible.

Of course, there will always be a few bumps along the road. If you start out anticipating an occasional surprise or difficulty along with the fun stuff, you will have the best experience. Any rough patches you might hit won't last long.
ну так фокус в том, что "generalized". На Си ты тоже generalized не напишешь — нужно иметь знание о структуре, чтобы написать смещение. То же и тут. Нужно знать тип кортежа чтобы описать методику доступа к элементам
угу, ты прав.
Ну, в HList тоже можно намешать всё что угодно, и иметь доступ хоть по индексу, хоть по типу (!). Правда, этим почти никто не пользуется (ибо не очень-то надо).