мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
haskell [15/09/2018 22:01] – [2.5 Проблемы преобразования типов в выражениях] vlasovhaskell [23/09/2018 19:29] – [3.1 Полезные базовые функции для работы со списками] vlasov
Строка 384: Строка 384:
  
 <note> <note>
-Как показали дальнейшие изыскания, изначальное поведение было обусловлено ещё одной проблемой Haskell, так называемом ограничении мономорфизма:+Как показали дальнейшие изыскания, изначальное поведение было обусловлено ещё одной проблемой Haskell, так называемом //ограничением мономорфизма//:
 [[https://wiki.haskell.org/Monomorphism_restriction|Monomorphism_restriction]]. В современных версиях ghci это ограничение отключено, но при желании его можно вновь включить и потестировать указанные выше странности: [[https://wiki.haskell.org/Monomorphism_restriction|Monomorphism_restriction]]. В современных версиях ghci это ограничение отключено, но при желании его можно вновь включить и потестировать указанные выше странности:
 <code> <code>
-Some flags have not been recognized: -X 
 Prelude> :set -XMonomorphismRestriction Prelude> :set -XMonomorphismRestriction
 Prelude> let x = 2 Prelude> let x = 2
Строка 400: Строка 399:
  
  
-Вот версия более простого и понятного примера:+Вот версия более простого и понятного примера, без странностей ограничения мономорфизма:
  
 <code haskell> <code haskell>
Строка 411: Строка 410:
       In an equation for `it': it = x + y       In an equation for `it': it = x + y
 </code> </code>
-В языках типа Си это соответствовало бы объявлению и инициализации переменных типа Int и Double, а потом совместного их использования в одном арифметическом выражении.+В языках типа Си это соответствовало бы объявлению и инициализации переменных типа int и double, а потом совместного их использования в одном арифметическом выражении.
 ==== 2.6 Использование монады состояния==== ==== 2.6 Использование монады состояния====
  
Строка 455: Строка 454:
 (везде ниже ''xs'', ''ys'' и т.п. обозначают список) (везде ниже ''xs'', ''ys'' и т.п. обозначают список)
  
-  * ''xs !! n'' --- получим n-й произвольный элемент списка xs, начиная с нулевого; +  * ''xs !! n'' --- получим n-й произвольный элемент списка ''xs'', начиная с нулевого; 
-  * ''head xs'' --- вернет //первый// элемент списка xs; +  * ''head xs'' --- вернет //первый// элемент списка ''xs''
-  * ''last xs'' --- вернет //последний// элемент списка xs; +  * ''last xs'' --- вернет //последний// элемент списка ''xs''
-  * ''tail xs'' --- вернет список xs без //первого// элемента; +  * ''tail xs'' --- вернет список ''xs'' без //первого// элемента; 
-  * ''init xs'' --- вернет список xs без //последнего// элемента;+  * ''init xs'' --- вернет список ''xs'' без //последнего// элемента;
   * ''reverse xs'' --- вернет обратный список;   * ''reverse xs'' --- вернет обратный список;
-  * ''length xs''  --- вернет длину списка xs;+  * ''length xs''  --- вернет длину списка ''xs'';
  
 ==== 3.2 Добавление к списку === ==== 3.2 Добавление к списку ===