Популярные вопросы по тегу HASKELL

Как преобразовать из Float в Int в Haskell

... еобразовать его 2 как int. Однако в этом случае я получаю следующую 1 ошибку компиляции No instance for (Integral Float) arising from a use of `fromIntegral' In the second argument of `($)', namely `fromIntegral x' In the expression: round $ fromIntegral x In an equation for `toInt': toInt x = round $ fromIntegr ...

Как сгенерировать произвольные экземпляры простого типа для быстрой проверки

... я Cell. Насколько я понимаю, мне нужно 4 сделать Cell экземпляром класса типов Arbitrary. Как 3 мне это сделать, например, если я хочу, чтобы 2 ячейка генерировалась со случайными по ...

Недопустимая подпись типа в объявлении экземпляра

... > Player -> Maybe Player identifyWinner ts p = getWinner $ getLeaves ts findPossibleMoves :: Player -> HForest -> [(HStrategy, HForest)] findPossibleMoves p ts = map (\s -> (s,move s ts)) $ getStrategies p ts Ошибка: Illegal type signature ...

Что такое бесплатные монады?

... ьзуют / обсуждают 4 их, не объясняя что они. Итак: что такое 3 свободные монады? (Я бы сказал, что знаком 2 с монадами и ...

Что означает "@" в Haskell?

... знания о Haskell, читая 8 несколько статей, и я наткнулся на одну, в 7 которой используется синтаксис, которого 6 я никогда раньше не видел. Примером может 5 быть: reconstruct node@(Node a b c l r) parent@(Node ...

Реализация foreach для начинающих / учащихся в haskell

... всех результатов 2 r элемента f, примененных ко всем элементам 1 a. foreach :: [a] → f → [r] foreach [] f = [] foreach x:[] f = (f x):[] foreach []:x f = []:(f x) foreach (x:xs) ...

В чем разница между xor и или в Haskell

... кой что: xor :: Bool -> Bool -> Bool xor True True = False xor True False = True xor False True = True xor False Fal ...

Как определить функцию в ghci для нескольких строк?

... otherwise = -n Пока что я пробовал 5 нажимать Enter после первой строки: Prelude> let abs n | n >= 0 = n Prelude> | otherwise = -n <interactive>:1:0: parse error on input `|' Я также 4 пытался использовать коман ...

В чем разница между isAlpha и isLetter?

... кция Data.Char.isAlpha проверяет, является ли 2 символ буквой, но также Data.Char.isLetter. Есть л ...

Поменять местами два элемента в списке по их индексам

... е, если единственное, что я знаю 6 об элементах, - это позиция, в которой они 5 встречаются в списке. Чтобы быть более конкретным, я 4 ищу что-то вроде этого: swapElementsAt :: Int -> Int -> [Int] -> [Int] это буде ...

Найдите самую длинную общую начальную подстроку в наборе строк

... l for (i=0; i < data.length; i++) { ch = data[i].charAt(idx) if (!ch) break if (!memo) memo = ch else if (ch != memo) break } } while (i == data.length && idx < data.length && ++idx) return (data[0] || '').slice(0, idx) } Этот 23 code is available in this Gist вместе с аналогичным решением на Ruby. Вы 22 мо ...

Почему в Haskell есть «данные» и «новый тип»?

... положим, что 6 Haskell знал бы только определения data, а не 5 newtype: не мог ли компилятор сам выяснить, подчиняется 4 ли данное определение данных этим ограничениям, и 3 автоматически обрабатывать его более эффективно? Я ...

Где я могу прочитать об операторе haskell "->"?

... просу «стрелка haskell», «функция 5 haskell» или «функция класса haskell», я 4 сталкиваюсь с очевидными проблемами получения 3 результатов для Control.Arrow или руководств по классам 2 простого типа. Как называется -> и где я могу 1 узнать о нем подр ...

Умножение значения на две монады «Может быть»?

... ] Я также 7 попытался изменить объявление типа на приведенное 6 ниже, но это тоже не сработало. test :: (Num n, Ord n) => [Maybe n] -> [Num (Maybe n)] Я не совсем 5 понимаю, как исправить эту ошибку. Я новичок 4 в Haskell, так что может быть что-то действительно 3 простое, чего мне не хватает, ...

Я не понимаю: t для fromIntegral

... то полезно, когда 4 вы хотите, чтобы целочисленные типы и типы 3 с плавающей запятой хорошо работали вместе. Я 2 вообще не понимаю, как эта функция работает 1 и зачем она нужна из-за игры с интерпретатором. fromIntegral 4 + 3.2 7.2 4 + 3.2 7.2 -- seems to work just ...

Простое текстовое меню в Haskell

... е всего создать 4 простое меню с функциональностью, описанной 3 ниже (псевдокод), как я привык: while (true) { x = readLine(); case (x): x ...

Как принудительно выполнить оценку в Haskell?

... ist = do start <- getCPUTime let r = foo inputList end <- getCPUTime return (end - start) -- Possible conversion needed. В последней 20 строке может потребоваться преобразование 19 (например, в миллисекунды), но это не тема 18 данного вопроса. Это правильный способ измерить 17 время, необходимое для вычисления функции ...

Что такое Nothing в Haskell?

... с: Если 15 я правильно понимаю, Nothing - это значение, и 14 только конкретные типы могут иметь значения, но 13 Maybe a не является конкретным типом. Так как же 12 он может иметь значение Nothing? В книге также говорится: Обратите 11 внимание, что тип «Ничто» - это «Может быть». Его 10 тип полиморфен. Что означает полиморфный 9 тип? Как мне это понять? ...

Тип данных для дерева в Haskell

... ипа данных двоичного дерева вы можете 4 написать что-то вроде этого: data Tree a = Nil | No ...

Сравнение функций в Haskell

... цательным, поскольку 19 функции не будут наследовать класс типа 18 Eq. Однако я пытаюсь написать довольно тривиальную 17 функцию, и это кажется обычным делом: search :: ((Enum a) => a -> a) -> Card -> [Card] search op x list = if (op == succ && rank x == King) || (op == pred && rank x == Ace) then [] ...

Почему вы можете перевернуть список с помощью foldl, но не с помощью foldr в Haskell

... ] -> [a] reverse' xs = foldl (\acc x-> x : acc) [] xs Но это дает мне ошибку компиляции. reverse' :: [a] -> [a] reverse' xs = foldr (\acc x-> x : acc) [] xs Ошибка Couldn't match expected type `a' with actual type `[a]' `a' is a rigid type variable bound by ...

Как в Haskell написать "пары" функций?

... жна делать что-то вроде этого: pairs [1, 2, 3 ...

Есть ли Python-эквивалент Haskell 'let'

... бы мне написать 4 что-то вроде: list2 = [let (name,size)=lookup(productId) in (barcode(productId),metric(size)) for productId in list] Если нет, какая будет наиболее читаемая альтернатива? Добавлено 3 для пояснения синтаксиса let: x = let (name,size)=lookup(productId) in (barcode(productId),me ...

Мемоизация в Haskell?

... l 5 для решения фибоначчи числа, которые включали 4 вычисление (лениво) всех чисел Фибоначчи до 3 требуемого n. Но в этом случае для данного 2 n нам нужно только вычислить очень ма ...

Модульное тестирование Haskell

... В некоторых примерах я вижу, что 15 вы настраиваете тестовые примеры, экспортируете 14 их в список тестов, а затем запускаете в 13 ghci с runTestsTT (например, this HUnit example). В других примерах вы 12 создаете средство запуска тестов, привязанное 11 к файлу cabal, которое использует некоторую 10 магию препроцессора для поиска ваших тестов, как 9 в этом git example. Также кажется, что тесты HTF должны 8 иметь префи ...

Haskell: нет экземпляра (Eq a), возникающего из-за использования `== '

... > (last a) == (head a) && (isPalindrome (drop 1 (take (length a - 1) a))) main = do print (show (isPalindrome "blaho")) приводит к No instance for (Eq a) arising from a use of `==' In the first argument of `(&&)', namely `(last a) == (head a)' In the expression: (last a) == (head a) && (isP ...

Haskell: преобразование Int в String

... омощью read: Prelude> read "3" :: Int 3 Prelude> read "3" :: Double ...

Не входит в объем: конструктор данных в Haskell

... iving (Show) ... type StackInt = Stack' Int main = print(StackInt [1,2,3] 4) Я 1 получаю ошибку Not in scope: data constr ...

Написание foldl с помощью foldr

... > id ((+) a3 3)) ((+) a2 2))) 0 = (\a1 -> (\a2 -> (\a3 -> id ((+) a3 3)) ((+) a2 2)) ((+) a1 1)) 0 = (\a1 -> (\a2 -> (\a3 -> (+) a3 3) ((+) a2 2)) ((+) a1 1)) 0 = (\a1 -> (\a2 -> (+) ((+) a2 2) 3) ((+) a1 1)) 0 = (\a1 -> (+) ((+) ((+) a1 1) 2) 3) 0 = (+ ...

Что означает символ «@» в отношении списков в Haskell?

... ти никакой 5 информации в Google (к сожалению, сложно 4 искать символы в Google), и я не могу найти 3 функцию в документации Prelude, поэтому 2 я пола ...

Haskell, умножение Int и Float внутри функции

... могу написать функцию, которая 4 принимает один аргумент с плавающей запятой 3 и 2 целочисленных аргумента и выполняет 2 над ними указанную выше операцию? Я использую 1 ghci v6.12.1, если это и ...

Что такое монада?

... ний, с которыми я сталкивался, довольно 1 недоступны и лишены практических подро ...

Пример Fmap для отличия от карты?

... того 4 http://learnyouahaskell.com, и некоторые объяснения немного неясны. Map 3 и fmap ведут себя одинаково в следующих 2 случаях: let exMap = map (+1) [1..5] let exFMap = fmap (+1) [1..5] Какой хороший пример ...

Расшифровка чисел в Haskell

... Real, Integral, Integer, Int, Ratio, Ratio ...

Получение значения 'a' из возвращаемого типа 'Maybe a' в Haskell

... WValue с множеством 21 разных экземпляров самой себя для разных 20 случаев. На данный момент сведения о WExp, Memory и 19 WValue не актуальны. Моя проблема в том, что для 18 конкретного экземпляра eval я использую функцию 17 lookup, которая принимает параметр eval (строка в 16 данном случае) ищет список пар ключ-значение 15 для этой строки. Обратите внимание, что 14 эта функция lookup не включена в Prelude; это 13 самоопределение в файле .hs. Е ...

Есть ли в Haskell функция, которая возвращает тип своего аргумента (или строку, показывающую тип)?

... ивном режиме? Или это 3 то, что Haskell не может сделать, потому 2 что его тип не имеет смысла. А как насчет 1 функции, возвращающе ...

Что делает concatMap?

... ют concat и map. Это 2 просто они оба вместе или это совершенно 1 разны ...

Как списки реализованы в Haskell (GHC)?

... 4 какие-то специальные оптимизации? Более 3 конкретно: Должны ли length и (!!) (например) выполнять итерацию по списку? Если да, то кешируются ли их значения каким-либо образом (т. е. если я дважды вызову length, придется ли выполнять итерацию оба раза)? Включает ли доступ к задней части списка итерацию по всему списку? ...

Haskell: разделение списка на кортеж из двух новых списков

... (начиная с первого) переходит 5 в первый список, а все остальные элементы 4 во второй. Вот так: split [] = ([],[]) split [1] = ([1],[]) split [1,2] = ([1],[2]) split [1,2,3] = ([1,3],[2]) split [1,2,3,4] = ([1,3],[2,4]) Я пытаюсь выполнить ...

Haskell: списки, массивы, векторы, последовательности

... иски, даже не задумываясь о разнице в 11 производительности. Недавно я начал исследовать 10 и нашел множество библиотек структур данных, доступных 9 в Haskell. Может ли кто-нибудь объяснить 8 разницу между списками, массивами, векторами 7 и посл ...

Haskell - цикл for

... t a = 0; for (int x = 0; x < n; x += 1) a = 1 - a; что мне делать в Haskell, ...

Haskell - ошибка синтаксического анализа при вводе `| '

... ализа. Я не 8 думаю, что на самом деле в нем есть какие-то 7 ошибки, поэтому сейчас я думаю, что знак 6 "|" Знак не тот, который хочет haskell, но 5 он стандартный на моей клавиатуре Macbook 4 (с Mac OS). Возможно ли это, и если да, то 3 как мне это обойти? В настоящее время я 2 использую T ...

Сравнение типов в Haskell

... новы Haskell и 4 пытался найти ответ на этот простой вопрос, поэтому 3 заранее прошу прощения, потому что уверен, чт ...

Что такое "|" в определении класса Haskell?

... ть 2 в таком определении класса: class (Monoid w, Monad m) => MonadWriter w m | m -> w Какую допол ...

Развертывание Yesod на Heroku, статическая сборка невозможна

... website: /lib/libc.so.6: version `GLIBC_2.14' not found (required by ./dist/build/personal-website/personal-website) 2011-12-28T01:31:23+00:00 app[web.1]: ./dist/build/personal-website/ personal-website: /lib/libc.so.6: version `GLIBC_2.14' not found (required by /app/dist/build/personal-website/libgmp.so.10) 2011-12-28T01:31:25+00:00 heroku[web.1]: State changed from starting to crashed 2011-12-28 ...

Как правильно использовать функцию readMaybe в IO

... ивался 31 с проблемами, которые я не мог бы решить 30 самостоятельно, но на этот раз я безрезультатно 29 гуглил почти два часа, чтобы получить некоторую 28 информацию о функции readMaybe. Итак, мне 27 нужно решить следующую проблему, и я уже 26 пробовал много разных подходов для ее решения, но 25 все время получаю одно и то же сообщение 24 об ошибке от моего компилятора: No instance fo ...

Haskell - определение функции с охранниками внутри 'где'

... westDivisor :: Integer -> Integer lowestDivisor n = lowestDivisorHelper 2 n where lowestDivisorHelper m n | (m `divides` n) = m -- these should belong to lowestDivisorHelper | otherwise = lowestDivisorHelper (m+1) n primeFactors :: Integer -> [Integer] primeFactors 1 = [] primeFactors n | n < 1 = error "Must be positive" ...

Использование функции идентификатора Haskell

... аковы варианты использова ...

Как отсортировать список в Haskell в командной строке ghci

... ва списка 7 и затем объединять их вместе, а затем сортировать 6 объединенный список от наименьшего к наибольшему. это 5 следует делать в командной строке без использования 4 модулей. Это то, что у меня есть сейчас, у 3 меня проблемы с работой функции "sortList", а 2 также я не знаю, как объединить ...

Объединение списков с использованием foldl ', foldr

... в RealWorldHaskell, что foldr 8 полезна для таких вещей. Хорошо, но нельзя 7 ли также написать эквивалент ++ с помощью 6 foldl? Может кто-нибудь показать мне, как 5 я могу это сделать (если это возможно ... В 4 книге об этом ничего не говорится) ... Мешает 3 ли мне это сделать ...