haskell- все статьи тега ➜ страница 3


Комонады Застежки-Молнии, Вообще

учитывая любой тип контейнера, мы можем сформировать (ориентированную на элемент) молнию и знать, что эта структура является Комонадой. Это было недавно исследовано в замечательных деталях в другом вопросе переполнения стека для следующего типа: data Bin a = Branch (Bin a) a (Bin a) | Leaf a deriving Functor со следующей застежкой-молнией data Dir = L | R data Step a = Step a Dir (Bin a) deriving Functor data Zip a = Zip [Step a] (Bin a) deriving Functor instance Comonad Zip where ... э ...

Как я могу использовать fix, и как это работает?

Я был немного смущен документация fix (хотя я думаю, я понимаю, что он должен делать сейчас), поэтому я посмотрел на исходный код. Это еще больше сбило меня с толку: fix :: (a -> a) -> a fix f = let x = f x in x как именно это возвращает неподвижную точку? я решил попробовать его в командной строке: Prelude Data.Function> fix id ... и он висит там. Теперь, чтобы быть справедливым, это на моем старом macbook, который немного медленный. Однако, эта функция не может быть слишком ...

Как играть с управлением.Монада.Писатель в Хаскелле?

Я новичок в функциональном программировании и недавно учился в узнать вы на Haskell, но когда я прошел эта глава, Я застрял с программой ниже: import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber x = Writer (x, ["Got number: " ++ show x]) multWithLog :: Writer [String] Int multWithLog = do a <- logNumber 3 b <- logNumber 5 return (a*b) Я сохранил эти строки в a .hs-файл, но не удалось импортировать его в мой ghci, который жаловался ...

Различие между типами monadplus, Alternative и Monoid?

стандартная библиотека Haskell typeclasses MonadPlus,Alternative и Monoid каждый предоставляет два метода с практически одинаковой семантикой: пустое значение: mzero,empty или mempty. оператор a -> a -> a что объединяет значения в классе вместе:mplus,<|> или mappend. все три закона указывают, каких инстанций следует придерживаться: mempty `mappend` x = x x `mappend` mempty = x таким образом, кажется, три классов типов являются обеспечение то же самое методы. (Alternative пред ...

Mathematica: что такое символьное Программирование?

Я большой поклонник Стивена Вольфрама, но он определенно не стесняется петь свой собственный Рог. Во многих ссылках он превозносит Mathematica как другую парадигму символического программирования. Я не являюсь пользователем Mathematica. мои вопросы: что это за символическое Программирование? И как это соотносится с функциональными языками (такими как Haskell)? ...

Хорошие стандарты кодирования Haskell

может ли кто-нибудь предоставить ссылку на хороший стандарт кодирования для Haskell? Я нашел этой и этой, но они далеко не полные. Не говоря уже о том, что HaskellWiki one включает в себя такие "драгоценные камни", как "использовать классы с осторожностью" и "определение идентификаторов символьных инфиксов должно быть оставлено только для авторов библиотек." ...

Монады как дополнения

Я читал о монадах в теории категорий. Одно определение монад использует пару сопряженных функторов. Монада определяется круговым движением с использованием этих функторов. По-видимому, дополнения очень важны в теории категорий, но я не видел никакого объяснения монад Хаскелла в терминах сопряженных функторов. Кто-нибудь задумывался об этом? ...

Текст или Bytestring

Добрый день. единственное, что я сейчас ненавижу в Haskell-это количество пакетов для работы со строкой. сначала я использовал родной Haskell [Char] строки, но когда я попытался начать использовать библиотеки hackage, то полностью потерял в бесконечных преобразованиях. Каждый пакет, кажется, использовать различные строки реализации, некоторые принимает их собственную вещь ручной работы. далее я переписал свой код с Data.Text строки и ...

Haskell IDE для Windows? [закрытый]

Я действительно искал на этом. (E / TextMate-самый близкий, который я нашел в этой теме, но это, кажется, не так уж и важно) Я пробовал emacs, но я, кажется, не нашел режим Haskell для Windows.. VisualHaskell, похоже, не следит за новыми обновлениями VisualStudio... Я мог бы попробовать VIM,но работает ли там режим Haskell для Windows? вздох... Все время ощущение "близко, но без сигары". там на самом деле так там Программирование Haskell под Windows? ...

Преобразование строки в целое число / Float в Haskell?

data GroceryItem = CartItem ItemName Price Quantity | StockItem ItemName Price Quantity makeGroceryItem :: String -> Float -> Int -> GroceryItem makeGroceryItem name price quantity = CartItem name price quantity I want to create a `GroceryItem` when using a `String` or `[String]` createGroceryItem :: [String] -> GroceryItem createGroceryItem (a:b:c) = makeGroceryItem a b c вход будет в формате ["Apple","15.00","5"] который я разбил с помощью Haskell's . Я получаю следующую ошиб ...

attoparsec или парсек в Haskell

Мне нужно разобрать некоторые файлы и конвертировать их в некоторые предопределенные типы данных. Haskell, кажется, предоставляет два пакета для этого: attoparsec parsec в чем разница между ними и какой из них лучше подходит для парсинга текстового файла по определенным правилам? ...

Типы Хаскелл неприятно средняя функция простой''

Я играю с новичком Haskell, и я хотел написать среднюю функцию. Это казалось самой простой вещью в мире, не так ли? неправильно. похоже, что система типов Хаскелла запрещает среднему работать с общим числовым типом-я могу заставить его работать со списком интегралов или списком Фракционалов, но не с обоими. хочу: average :: (Num a, Fractional b) => [a] -> b average xs = ... но я могу только сделать: averageInt :: (Integral a, Fractional b) => [a] -> b averageInt xs = fromInte ...

Как запустить файл haskell в интерпретируемом режиме

Мне сказали, что вы можете интерпретировать файлы haskell (что, как я предполагаю, означает, что они будут работать как Ruby/Python/Perl). Однако не удается найти параметр командной строки на ghc для этого. Он всегда хочет скомпилировать мой файл. Взглянул и на ghci, но он всегда бросает меня в repl. Я в основном хочу просто сделать ghc -i MyFile.hs (где-i-это составленный флаг, который я притворяюсь соответствующим интерпретируемому режиму) и выполняю его, чтобы я мог получить быструю обратную ...

Что представляет собой сгиб для типов, отличных от списка?

рассмотрим односвязный список. Это выглядит примерно так data List x = Node x (List x) | End естественно определить функцию складывания, такую как reduce :: (x -> y -> y) -> y -> List x -> y в смысле reduce f x0 заменяет каждый Node С f и все End С x0. Это то, что прелюдия называется раза. теперь рассмотрим простое двоичное дерево: data Tree x = Leaf x | Branch (Tree x) (Tree x) аналогично естественно определить такую функцию как reduce :: (y -> y -> y) -> (x - ...

Время выполнения функции Haskell

есть ли простой метод для вычисления времени выполнения функции в Haskell? ...

Что такое полиморфизм легкомыслия

как следует из названия вопроса, я хочу знать, что такое полиморфизм легкомыслия и какова его мотивация ? Я знаю на этой странице есть некоторые детали в нем, но большинство объяснений там идут поверх моей головы. :) пока на этой странице немного дружелюбнее, я все еще не могу понять мотивацию этого. ...

Монада паузы

монады могут делать многие удивительные, странные вещи. Они могут создавать переменные, которые содержат суперпозицию значений. Они могут позволить вам получить доступ к данным из будущего, прежде чем вычислить его. Они могут позволить вам писать деструктивные обновления, но не совсем. И тогда продолжение монады позволяет вам ломать умы людей! обычно ваш собственный. ; -) но вот задача: можете ли вы сделать монаду, которая может быть пауза? data Pause s x instance Monad (Pause s) mutate :: (s ...

Что делает оператор Haskell?

прохождение документации Haskell всегда немного больно для меня, потому что вся информация, которую вы получаете о функции, часто не более чем: f a -> f [a] что может означать любое количество вещей. как и в случае . все, что мне дано, это:(<|>) :: f a -> f a -> f a и вот это "ассоциативная бинарная операция"... при осмотре Control.Applicative я узнаю, что он делает, казалось бы, несвязанные вещи, в зависимости от по реализации. instance Alternative Maybe where empty = Not ...

Насколько сложно многопоточность Haskell?

Я слышал, что в Haskell создать многопоточное приложение так же просто, как взять стандартное приложение Haskell и скомпилировать его с помощью -threaded флаг. Другие случаи, однако, описали использование в исходном коде. каково состояние многопоточности Haskell? Насколько легко это ввести в программы? Есть ли хороший многопоточный учебник, который проходит через эти различные команды и их использование? ...

Что такое () в Haskell, точно?

Я читаю узнать вы на Haskell, и в главах монады, мне кажется, что () рассматривается как своего рода" null " для каждого типа. Когда я проверяю тип () в GHCi, я получаю >> :t () () :: () что является чрезвычайно запутанной заявление. Кажется, что () тип все для себя. Я смущен тем, как он вписывается в язык, и как он, кажется, может стоять для любого типа. ...