我正在使用Haskell9.2.4,并且我试图导入Data.List.Split,因为我想对我的代码使用splitOn函数。
GHCi, version 9.2.4: https://www.haskell.org/ghc/ :? for help
ghci> :l Program -- my program imports Data.List.Split
[1 of 1] Compiling Main ( Program.hs, interpreted )
Program.hs:1:1: error:
Could not find module
为什么这些Haskell代码在第9行(t = 1)产生Parse error on input '='?
module Main where
import System.IO
import Data.List.Split
main = do {
flag <- isEOF;
if flag then return 0
else do {
s <- getLine;
t = 1;
print s;
}
}
我正在尝试在Haskell中拆分一个列表。据我所知,最简单的方法是使用splitOn,但这个函数需要Data.List.Split,所以我尝试在Prelude中运行import Data.List.Split。但是,我得到了以下错误:
Could not find module Data.List.Split
不过,只需导入Data.List就可以了。
我能做些什么来解决这个问题?或者,更好的是:有没有一种简单的、内置的方法来代替拆分列表?
我想替换一个标准类型Haskell库的实例声明。例如,将布尔值的Show实例替换为:
instance Show Bool where
show True = "Vrai"
show False = "Faux"
但是当我尝试去做的时候,我得到了一个错误:
Duplicate instance declarations:
instance Show Bool -- Defined at Exemples01.hs:37:10
instance Show Bool -- Defined in `GHC.Show'
可以用Haskell替换
问题1
为了提高haskell中的编译时间(所包含的任何模块都被编译,不管是否使用了底层功能),是否有任何工具可以警告haskell程序员非相关模块正在被包含?例如,假设我们有以下设置:
NecessaryModule1.hs
module NecessaryModule1 where
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b
NecessaryModule2.hs
module NecessaryModule2 where
addNumber2 :: Int -> Int -> Int
addNu
我正在学习Haskell,正在读这本书,Learn You a Haskell for Great Good!
当作者谈到where关键字时,他说:
在命令式编程语言中,可以通过将计算结果存储在变量中来解决这个问题。在本节中,您将了解如何使用Haskell的where关键字存储中间计算的结果,后者提供了类似的功能。
然而,我在模块声明的末尾也看到了where关键字,我怀疑这个场景中的“中间计算”解释,在模块声明的末尾后面的位置是什么意思?
我制作了一个简短的Haskell程序,它公开了C或Python的函数。遵循的信,这对出口Ints来说是很好的。
想要导出String并使程序:
module Adder where
import CString
adder :: Int -> Int -> IO CString
adder x y = newCString(show(x+y))
foreign export ccall adder :: Int -> Int -> IO CString
当我这样做时,这是可以编译的: ghc adder.hs,但是当链接到在中创建一个dll时,它会失败。
-
我在Unix中从一个项目中创建了一些文件,它们非常多,如果我想在另一个pc或文件夹中执行它,我需要将所有文件复制到其中。它们在进口方面都是相互关联的。如何制作可执行的haskell程序?
我有每一个例子:
main.hs - main where all the program executes; using,besides haskell, unix shell.
ex1.hs - basically types of data, some functions.
ex2.lhs - same as ex1.lhs but is literate with LaTeX
pic.jpg - pi
我一直在尝试从cabal安装,但是在构建它时出现了一个问题。显然,这个包混合使用了来自haskell98和base版本4.*的模块。这带来了一个问题,如果你在haskell98隐藏的情况下编译,那么一些模块就找不到了。然而,如果你在编译时暴露了haskell98,那么ghc就不能知道它是应该使用新的前奏还是haskell98前奏!
错误消息:
Main.hs:1:1:
Ambiguous module name `Prelude':
it was found in multiple packages: base haskell98-2.0.0.1
您如何解决这样的错误
在我升级到GHC7.4后,我不得不从各种脚本中删除import System,但这使得它们与GHC6.0中的runhaskell不兼容,后者仍然在许多环境中使用。
有没有办法同时支持两个版本?
当我在GHC7.4中使用import System运行脚本时收到的消息:
% ./script.hs
Could not find module `System'
It is a member of the hidden package `haskell98-2.0.0.1'.
Use -v to see a list of the files searched
我需要在一个Haskell文件中导出两个模块。现在,我有
module name (important,functions) where
module nameForTesting where
-- the code is here
但是,它给了我这个错误:
filename.hs:5:1: error: parse error on input ‘module’
我该怎么解决这个问题?
我尝试解决haskellbook中的练习,并创建了以下模块:
module Exercises where
import Data.Semigroup
import Data.Monoid
import Test.QuickCheck
data Trivial = Trivial deriving (Eq, Show)
instance Semigroup Trivial where
_ <> _ = Trivial
instance Monoid Trivial where
mempty = Trivial
mappend x y = x <> y