do-notation

    13热度

    4回答

    我无法弄清楚如何在[http://hackage.haskell.org/trac/haskell-prime/wiki/DoAndIfThenElse]中提到的简明if-then-else符号工作。这工作, import System.Environment main = do args <- getArgs if (args !! 0) == "hello"

    1热度

    2回答

    我想编写一个函数,使用getLine读取一些数据,并返回,即一个元组(整数,整数),但使用符号。像这样的东西(当然它不起作用): fun :: (Integer, Integer) fun = do a <- read (getLine::Integer) b <- read (getLine::Integer) return (a, b) 我必须为此编写自己的

    6热度

    2回答

    对于所有表现良好的Monads,以下两种平坦等价物的实现是否相同? flatten1 xss = do xs <- xss x <- xs return x flatten2 xss = do xs <- xss xs

    5热度

    1回答

    在HaskellWiki's Do notation considered harmful,部分有用的应用程序,我发现: 应当提及的是,有时做需要从你 负担写无聊的事情。 E.g.在 getRight :: Either a b -> Maybe b getRight y = do Right x <- y return x 上为y的case被包括,它调用如果y不是右(

    4热度

    3回答

    input <- readLn if (input == 0) then putStr "0" else if (input ==1) then putStr "1" else if (input ==2) 在这种塞纳里奥如何在then或else if使用多个putStr用? 当我试图得到一个错误 Type error in application *** Ex

    24热度

    1回答

    ,因为我学习Haskell我意识到do符号只是语法糖: a = do x <- [3..4] [1..2] return (x, 42) 转化为 a = [3..4] >>= (\x -> [1..2] >>= (\_ -> return (x, 42))) 我意识到,我可能会使用注释,但我想了解翻译过程中发生了什么。纯粹出于教学原因,ghc/ghci有没有办法给我

    1热度

    1回答

    一个(一元)计算在Haskell的结果,我可以这样写: token: Parser a -> Parser a token p = do space v <- p space return v 在F#中,我已经走到这一步: let token = compose { let! _ = space let! v = parser

    6热度

    2回答

    F#计算表达式允许隐藏单层句法复杂的语法糖层。 Scala中有类似的东西吗? 我认为这是内涵...... 例子: val f = for { a <- Future(10/2) // 10/2 = 5 b <- Future(a + 1) // 5 + 1 = 6 c <- Future(a - 1) // 5 - 1 = 4 } yield b * c //

    16热度

    3回答

    我试图把握Monad的状态,为此我想编写一个monadic代码,用一个线性同余发生器产生一个随机数序列(可能不是很好,但我的目的只是学习State Monad,而不是建立一个好的RNG库)。 发电机就是这个(我想生成的Bool S表示简单的顺序): type Seed = Int random :: Seed -> (Bool, Seed) random seed = let (a, c,

    1热度

    1回答

    我很新的Haskell和我想了解使用此文档中创建单子解析器https://www.cs.nott.ac.uk/~gmh/pearl.pdf 相反,正是它后面的方法,我试图做它一点点不同,以便正确理解,因此,我结束了这段代码 newtype Parser a = Parser (String -> Maybe (a, String)) item :: Parser Char item = Pa