Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
-- | Parses a BInt
getBInt :: Get BCode
getBInt = BInt . read <$> getWrapped 'i' 'e' intP
where intP = ((:) <$> char '-' <*> getDigits) <|> getDigits
getBInt :: Get BCode
BInt . read
(.) :: (b -> c) -> (a -> b) -> a -> c -- Defined in GHC.Base
(BInt . read)
<$>
getWrapped 'i' 'e' intP
(:) -- оператор добавления элемента в начало списка
<$> <*> -- операторы из Control.Applicative, позволяют удобно комбинировать чистые функции и функции с эффектами.
<|> -- оператор выбора альтернатив парсера, такой же как в parsec.
getWrapped 'i' 'e' intP
-- | Get something wrapped in two Chars
getWrapped :: Char -> Char -> Get a -> Get a
getWrapped a b p = char a *> p <* char b
(*>) :: f a -> f b -> f b
Sequence actions, discarding the value of the first argument.
(<*) :: f a -> f b -> f a
Sequence actions, discarding the value of the second argument.

foo = пишется самое основное, а после where постепенно определяется всё остальное в порядке важности.map и foldr.encodeString CP1251 . decodeString UTF8
Haskell в настоящем проекте