do-notation相关内容
我有以下代码示例: {-# LANGUAGE ScopedTypeVariables #-}主要 = 做putStrLn "请输入一个数字 a:"a :: Int
..
在学习 Haskell 时,我意识到 do 符号只是语法糖: a = do x 翻译成 a = [3..4] >>= (\x -> [1..2] >>= (\_ -> return (x, 42))) 我意识到我可能会使用 do-notation,但我想了解翻译中发生了什么.所以纯粹出于教学原因,ghc/ghci 有没有办法为我用 do-notation 编写的相当复杂的 monad 提
..
我正在尝试使用 绑定;但是,我需要在 where 语句下使用 do 块来执行此操作,但是 Haskell 一直抱怨缩进.代码如下: decompEventBlocks :: IO [String] ->IO [[字符串]]decompEventBlocks 词|words'/= [] = block : (decompEventB
..
据我所知,Haskell 中的 do 块只是 monadic 绑定运算符的某种语法糖.例如,可以转换 main = do f >= print >>打印“完成" 是否可以将所有 do 块转换为绑定语法?例如,多次使用 f 的这个块怎么样: main = do f
..
大多数 Haskell 教程都教授了对 IO 使用 do-notation. 我也是从 do-notation 开始的,但这让我的代码看起来更像是命令式语言而不是 FP 语言. 这周我看到一个教程使用 IO with stringAnalyzer 读取文件“testfile.txt" 而不是使用 do main = 做strFile
..
在 Haskell 中工作,发现奇怪的行为,将其剥离为裸露的骨头 这个作品 a :: Boola = case True of真 ->真的错误 ->错误的 但是当我尝试时 b :: IO Boolb = 做让 b' = case True of真 ->真的错误 ->错误的返回 b' 我明白 ghci>:l test.hs[1 of 1] 编译 Main ( test.hs, 解释)
..
我开始了我的 Grand Haskell Crusade (GHC :) ) 并且我对 monad 和 IO 函数有点困惑.谁能简单地解释一下这两个函数之间的区别是什么? f1 = do x 结果是: *Main>f1[1,2,2,3]*主要>f2[[1,2],[2,3]] 解决方案 这里的其他答案是正确的,但我想知道它们是否不是您所需要的......我会尽量保持简单,只有两点:
..
为什么下面的代码段会产生错误parse error on input ‘putStrLn’? main = do line
..
我不明白这三种语法之间的区别: where a = f (b) do a
..
我为此问题提供了答案,并且想到了使用Cont monad的想法.我对Haskell不够了解,无法解释为什么该程序不起作用 import Control.Monad.Cont fib1 n = runCont (slow n) id where slow 0 = return 0 slow 1 = return 1 slow n = do a
..
我试图理解为什么我用do-block编写的函数不能被重写以在列表上fmap一个类似的lambda表达式. 我有以下内容: -- This works test1 x = do let m = T.pack $ show x T.putStrLn m test1 1 生产 1 但是 -- This fails fmap (\x ->
..
instance Monad ((->) r) where return x = \_ -> x h >>= f = \w -> f (h w) w import Control.Monad.Instances addStuff :: Int -> Int addStuff = do a
..
我有这种类型,基本上是Kleisli箭头: {-# language DeriveFunctor #-} data Plan m i o = Plan (i -> m o) deriving Functor instance (Monad m) => Applicative (Plan m i) where pure x = Plan (\_ -> pure x) Pl
..
2010年哈斯克尔报告说 do表达式为提供了一种更常规的monadic语法 编程.它允许一个表达式,例如 putStr "x: " >> getLine >>= \l -> return (words l) 用更传统的方式写成: do putStr "x: " l
..
我有以下代码示例: {-# LANGUAGE ScopedTypeVariables #-} main = do putStrLn "Please input a number a: " a :: Int
..
我正在尝试使用 IO [[String]] decompEventBlocks words | words' /= [] = block : (decompEve
..
在Java中,我们总是这样写: public static void main(String[] args){...} 当我们想开始编写程序时. 我的问题是,对于IE的Haskell来说是否一样:我是否可以始终确保声明: main =做,当我想为Haskell编写程序代码时? 例如: main = do putStrLn "What's your name?
..
我正在尝试学习Haskell,并希望编写一个小程序,将文件内容打印到屏幕上。当我将其加载到GHCi时,我收到以下错误: 'do'结构中的最后一个语句必须是表达式 我知道这个问题已在这里提出: Haskell - ”'do'结构中的最后一个语句必须是表达式“。 即使我的代码非常相似,我仍然无法弄清楚问题。如果有人能指出我的问题,我会非常感激。 模块主要(主要)其中 im
..
我收到了一系列网络请求,每个请求都需要超过10秒。 为了让用户知道发生了什么,我给出了更新: $ b $ “ { - 网络请求 - } putStrLn”完成“ putStr”下载第一件东西“b main =下载第二件事......“ { - 网络请求 - } putStrLn”DONE“ GHCi的工作方式和预期一样,但是编译或者使用runghc,“Do
..
我试图在Haskell中解除do语句。我在这里找到了一些例子,但无法将它们应用于我的案例。 只有我能想到的是一个沉重的嵌套let语句,看起来相当难看。 语句应该用bind替换: p> do num nt1 nt2 return(节点号nt1 nt2) 任何输入值得高度赞赏=) 解决方案 numberNode x>> = \ num - > num
..