monads

    0热度

    3回答

    我正在关注Udacity上的“编程语言”,并尝试在Haskell中表示问题集。答案是用Python写的: edges = {(1,"a") : [2,3] ,(2,"a") : [2] ,(3,"b") : [3,4] ,(4,"c") : [5]} accepting = [2,5] def nfsmSim(string, current, edges

    3热度

    1回答

    我试图做的JSON解析在IO: {-# LANGUAGE OverloadedStrings #-} import Network.HTTP.Simple import Data.Aeson import Data.Maybe (fromJust) main :: IO() main = do response <- getResponseBody <$> httpJSON

    1热度

    1回答

    使用servant和persistent库创建REST API,并使用insertUnique创建新实体时遇到类型不匹配错误。 这里是有问题的功能: createUser :: Entity User -> App Int64 createUser p = do maybeNewUser <- runDb (insertUnique (User (userUsername $ enti

    1热度

    1回答

    我是一个新的函数式编程。我正在使用Scalpel刮掉一个网站,我需要从该网站中包含的链接中提取信息。我可以推断,但只是链接的一部分,我需要添加到字符串"http://www.google.com/"每个这些链接。我不能做一个正常的++,因为我没有String的列表。 下面的代码: {-# LANGUAGE OverloadedStrings #-} import Text.HTML.Scalp

    2热度

    1回答

    我测试在Haskell某些HTTP请求,并有以下方法: import qualified Data.ByteString.Lazy as LAZ import Language.Haskell.TH.Ppr import System.IO import Data.Word (Word8) request :: IO LAZ.ByteString request = do r

    0热度

    6回答

    我的问题出现在教程Functors, Applicatives, And Monads In Pictures及其JavaScript version之后。 当文本说函子打开了上下文的值时,我知道→5转换正在发生。根据What does the "Just" syntax mean in Haskell?,Just是“定义在Maybe monad的范围内”。 我的问题是什么是如此神奇的整个解开的东

    7热度

    2回答

    我明白像Haskell这样的纯函数语言的吸引力,你可以跟踪使用monad的磁盘I/O等副作用。 为什么不是所有的系统调用都被认为是副作用?例如,Haskell中的堆内存分配(这是自动的)不被跟踪。堆栈分配可能是一个副作用,虽然我不确定它会有用。这些都会改变整个系统的状态。 那么,什么是副作用,什么不是什么,绘制的线在哪里?它只是在什么是最“有用的”?还是有更多的理论基础?

    1热度

    3回答

    我试图实现一个Maybe-State monad变换器并使用它来实现一个简单的堆栈机器。 状态monad的定义也许应该是正确的。现在我想实现流行: pop :: MaybeT (State Stack) Int 因此,如果堆栈是空的它没有返回,否则返回Just <popped stack>。 这是我到目前为止有: pop :: MaybeT (State Stack) Int pop = g

    -2热度

    1回答

    我有我的Haskell代码的信息: data Symtable a = General a | Stack a class Evaluable e where eval :: (Num a, Ord a) => (Ident -> Maybe a) -> (e a) -> (Either String a) typeCheck :: (Ident -> String) -> (e a) -

    4热度

    1回答

    使用输入我的代码 main :: IO() main = runInputT defaultSettings loop where --loop :: InputT IO() loop = do minput <- getInputLine "$ " case minput of