Вопросы по теме 'do-notation'
Можно ли свернуть свой собственный синтаксический сахар (например, do-нотацию или стрелочную нотацию) в Haskell?
Ну, вопрос напрашивается сам собой. Предположим, я хочу реализовать какой-то специальный синтаксис просто для удовольствия. Является ли это возможным? Какие инструменты следует использовать?
832 просмотров
schedule
15.07.2023
Краткая нотация if-then-else в блоках выполнения в Haskell
Я не могу понять, как заставить работать краткую нотацию if-then-else, упомянутую в [ http://hackage.haskell.org/trac/haskell-prime/wiki/DoAndIfThenElse ]. Это работает,
import System.Environment
main = do
args <- getArgs
if (args !!...
9098 просмотров
schedule
02.03.2023
Haskell ЕСЛИ иначе
input <- readLn
if (input == 0)
then
putStr "0"
else if (input ==1)
then
putStr "1"
else if (input ==2)
в таком сценарии, как использовать несколько putStr с then или else if ?
когда я пытаюсь получить ошибку
Type error...
5725 просмотров
schedule
29.04.2022
If/then/else в операторах do (Haskell)
У меня есть блок кода, который я написал, который не компилируется, потому что блок if/then/else не изложен так, как понимает компилятор, однако я не могу понять, как его переписать. что может.
playRandomly board = do
let vMoves...
1467 просмотров
schedule
08.10.2023
Монадическая нотация do внутри let, возможно ли это?
Рассмотрим следующий допустимый код Haskell
module Main where
main :: IO ()
main = do
let x = f
print x
f :: Maybe (Int, Int)
f =
Just 3 >>= (\a ->
Just 5 >>= (\b ->
return (a, b)))
где функция f может...
184 просмотров
schedule
08.03.2023
Что делает команда put в типичной функции, использующей монаду состояния?
Это пример из https://wiki.haskell.org/All_About_Monads Это пример использования State монады для передачи значения StdGen через последовательность команд генерации случайных чисел. Если я понимаю, что последний return делает правильно, он...
771 просмотров
schedule
04.04.2023
Как сгенерировать бесконечный список в Haskell на основе двух входных данных?
Мне нужно создать бесконечный список на основе двух входных данных.
gen :: Int -> Int -> [Int]
gen x y
Каждый элемент должен быть (x * y), и x увеличивается на y на каждой итерации, и исходный x также должен быть в списке. Так
gen...
1256 просмотров
schedule
11.02.2023
нотация do волшебным образом исправляет в качестве аргумента выражение, которое в противном случае было бы отвергнуто
В шаблонах Nim: в качестве продолжения этой проблемы у меня возникла идея обойти недоступность аргумента по умолчанию с помощью используя перегрузку или даже в этом случае обычную упаковку. Хотя было бы слишком хорошо, если бы что-то снова не...
54 просмотров
schedule
26.06.2022
Как ведет себя оператор ‹- в haskell?
Я понимаю (несколько) монады и понимаю, что оператор ‹- будет извлекать значение из монады.
Но как это работает с разными типами?
Как правило, я видел, как он используется для извлечения строк из монады IO. Но в приведенном ниже примере кода я...
133 просмотров
schedule
08.10.2022
Можно ли написать этот код без использования нотации do?
у меня есть функция
bar :: MyType -> MyType -> [MyType]
Я хотел бы иметь другую функцию:
foo :: [MyType] -> [MyType]
foo xs = do x <- xs
y <- xs
bar x y
Можно ли написать foo без использования...
107 просмотров
schedule
27.11.2022
Как нотация `do` в Haskell узнает, какое значение нужно принять, если оно не определено возвратом?
У меня есть этот монадический объект.
data Parser a = Parser (String -> Maybe (a, String))
instance Functor Parser where
-- fmap :: (a -> b) -> Parser a -> Parser b
fmap f (Parser pa) = Parser $ \input -> case pa input of...
253 просмотров
schedule
21.07.2022
Может ли сопоставление с образцом в do-notation/enumFromTo замедлить код Haskell?
Я решал довольно простую задачу: генерация всех убывающих последовательностей длиной L , состоящих из натуральных чисел от 1 до M в лексикографическом порядке. Тем не менее, я столкнулся с довольно странной проблемой. Посмотри:
c :: (Ord...
230 просмотров
schedule
15.04.2022
Почему я не могу вызвать функцию быстрой сортировки (randomList 10)?
У меня есть следующий код:
import Data.Array
import Control.Monad
import Data.Functor
import System.Random (randomRIO)
randomList 0 = return []
randomList n = do
r <- randomRIO (1,6)
rs <- randomList (n-1)
return (r:rs)...
84 просмотров
schedule
28.02.2023
Могу ли я иметь отдельные функции для чтения и записи в текстовый файл в Haskell без использования «основной» функции?
Я делаю программу с использованием Haskell, которая требует простых функций сохранения и загрузки. Когда я вызываю функцию сохранения, мне нужно поместить строку в текстовый файл. Когда я вызываю load, мне нужно вытащить строку из текстового файла....
143 просмотров
schedule
21.05.2022
fmap в блок do завершается с ошибкой печати
Я пытаюсь понять, почему функция, которую я написал с блоком выполнения, не может быть переписана для fmap аналогичного лямбда-выражения по списку.
У меня есть следующее:
-- This works
test1 x = do
let m = T.pack $ show x...
89 просмотров
schedule
08.09.2022
объединение ввода getLine с массивом haskell вызывает ошибку типа
Я совсем новичок в Haskell. Я пришел из среды js, у меня есть простой массив students , в который я хочу втолкнуть некоторые студенческие объекты, но, к сожалению, Haskell не поддерживает объекты (если есть способ, я могу это сделать пожалуйста,...
292 просмотров
schedule
11.05.2022
Борьба с вводом-выводом при чтении файла конфигурации в Haskell
У меня есть входные данные, предназначенные для моих еще не написанных приложений Haskell, которые находятся в файле. Я не обновляю файл. Мне просто нужно прочитать файл и передать его в мою функцию Haskell, которая ожидает список строк. Но чтение...
76 просмотров
schedule
17.02.2023
Как нотация do в монаде означает в Haskell
Рассмотрим следующий сегмент кода
import Control.Monad.State
type Stack = [Int]
pop :: State Stack Int
pop = state $ \(x:xs) -> (x, xs)
push :: Int -> State Stack ()
push a = state $ \xs -> ((), a:xs)
stackManip :: State Stack Int...
198 просмотров
schedule
28.08.2022
Haskell do notation edge case не может проверить тип
Я пытаюсь понять правила нотации do .
Вот код, который проверяет тип:
fff :: Maybe Int
fff = do
_ <- pure $ Just 100
(+10)
<$> Just 50
Что в основном fff = (+10) <$> Just 50 . Я бы предположил, что приведенное...
109 просмотров
schedule
08.01.2023
Проблема с вложенными монадами при написании простого генератора URL QuickCheck
Еще один вопрос новичка, который, вероятно, возник из-за того, что я не понял Monadic do в Haskell: я хочу написать простой генератор QuickCheck для правильно сформированных URI, используя тип Text.URI из пакета modern-uri . Насколько я понимаю,...
65 просмотров
schedule
03.10.2022