monads

    1热度

    2回答

    我使用此功能在以下格式的字符串读自然数的列表:[1, 2, 3]: readMaybeIntList :: String -> Maybe [Int] readMaybeIntList line = case readMaybe line of Just l -> return l Nothing -> Nothing 现在它仅适用于整数 - 会是

    1热度

    1回答

    我有一个模块Game,它定义了一个像这样的方法play :: Board -> Move - > Board。 我想用国家单子名为Playing另一个模块导入Game模块,这样我可以从那里循环调用play直到Board达到一定的状态。 我想用State State Monad获得的Board来调用方法,然后用play返回的Board更新State Monad值。 因此,当循环正在进行时,我想要接收

    0热度

    1回答

    我正在使用HDBC-Sqlite3,我想根据页面进行查询。我想从IO Monad中获取数据。这应该是可能的,因为“get”已经不是纯粹的。一般来说,Haskell是如何完成的? main = do conn <- connectSqlite3 "test.db" scotty 3000 $ do get "/" $ do x <- quickQuery'

    3热度

    2回答

    我有一个非常简单的函数f :: Int -> Int,我想写一个程序,每个n = 1,2,...,max调用f。在每次拨打电话f后,应该显示该点以前使用的(累计)时间(以及n和f n)。这如何实现? 我还是很新的,以在Haskell输入/输出,所以这是我到目前为止已经试过(使用一些玩具例子功能f) f :: Int -> Int f n = sum [1..n] evalAndTimeFir

    3热度

    1回答

    练习6.8,Chiusano和Bjarnason,Scala中的函数式编程, 87问一个人如何可能会为以下特征实现flatMap(): trait RNG { def nextInt: (Int, RNG) } type Rand[+A] = RNG => (A, RNG) 接听键给出了如下解决方案: def flatMap[A,B](f: Rand[A])(g: A => R

    0热度

    1回答

    我有一个Haskell功能在我的Prolog解释分配读取 renames :: Rule -> State ExecState [(Term, Term)] 产生(几乎)的变量在Prolog的规则替换(这样的变量名不冲突统一期间)。 由该函数产生的对的形式为(Variable "X", Variable "X_11")的,这意味着变量X应当被重命名为X_11等(用于重命名计数器包含在ExecS

    2热度

    3回答

    使用Future.traverse的Im是执行的顺序保证。我的功能fn必须在下一个元素运行之前调用并完成未来。 val xs = Seq[T] ??? def fn(t: T): Future[Unit] = ??? Future.traverse(xs)(fn) 感谢,

    0热度

    4回答

    下面是an answer regarding memoization的代码,显示了状态monad中使用的memoization函数,其中状态用传递的函数的结果更新,如果密钥尚未在地图中。 type MyMemo a b = State (Map.Map a b) b myMemo :: Ord a => (a -> MyMemo a b) -> a -> MyMemo a b myMemo

    0热度

    1回答

    我想弄清楚一种方法来在TypeScript中对monadic库进行优化。虽然monad本身的实现令人愉快,但它的使用看起来像熟悉的回调地狱。 我想知道是否有办法劫持async/await或yield/for..of的现有monadic语法糖,但我必须承认我在连接点时遇到了一些麻烦。是否有可能在既不是Promise也不是Iterable的东西上使用这些构造,并且与由反应组件构成的continuati

    0热度

    1回答

    以下代码中的sum()将已经获得a,b,c和10的总和,即使a < b(它将打印“We screwed up!”以表示表达式失败的条件)。我试图改变Where<T>(...)扩展方法 public static IO<T> Where<T>(this IO<T> t, Func<T, bool> foo) { return() => (foo(t()) ? t : Combine(()