Вопросы с тегом «haskell»

86
Как я могу заставить esqueleto сгенерировать для меня строку SQL?

Как я могу заставить esqueleto сгенерировать строку SQL из fromоператора? В документации toRawSqlуказано, что «вы можете просто включить постоянное ведение журнала запросов». Я пробовал все возможные формы, MonadLoggerкоторые мог понять, но он никогда не печатал SQL. В той же документации также...

85
Какой язык учить после Haskell? [закрыто]

В настоящее время этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, повлечет за собой дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно...

85
Различие между классами типов MonadPlus, Alternative и Monoid?

Классы типов Haskell стандартной библиотеки MonadPlus, Alternativeи Monoidкаждый предоставляют два метода с практически одинаковой семантикой: Пустое значение: mzero, emptyили mempty. Оператор , a -> a -> aкоторый соединяет значения в классе типов вместе: mplus, <|>или mappend. Все три...

84
Haskell: почему принято называть вспомогательную функцию «go»?

Я goмногое вижу, когда читаю материал или исходный код Haskell, но я никогда не чувствовал себя комфортно в этом - (я полагаю, это имеет негативный оттенок "goto" в моем сознании). Я начал изучать Haskell с LYAH, и именно здесь я уловил тенденцию использовать accи stepпри написании складок. Откуда...

84
Почему Haskell (иногда) называют «лучшим императивным языком»?

(Надеюсь, этот вопрос по теме - я попытался найти ответ, но не нашел окончательного ответа. Если это не по теме или уже дан ответ, модерируйте / удалите его.) Я помню, как несколько раз слышал / читал полушутливые комментарии о том, что Haskell является лучшим императивным языком , что, конечно,...

84
Как читать это «доказательство» GHC Core?

Я написал этот небольшой фрагмент Haskell, чтобы выяснить, как GHC доказывает, что для натуральных чисел вы можете уменьшить вдвое только четные: {-# LANGUAGE DataKinds, GADTs, KindSignatures, TypeFamilies #-} module Nat where data Nat = Z | S Nat data Parity = Even | Odd type family Flip (x ::...

83
Haskell: лифт против лифта

В каких ситуациях следует liftIOиспользовать? Когда я использую ErrorT String IO, liftфункция работает, чтобы поднять действия ввода-вывода ErrorT, поэтому liftIOкажется излишней....

83
Схемы рекурсии для чайников?

Я ищу действительно простые и понятные объяснения схем рекурсии и схем коркурсии (катаморфизмы, анаморфизмы, гиломорфизмы и т. Д.), Которые не требуют перехода по множеству ссылок или открытия учебника теории категорий. Я уверен, что неосознанно заново изобрел многие из этих схем и «применил» их в...

83
Haskell на JVM?

Мне интересно, есть ли способ заставить Haskell работать на JVM (скомпилированный или интерпретируемый)? На Sourceforge существует JHaskell, но этот кажется пустым и мертвым. GHC использует LLVM как серверную часть компилятора. Было бы неплохо или возможно скомпилировать LLVM в байт-код Java? Или,...

82
Как предоставить явное объявление типа для функций при использовании GHCi?

Как определить эквивалент этой функции (взятый из Learnyouahaskell ) внутри GHCi? import Data.List numUniques :: (Eq a) => [a] -> Int numUniques = length . nub Без объявления типа GHCi принимает определение функции, но в конечном итоге получает бесполезный тип: Prelude Data.List> import...

82
Как я могу удалить версию пакета Cabal?

Happstack Lite ломает меня, потому что он получает версию 0.5 blaze-html и ему нужна версия 0.4. Кабал говорит, что установлены обе версии 0.4.3.4 и 0.5.0.0. Я хочу удалить 0.5.0.0 и использовать только старую версию. Но у Кабала нет команды "удалить", и когда я пытаюсь ghc-pkg unregister --force...

80
Функциональные линзы

Может ли кто-нибудь объяснить мне функциональные линзы? Это удивительно сложная тема для Google, и я не добился никакого прогресса. Все, что я знаю, это то, что они предоставляют ту же функциональность, что и в OO....

79
Разделите Int на Int и верните Int

Мне нужна функция, которая получает два Ints ( aи b) и возвращает A/Bкак Int. Я уверен, что A/Bэто всегда будет целое число. Вот мое решение: myDiv :: Int -> Int -> Int myDiv a b = let x = fromIntegral a y = fromIntegral b in truncate (x / y) Но хочу найти более простое решение. Что-то вроде...

79
Обработка исключений в Haskell

Мне нужна помощь, чтобы понять использование трех функций Haskell попробуй ( Control.Exception.try :: Exception e => IO a -> IO (Either e a)) поймать ( Control.Exception.catch :: Exception e => IO a -> (e -> IO a) -> IO a) ручка ( Control.Exception.handle :: Exception e => (e...

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

В Real World Haskell , Глава 4. Функциональное программирование : Напишите foldl с помощью foldr: -- file: ch04/Fold.hs myFoldl :: (a -> b -> a) -> a -> [b] -> a myFoldl f z xs = foldr step id xs z where step x g a = g (f a x) Приведенный выше код меня сильно смутил, и кто-то...

55
Что именно подразумевается под «частичной функцией» в функциональном программировании?

Насколько я понимаю, частичные функции - это функции, которые мы получаем, передавая в функцию меньше параметров, чем ожидалось. Например, если это было правильно в Python: >>> def add(x,y): ... return x+y ... >>> new_function = add(1) >>> new_function(2) 3 В приведенном...

50
Как уменьшить дублирование кода при работе с рекурсивными типами сумм

В настоящее время я работаю над простым интерпретатором языка программирования, и у меня есть такой тип данных: data Expr = Variable String | Number Int | Add [Expr] | Sub Expr Expr И у меня есть много функций, которые делают простые вещи, такие как: -- Substitute a value for a variable...

39
Есть ли шанс написать «мажор» вместо «мажор С»?

Я столкнулся с небольшой эстетической проблемой в моем музыкальном проекте, и это беспокоило меня в течение некоторого времени. У меня есть тип, data Key = C | D | ...и я могу построить Scaleиз а Keyи а Mode. В Modeразличает , например , крупный и незначительный масштаб. Я могу определить Modeтип...

25
Почему доступ к System.Info не считается операцией ввода-вывода в Haskell?

В модуле System.Infoя вижу эти функции: os :: String arch :: String compilerName :: String compilerVersion :: Version Почему там нет IO? Они получают доступ к системе ... Я ошибаюсь? Мое ожидание было что-то вроде: os :: IO String arch :: IO String compilerName :: IO String compilerVersion :: IO...