Описание тега monomorphism-restriction

Ужасное ограничение мономорфизма в Haskell.
1 ответ

Запутанные типы в ghci

Вот мой код: n = [(a,b) | a <- [1..5],b <- [1..5]] calcBmis xs = [bmi | (w, h) <- xs,let bmi = w / h ^ 2] При попытке применить calcBmis в nЯ получаю следующую ошибку: *Charana> calcBmis n <interactive>:220:1: No instance for (Frac…
1 ответ

: спринт для полиморфных значений?

Мне интересно почему :sprint отчеты xs = _ в этом случае: Prelude> xs = map (+1) [1..10] Prelude> length xs 10 Prelude> :sprint xs xs = _ но не в этом случае: Prelude> xs = map (+1) [1..10] :: [Int] Prelude> length xs 10 Prelude> :…
03 фев '14 в 01:41
2 ответа

Длина счета Хаскелла с использованием ошибки типа броска фолдера

Попытка реализовать подсчет списков через функцию foldr lengthList = foldr (\x s -> s + 1) 0 выдает следующую ошибку * Ambiguous type variable `t0' arising from a use of `foldr' prevents the constraint `(Foldable t0)' from being solved. Relevant …
0 ответов

Что делает определение предметом ограничения мономорфизма?

Почему на это определение влияет ограничение мономорфизма? z = \n -> n + 1 и это не так: z n = n + 1
1 ответ

Странный тип функции

У меня есть вопрос новичка о типах в Haskell: иметь такую ​​функцию: f i xs = (sort xs) !! i Как определить функцию f0 xs = f 0 xs без явного использования хз? Просто принимая f0 = f 0 не работает... GHCI показывает мне следующие типы:f :: Ord a =&g…
2 ответа

Влияние ограничения мономорфизма на ограничения класса типов

Этот код ломается, когда объявление типа для baz добавлен: baz (x:y:_) = x == y baz [_] = baz [] baz [] = False Общее объяснение (см. Например, почему я не могу объявить предполагаемый тип?) Состоит в том, что это из-за полиморфной рекурсии. Но это …
1 ответ

'Ссылка' на функции класса типов

Я новичок, и я пытаюсь использовать Hoed для отслеживания оценок Haskell, потому что, возможно, это еще больше поможет моему процессу обучения. Я видел в их примерах код, подобный этому isEven :: Int -> Bool isEven = observe "isEven" isEven' isEv…
14 фев '19 в 15:55
1 ответ

Преобразователи в Хаскеле и ограничение мономорфизма

Я реализовал преобразователи в Haskell следующим образом: {-# LANGUAGE RankNTypes #-} import Prelude hiding (foldr) import Data.Foldable type Reducer b a = a -> b -> b type Transducer a b = forall t. Reducer t b -> Reducer t a class Foldabl…
1 ответ

Когда я могу связать функцию с другим именем?

При работе в интерпретаторе часто удобно привязать функцию к имени, например: ghci> let f = (+1) ghci> f 1 2 Это псевдонимы f к функции (+1), Просто. Однако это не всегда работает. Один пример, который я нашел, который вызывает ошибку, пытаетс…
28 дек '11 в 12:24
1 ответ

GHCI - недоразумение по умолчанию

Я случайно увидел странное поведение во время проверки размера (minBound,maxBound) и "длина в десятичном представлении" различных целочисленных типов. Использование GHCi: Prelude> :{ Prelude| let mi = minBound Prelude| ma = maxBound Prelude| le =…
14 фев '17 в 18:22
1 ответ

Haskell умножить Int и вещественное число

Я имею coefficient :: ??????? coefficient = 1.0 а также val :: Int и я хотел бы сделать result :: ??????? result val coefficient = val * coefficient Какие сигнатуры типов и функции преобразования мне нужно сделать, чтобы это работало? Что я должен д…
1 ответ

Вывод типа Haskell для функторов

В последнее время я играл с Haskell и, в частности, с целой концепцией функторов. Чем больше я погружаюсь в это, тем больше моментов я получаю, и это определенно щекочет мои рецепторы допамина. Проблема, с которой я застрял, заключается в следующем.…
19 авг '15 в 05:24
2 ответа

Конкретный тип вывода с использованием функции uncurry

Я играл с uncurry Я работаю в GHCi, и я нашел то, что совсем не смог получить. Когда я подаю заявку uncurry к (+) функция и связать это с какой-то переменной, как в коде ниже, компилятор выводит его тип, чтобы быть специфичным для Integer: Prelude&g…
15 фев '11 в 01:04
1 ответ

Как обойти проблему с неоднозначностью, когда мономорфное ограничение включено *?

Итак, изучая Haskell, я натолкнулся на страшное мономорфное ограничение, довольно скоро, со следующим (в ghci): Prelude> let f = print.show Prelude> f 5 <interactive>:3:3: No instance for (Num ()) arising from the literal `5' Possible fi…
22 мар '15 в 07:46
2 ответа

NoMonomorphismRestriction помогает сохранить общий доступ?

Я пытался ответить на другой вопрос о полиморфизме против совместного использования, когда наткнулся на это странное поведение. В GHCi, когда я явно определяю полиморфную константу, он не получает никакого совместного использования, что понятно: &gt…
1 ответ

Что такое XNoMonomorphismRestriction?

Эта страница использует $ ghci -XNoMonomorphismRestriction запустить интерпретатор haskell. Что значит XNoMonomorphismRestriction переключиться значит?
01 янв '11 в 18:04
4 ответа

Как напечатать тип полиморфной функции (или значение) в ghci с примененными правилами по умолчанию?

Когда я вхожу :t Команда в GHCi я вижу полиморфный тип: ghci> :t 42 42 :: Num t => t ghci> :t div div :: Integral a => a -> a -> a Но после того, как я на самом деле оцениваю такие функции, я вижу результат правил по умолчанию типа…
0 ответов

Бессмысленная функция в Хаскеле

Как определить это без очков? let argmax m = (fst.(maximumBy (comparing snd)).(zip [0..])) m который работает как ожидалось. Наиболее логичным кажется просто отбросить m как это: let argmax = (fst.(maximumBy (comparing snd)).(zip [0..])) Работает дл…
24 мар '13 в 18:46
3 ответа

Почему 3 и x (которому было присвоено 3) имеют разные предполагаемые типы в Haskell?

Вывод типа в Haskell имеет некоторую кривую обучения (если не сказать больше!). Хороший способ начать обучение с простых примеров. Итак, следующее - это "привет мир" для вывода типов. Рассмотрим следующий пример: Prelude> :t 3 3 :: (Num t) => …
1 ответ

Что такое ограничение мономорфизма?

Я озадачен тем, как компилятор haskell иногда выводит типы, которые менее полиморфны, чем я ожидал, например, при использовании бессмысленных определений. Похоже, проблема заключается в "ограничении мономорфизма", которое включено по умолчанию в бол…