标签: ghc

随机返回(g,g)而不是(Double,g)?

我有这段代码:

  markovNextSS :: (RandomGen g, Ord a) => (MarkovChain a, a, g) -> (MarkovChain a, a, g)
  markovNextSS (chain, prev, gen) = let
    (gen', roll) = randomR (0.0, 1.0) gen
    -- expected to get a (Double, g) above,
    -- but GHC 7.8.3 says that this is a (g, g) instead
    next = markovNext chain prev roll
    in (chain, next, gen')
Run Code Online (Sandbox Code Playgroud)

为什么GHC会推断上面的错误类型,特别是如果RandomGen不是一个实例Random

haskell types ghc

0
推荐指数
1
解决办法
53
查看次数

GHCI 7.8.3不支持utf8字符

我在utf8-string包中读到ghc默认应该支持utf8.我甚至在某处写过,现在使用的是我的默认代码页.

尽管如此,一个简单的代码不会执行.

writeFile "asd.txt" "?l???"
Run Code Online (Sandbox Code Playgroud)

回报

*** Exception: filenames.txt: commitBuffer: invalid argument (invalid character)
Run Code Online (Sandbox Code Playgroud)

如何执行此代码?

haskell utf-8 ghc ghci

0
推荐指数
1
解决办法
204
查看次数

无法从上下文中推断出来

我有这种类型.但它无法推断出从goalequals isGoal的第一个变量类型返回的类型.如何解决这个问题?

{-# LANGUAGE TypeFamilies, FlexibleContexts #-}
class Problem p where 
    type State p :: * 
    data Action p :: * 

    goal :: Eq (State p) => State p 
    goal = undefined 

    isGoal :: Eq (State p) => State p -> Bool 
    isGoal s = s == goal 
Run Code Online (Sandbox Code Playgroud)

结束这样做

class Problem p where 
    type State p :: * 
    data Action p :: * 

    goal :: p -> State p 
    goal = undefined 

    isGoal :: Eq (State p) …
Run Code Online (Sandbox Code Playgroud)

haskell types typeclass ghc

0
推荐指数
1
解决办法
155
查看次数

Cabal找不到外国图书馆

最近我试图安装llvm-general-3.5.1.0软件包大约一个星期.基本上我收到此错误:链接.我的情况完全相同.Windows 10,ghc 7.10.2,cabal 1.22.4.0.我用cmake从源代码安装了llvm 3.5.2,一切都很顺利.在llvm/lib目录中,我有*.lib文件(例如LLVMAnalysis.lib).

但不知何故,cabal无法看到这些库并给出了这个令人沮丧的错误:

配置llvm-general-3.5.1.0 ... setup.exe:缺少对外部库的依赖:*缺少C库:LLVMLTO,LLVMObjCARCOpts,LLVMLinker,LLVMipo,LLVMVectorize,LLVMBitWriter,LLVMCppBackendCodeGen,LLVMCppBackendInfo,LLVMTableGen,LLVMDebugInfo,LLVMOption,LLVMX86Disassembler, LLVMX86AsmParser,LLVMX86CodeGen,LLVMSelectionDAG,LLVMAsmPrinter,LLVMX86Desc,LLVMX86Info,LLVMX86AsmPrinter,LLVMX86Utils,LLVMJIT,LLVMIRReader,LLVMAsmParser,LLVMLineEditor,LLVMMCAnalysis,LLVMMCDisassembler,LLVMInstrumentation,LLVMInterpreter,LLVMCodeGen,LLVMScalarOpts,LLVMInstCombine,LLVMTransformUtils,LLVMipa,LLVMAnalysis,LLVMProfileData,LLVMMCJIT,LLVMTarget, LLVMRuntimeDyld,LLVMObject,LLVMMCParser,LLVMBitReader,LLVMExecutionEngine,LLVMMC,LLVMCore,LLVMSupport这个问题通常可以通过安装系统包,提供这些库解决(你可能需要"-dev"版本).如果库已经安装但是在非标准位置,那么您可以使用标志--extra-include-dirs =和--extra-lib-dirs =来指定它们的位置.

我真的想在我的Windows上使用这个软件包,但似乎没有任何工作(我尝试了所有的东西,如--extra-lib-dirs,并与MinGW和VS一起编译 - 同样的问题).

我不能接受它不会安装的事实.我的意思是,必须有一些方法来修复此cabal包中的Setup.hs.有没有人知道在这种情况下cabal有什么问题,我该如何尝试解决这个问题?我不知道cabal究竟是如何运作的,也许有这种知识的人会有想法?或者也许有一种方法可以做到这一点没有cabal?

haskell llvm ghc cabal windows-10

0
推荐指数
1
解决办法
883
查看次数

使用Set.fromList,得到错误"Prelude.!!:index too large"

有一个清单 lc

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> :info lc
lc :: IO [Int]  -- Defined at <interactive>:2:5
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> length <$> lc
1704399
Run Code Online (Sandbox Code Playgroud)

我想知道这个列表的基数,所以我尝试通过执行以下操作将此列表转换为集合:

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> import Data.Set as Set
*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> let sc = Set.fromList <$> lc 
Run Code Online (Sandbox Code Playgroud)

但是,当我试图计算基数时,我得到了错误:

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> length <$> sc
*** Exception: Prelude.!!: index too large
Run Code Online (Sandbox Code Playgroud)

类型sc是正确的:

*Main Lib MetaDefinition WHparseCSV WHparseTxT Set> :info sc
sc :: …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

0
推荐指数
1
解决办法
141
查看次数

当使用Bool和有限2时,为什么非详尽模式警告?

我希望定义一个新类的实例,因为它Bool没有创建部分函数Finite 2,但它不起作用.

我的代码:

-- SO test case, re: my HasFin instance for Bool.
--
-- David Banas <capn.freako@gmail.com>
-- February 9, 2018

{-# OPTIONS_GHC -Wall #-}

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE TypeFamilies #-}

module Bogus.BoolHasFin where

import GHC.TypeLits
import Data.Finite
import Data.Finite.Internal (Finite(..))

class KnownNat (Card a) => HasFin a where
  type Card a :: Nat
  toFin :: a -> Finite (Card a)
  unFin :: Finite (Card …
Run Code Online (Sandbox Code Playgroud)

haskell types ghc

0
推荐指数
1
解决办法
68
查看次数

Haskell无法将预期类型'Bool'与类型[t0]匹配

haskell新手,当我尝试模式匹配非空列表时,我一直遇到这个神秘的错误

码:

type Bits = [Bool]

nor :: Bits -> Bits -> Bits
nor [] [_:__] = error "mismatched length"
nor [_:__] [] = error "mismatched length"
nor [] [] = []
nor (x:xs) (y:ys) = (norBit x y):nor xs ys
    where norBit x y = if x == True || y == True then False else True

main = do
    print (nor [True] [False])
Run Code Online (Sandbox Code Playgroud)

错误:

gates.hs:4:9:
Couldn't match expected type ‘Bool’ with actual type ‘[t0]’
In the pattern: _ …
Run Code Online (Sandbox Code Playgroud)

haskell types ghc

0
推荐指数
1
解决办法
103
查看次数

评论.ghci文件

是否可以在.ghci文件中添加注释?

例如

:set +r # https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html#faq-and-things-to-watch-out-for
Run Code Online (Sandbox Code Playgroud)

这对于记录和切换行为都很有用.

haskell ghc ghci

0
推荐指数
1
解决办法
91
查看次数

代数数据类型(打算)名称冲突..如何?

我有想法在Haskell中实现自己的小音乐理论模块。

从便笺(Note)开始是有意义的,然后我就遇到了这个讨厌的句法问题,我不知道真正的Haskellers是如何处理它的。

data Note = Sharp NoteS | Flat NoteF deriving (Show)

data NoteS = 
    C | SC | D | SD | E | F | SF | G | SG | B
    deriving (Ord,Show,Eq)

data NoteF = 
    C | FD | D | FE | E | F | FG | G | FB | B
    deriving (Ord,Show,Eq)

instance Eq Note where
    (==) (NoteS n1) (NoteS n2) = n1 == n2
    (==) (NoteF n1) (NoteF n2) …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

0
推荐指数
2
解决办法
82
查看次数

Haskell 解释器无法推断返回类型

我试图实现多态元组映射并最终在 GHCi 中编写了以下代码:

data MaxS = MaxS
class Strategy action input result | input -> result where  
    work :: action -> input -> result
instance (Ord a) => Strategy MaxS (a, a, a) a where work _ (a, b, c) = max a (max b c)
f :: (Strategy action input result) => action -> input -> result ; f a i = work a i
f MaxS (1, 2, 3)   

<interactive>:91:1: error:
    * No instance for (Ghci13.Strategy
                         MaxS (Integer, …
Run Code Online (Sandbox Code Playgroud)

haskell types type-inference ghc

0
推荐指数
1
解决办法
40
查看次数

标签 统计

ghc ×10

haskell ×10

types ×5

ghci ×2

cabal ×1

llvm ×1

type-inference ×1

typeclass ×1

utf-8 ×1

windows-10 ×1