Несколько вопросов по Haskell
От: nikov США http://www.linkedin.com/in/nikov
Дата: 11.05.09 16:08
Оценка:
1) Вопрос по выводу типов.
show maxBound


GHCi выдает
"()"


а Hugs — ошибку. Какой вариант правильный?

2) В List.hs, в определении findIndices встречаются токены 0# 1# I# +#. Что они значат?
3) В List.hs, в комментариях к insert написано:

The insert function takes an element and a list and inserts the element into the list at the last position where it is still less than or equal to the next element.


... вставляет элемент в список на последней позиции, где он все еще меньше либо равен следующему элементу.


Здесь "на последней" означает "на самой левой"?
Re: Несколько вопросов по Haskell
От: Курилка Россия http://kirya.narod.ru/
Дата: 11.05.09 17:39
Оценка:
Здравствуйте, nikov, Вы писали:

N>3) В List.hs, в комментариях к insert написано:

N>

N>The insert function takes an element and a list and inserts the element into the list at the last position where it is still less than or equal to the next element.


N>

N>... вставляет элемент в список на последней позиции, где он все еще меньше либо равен следующему элементу.


N>Здесь "на последней" означает "на самой левой"?


Списки вроде обходят с головы к хвосту, если взять традиционное написание их слева направо, то получим "самую левую" позицию, насколько я понимаю.
Или есть какие-то ещё способы интерпретации этих слов?
Re: Несколько вопросов по Haskell
От: Курилка Россия http://kirya.narod.ru/
Дата: 11.05.09 17:46
Оценка: 11 (1) +1
Здравствуйте, nikov, Вы писали:

N>1) Вопрос по выводу типов.

N>
N>show maxBound
N>


N>GHCi выдает

N>
N>"()"
N>


N>а Hugs — ошибку. Какой вариант правильный?


Не знаю как с т.зр. теории, но вариант хагса как-то мне кажется более правильным, ведь если show показывает maxBound для (), то почему просто maxBound не срабатывает? (хотя не понятно, как в него "прицепить" дефолтный тип)
Re: Несколько вопросов по Haskell
От: Буравчик Россия  
Дата: 11.05.09 17:57
Оценка: 11 (1)
Здравствуйте, nikov, Вы писали:

N>show maxBound

N>GHCi выдает "()"
N>а Hugs — ошибку. Какой вариант правильный?

Считаю, что вариант Hugs более правильный, т.к. ghci почему-то автоматически сужает тип до (), а должен сказать о неопределенности.

N>2) В List.hs, в определении findIndices встречаются токены 0# 1# I# +#. Что они значат?


Не знаю

N>3) В List.hs, в комментариях к insert написано:

N>... вставляет элемент в список на последней позиции, где он все еще меньше либо равен следующему элементу.
N>Здесь "на последней" означает "на самой левой"?

Да, на самой левой. Предполагается, наверное, что список будет отсортированным, тогда данный вопрос не имеет смысла.
Если же список будет неотсортирован, то будет выбран первый (слева направо) элемент, больший или равный вставляемому, и перед ним будет вставлен новый элемент.
insert 3 [1,4,6,4] = [1,3,4,6,4], а не [1,4,6,3,4]
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
Best regards, Буравчик
Re: Несколько вопросов по Haskell
От: geniepro http://geniepro.livejournal.com/
Дата: 12.05.09 04:46
Оценка: 11 (1) +1
Здравствуйте, nikov, Вы писали:

N>2) В List.hs, в определении findIndices встречаются токены 0# 1# I# +#. Что они значат?


# на конце означает, что это низкоуровневые константы, типы, конструкторы и функции. Поверх них уже определяются обычные.
Re: Несколько вопросов по Haskell
От: VoidEx  
Дата: 21.05.09 00:27
Оценка:
Здравствуйте, nikov, Вы писали:

N>1) Вопрос по выводу типов.

N>
N>show maxBound
N>


N>GHCi выдает

N>
N>"()"
N>


N>а Hugs — ошибку. Какой вариант правильный?


Правильный вариант Hugs.
В Haskell 98 report (4.3.4) описан defaulting, но он работает только для numeric (Num) типов, так как там неоднозначности распространены.
GHCi эту систему расширяет, допуская Eq, Ord и Show, а так же по умолчанию пытаясь подставить первым делом именно ().
Описано здесь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.