monomorphism-restriction

    0热度

    1回答

    这里是我的代码: n = [(a,b) | a <- [1..5],b <- [1..5]] calcBmis xs = [bmi | (w, h) <- xs,let bmi = w/h^2] 当试图申请calcBmis到n,我得到以下错误: *Charana> calcBmis n <interactive>:220:1: No instance for (Fraction

    2热度

    1回答

    可能重复: What is going on with the types in this ghci session? 要尝试和实践了一下Haskell语言和了解自由,我与玩弄点一个函数来平方数 所以我开始定义 >let dup f x = f x x ,所以我可以改写DUP方面平方米(不担心做DUP点免费现在) >let sq x = dup (*) x 和检查平方米的类型我看到我期待看

    6热度

    2回答

    当我进入GHCI命令:t我看到的多态类型: ghci> :t 42 42 :: Num t => t ghci> :t div div :: Integral a => a -> a -> a 但经过我实际评估这些功能我看到的类型默认规则的结果。根据Haskell报告和/或ghc实现应用类型违约规则后,有没有一些命令或能力可以在ghci中观察如何更改类型?

    8热度

    1回答

    在翻译工作时,它往往是方便的功能结合到一个名称,例如: ghci> let f = (+1) ghci> f 1 2 这个别名的名称f的功能(+1)。简单。 但是,这并不总是奏效。我找到一个导致错误的例子,试图从Data.List模块中别名nub。例如, ghci> :m Data.List ghci> nub [1,2,2,3,3,3] [1,2,3] ghci> let f =

    9热度

    1回答

    我想在Haskell写一个小游戏,并且有相当数量的状态需要传递。我想尝试隐藏状态monad 现在我遇到了一个问题:功能,采取国家和一个参数很容易写入工作在状态单子。但也有一些函数只是将状态作为参数(并返回一个修改的状态,或者可能是其他的)。 在我的代码的一部分,我有这样一行: let player = getCurrentPlayer state 我想它不会采取状态,而不是写 player <

    26热度

    3回答

    Haskell中的类型推理有一点学习曲线(至少可以说!)。开始学习它的一个好方法是用简单的例子。所以,以下是类型推断的“hello world”。 请看下面的例子: Prelude> :t 3 3 :: (Num t) => t Prelude> let x = 3 Prelude> :t x x :: Integer 的问题是这样的:为什么3和X有不同的类型? 链路摘要: 阅读下面的

    8热度

    1回答

    我开始做99个哈斯克尔问题,我在problem 7,我的单位测试结果爆炸了。 显然,这是由于这样的:http://www.haskell.org/haskellwiki/Monomorphism_restriction 我只是想确保我正确地理解这一点,因为我有点困惑。 情况1:func a被定义为没有类型def或非严格类型def,然后被使用一次,编译器在编译时没有问题推断类型。 情况2:相同FUN

    2热度

    1回答

    我在Haskell写了一个简单的(情节较轻)素数生成器,具有相互递归定义,生成素数和确定数量的primeness: primes :: (Integral a) => [a] primes = 2 : filter isPrime [3, 5..] isPrime :: (Integral a) => a -> Bool isPrime m = all (indiv m) (takeWhi

    1热度

    1回答

    ,我有以下数据类型: {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE ExtendedDefaultRules #-} class ToString a where data M = forall a. (ToString a) => B a 在GHCI我可以做以下的,没有任何问题: let bs = [B, B] 但是

    15热度

    3回答

    我开始Haskell ...我尝试以两种不同的方式编写以下平凡函数,让Haskell决定类型,并且类型系统在每个函数中执行一些不同的操作案件。这种行为的解释是什么? Prelude> let f x = 2 * x Prelude> let g = (2*) Prelude> :info f f :: Num a => a -> a -- Defined at <interactive>:1