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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
haskell [15/09/2018 15:02] – [2.6 Использование монады состояния] vlasovhaskell [23/09/2018 19:19] – [3.1 Полезные базовые функции для работы со списками] vlasov
Строка 383: Строка 383:
 </note> </note>
  
-Вот версия более простого и понятного примера:+<note> 
 +Как показали дальнейшие изыскания, изначальное поведение было обусловлено ещё одной проблемой Haskell, так называемом //ограничением мономорфизма//: 
 +[[https://wiki.haskell.org/Monomorphism_restriction|Monomorphism_restriction]]. В современных версиях ghci это ограничение отключено, но при желании его можно вновь включить и потестировать указанные выше странности: 
 +<code> 
 +Prelude> :set -XMonomorphismRestriction 
 +Prelude> let x = 2 
 +Prelude> x + 2.0 
 + 
 +<interactive>:5:5: error: 
 +    * No instance for (Fractional Integer) 
 +        arising from the literal `2.0' 
 +... 
 +</code> 
 +</note> 
 + 
 + 
 +Вот версия более простого и понятного примера, без странностей ограничения мономорфизма:
  
 <code haskell> <code haskell>
Строка 394: Строка 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 Использование монады состояния====