Описание тега do-notation
В Haskell do-notation - это синтаксический сахар для написания монадического кода.
2
ответа
Какой отступ требуется для оператора case в операторе let?
Работая в хаскеле, нашел странное поведение, раздев его до голой кости Это работает a :: Bool a = case True of True -> True False -> False Но когда я пытаюсь b :: IO Bool b = do let b' = case True of True -> True False -> False return b'…
08 окт '15 в 00:12
1
ответ
Как правильно отбросить результат (монадического) вычисления в F#
В Хаскеле я могу написать: token: Parser a -> Parser a token p = do space v <- p space return v В F# я зашел так далеко: let token = compose { let! _ = space let! v = parser let! _ = space return v } Другими словами, я должен представить это н…
20 ноя '13 в 21:09
2
ответа
Эквивалент do-нотации Haskell или F# Вычислительных выражений в Scala?
Выражения вычисления F# позволяют скрыть сложность монадического синтаксиса за толстым слоем синтаксического сахара. Есть ли что-то подобное в Scala? Я думаю, что это для понимания... Пример: val f = for { a <- Future(10 / 2) // 10 / 2 = 5 b <…
20 сен '11 в 03:55
1
ответ
Сопоставление с образцом в нотации do и let
Недавно я столкнулся с ошибкой при использовании threepenny-gui, и она была решена путем изменения кода из сопоставления с образцом в нотации do с <- для сопоставления с шаблоном let. Есть ли причины, по которым мне следует ожидать изменения в по…
17 ноя '13 в 02:51
2
ответа
Сравнение пользовательского типа данных с параметрами
Я изучаю Haskell и пытаюсь реализовать эту программу. У меня есть пользовательский тип данных data CalculatorInput = Exit | Error String | Operator (Int -> Int -> Int) | Number Int тогда у меня есть метод getInput который возвращает значение э…
08 май '16 в 12:10
2
ответа
Как я могу вернуть значение Maybe из нотации do в PureScript?
Я пытаюсь вернуть значение Maybe из функции, использующей нотацию do, но не могу заставить ее работать. Эта функция принимает строку ("имя файла") и путь для поиска в... findIn :: String -> Path -> Maybe Path findIn search start = do file <…
03 апр '16 в 01:11
4
ответа
Конструкция do в Haskell
Я пытаюсь изучить Haskell и хочу написать небольшую программу, которая выводит содержимое файла на экран. Когда я загружаю его в GHCi, я получаю следующую ошибку: Последнее утверждение в конструкции do должно быть выражением Я знаю, что этот вопрос …
22 дек '10 в 20:26
2
ответа
Haskell рекурсия в IO action
Все еще начинающий, который не может понять рекурсивный цикл в IO действие. Предполагать: fMinInspect :: Int fMinInspect = 1 fMaxInspect :: Int fMaxInspect = 12 -- fNoInspectPerHour :: IO () fNoInspectPerHour = do generateInspect <- randomRIO (fM…
22 окт '18 в 14:36
1
ответ
Почему это ошибка разбора в нотации do?
Рассмотрим следующий код: foo = do let bar = do baz bar Не разбирается в ghc, версия 8. Жалуется на строку, содержащую baz, Этот код анализирует, хотя: foo = do let bar = do baz bar Я нахожу это запутанным. В чем принципиальная разница между двумя в…
06 фев '17 в 18:07
1
ответ
Что делать с "сбросить" в do-нотации Purescript?
Возникла проблема с некоторыми примерами из книги "Изучите Purescript by Example". В частности, этот код из раздела 9.3: main :: Eff (canvas :: CANVAS) Unit main = void $ unsafePartial do Just canvas <- getCanvasElementById "canvas" ctx <- get…
06 июл '17 в 06:14
1
ответ
Правда ли, что порядок выполнения внутри блока do не зависит от порядка операторов?
Я читал https://wiki.haskell.org/Do_notation_considered_harmful и с удивлением прочитал следующие строки Новички могут подумать, что порядок утверждений определяет порядок исполнения.... Порядок утверждений также не является критерием для порядка оц…
07 мар '15 в 00:44
3
ответа
Хранить результат применения функций в кортеже внутри DO-блока
Хотя я могу применить функцию два раза и связать результат в кортеж: let foo :: Num a => a -> a foo x = x + 1 let (x,y) = (foo 10, foo 20) Это не может быть сделано (хотя бы я не знаю, как это сделать правильно) в течение do блок: let bar :: Num a =…
18 сен '15 в 08:02
1
ответ
Рефакторинг функции Haskell, использующей монаду Reader
У меня есть код, который выглядит примерно так, игнорируя весь код, который не имеет отношения к моему вопросу: import qualified Control.Monad.Reader as Reader data FooEnv = FooEnv { bar :: Int -> Int } type FooReader = Reader.Reader FooEnv foo :…
08 сен '14 в 04:06
1
ответ
Почему в вызовах типа "runSomeMonad $ do ..." должен быть знак $?
Видимо единственно возможная интерпретация runSomeMonad do ... является runSomeMonad (do ...), Почему первый вариант не допускается синтаксисом Haskell? Есть ли какой-то случай, когда foo do bar может быть на самом деле неоднозначно?
20 фев '14 в 19:12
2
ответа
Bind vs Assignment в Хаскеле
Я работаю над учебным пособием " Напиши себе схему", и один блок кода заставил меня задуматься о разнице между связыванием и присваиванием: parseAtom = do first <- letter <|> symbol rest <- many (letter <|> digit <|> symbol) …
09 июн '13 в 16:37
2
ответа
Haskell: 'do [1,2,3]; ["привет"]'разъяснение поведения
Поэтому я пытаюсь понять, как именно Хаскель do нотация работает. Я понимаю, что он используется вместе с монадами и что он в основном расширяется (так как на самом деле это синтаксический сахар) в анонимные функции, связанные с любой связью (>&g…
07 янв '16 в 17:07
1
ответ
Не удается распечатать в файл с помощью IO Monad
Здравствуйте, я сделал мой тип JSon, и я пытаюсь его в файл. Я могу сделать это из прелюдии, но я не могу сделать это при использовании IO Monad. Я получаю следующее error: Main.hs:13:24: error: * Couldn't match type `Char' with `[Char]' Expected ty…
17 май '18 в 07:51
2
ответа
Можно ли написать этот код без использования нотации?
У меня есть какая-то функция bar :: MyType -> MyType -> [MyType] Я хотел бы иметь другую функцию: foo :: [MyType] -> [MyType] foo xs = do x <- xs y <- xs bar x y Можно ли написать foo без использования do нотация? Я думал о чем-то вро…
06 сен '18 в 20:36
4
ответа
Состав функции Do Notation
Существует ли синтаксический сахар "do notation" для простого сложения функций? (т.е. (.) :: (b -> c) -> (a -> b) -> a -> c) Я хотел бы иметь возможность хранить результаты некоторых композиций на будущее (продолжая цепочку. Я бы пред…
10 ноя '16 в 00:35
3
ответа
Как ведет себя оператор <- в haskell?
Я понимаю (в некоторой степени) монады и понимаю, что оператор <- извлечет значение из монады. Но как это работает с разными типами? Как правило, я видел, как он используется для извлечения строк из монады ввода-вывода. Но в приведенном ниже примере…
04 сен '18 в 06:32