小编asd*_*234的帖子

Haskell:检查IO的长度[Double]

给定一个类型列表IO [Double],我希望能够检查列表是否具有所需的长度.

我猜我需要在这里使用仿函数,但我不明白如何定义它.我是否编写了长度函数的仿函数实例?或者我编写一个使用长度函数的数据类型的仿函数实例fmap

Monads,仿函数等对我来说都是新手.

monads haskell functor

2
推荐指数
1
解决办法
565
查看次数

错误"无法推断(a~b)"是什么意思?

我正在修改以下代码作为任务的一部分:

rand :: Random a => State StdGen a
rand = do
    gen <- get
    let (x, gen') = random gen
    put gen'
    return x
Run Code Online (Sandbox Code Playgroud)

我被要求编写一个函数randR来完成与函数相同的任务,rand但允许指定范围.所需的类型是Random a => (a, a) -> State StdGen a.我写了以下代码:

randR :: Random a => (a, a) -> State StdGen b
randR (lo, hi) = do
    gen <- get
    let (x, gen') = randomR (lo, hi) gen
    put gen'
    return x
Run Code Online (Sandbox Code Playgroud)

这看起来正确; 它几乎就像模型一样.但是我收到以下错误:

Could not deduce (a ~ b)
from …
Run Code Online (Sandbox Code Playgroud)

haskell types

2
推荐指数
1
解决办法
232
查看次数

标签 统计

haskell ×2

functor ×1

monads ×1

types ×1