相关疑难解决方法(0)

使用非标准Prelude键入默认值

以下程序与GHC编译:

main :: IO ()
main = print $ 2^2
Run Code Online (Sandbox Code Playgroud)

尽管有签名

(^) :: (Num a, Integral b) => a -> b -> a 
Run Code Online (Sandbox Code Playgroud)

由于GHC的类型违约机制.我正在使用数字前奏,而不是导出

(^) :: Ring.C a => a -> Integer -> a
Run Code Online (Sandbox Code Playgroud)

使用Intexponents 非常烦人,所以我更喜欢带有多态指数的Prelude版本.因此,我定义了以下内容:

{-# LANGUAGE NoImplicitPrelude, RebindableSyntax, ScopedTypeVariables #-}

import Algebra.Ring as Ring (C)
import Algebra.ToInteger as ToInteger (C)
import NumericPrelude hiding ((^))

(^) :: forall a i . (Ring.C a, ToInteger.C i) => a -> i -> a
x0 ^ …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

6
推荐指数
0
解决办法
93
查看次数

Haskell"没有实例"错误

我正在尝试编写一个函数来检查数字是否为素数.我写了这个:

primeCheck :: Int -> Int -> Bool
primeCheck n i 
    | n == 2 = True
    | i == 1 = True
    | n `mod` i == 0 = False
    | otherwise = primeCheck n (i -1)

isPrime :: Int -> Bool
isPrime n = primeCheck n (floor (sqrt n))
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

使用floor' Possible fix: add an instance declaration for (RealFrac Int) In the second argument ofprimeCheck'时没有(RealFrac Int)的实例,即isPrime (floor (sqrt n))' In the expression: primeCheck n (floor (sqrt …

haskell

4
推荐指数
1
解决办法
3203
查看次数

标签 统计

haskell ×2

ghc ×1