小编Chr*_*non的帖子

Haskell函数类型:IO String-> String

我在Haskell中编写了一堆代码来创建文本索引.top函数如下所示:

index :: String -> [(String, [Integer])]
index a = [...]
Run Code Online (Sandbox Code Playgroud)

现在我想给这个函数一个从文件读取的字符串:

index readFile "input.txt"
Run Code Online (Sandbox Code Playgroud)

哪个不起作用,因为readFile的类型为FilePath - > IO String.

无法将预期类型'String'与推断类型'IO String'匹配

我看到错误,但我找不到任何类型的函数:

IO String -> String
Run Code Online (Sandbox Code Playgroud)

我想成功的关键在于Monads的某些地方,但我找不到解决问题的方法.

io monads haskell readfile

35
推荐指数
4
解决办法
3万
查看次数

如何在Haskell中获取指针值?

我希望在非常低的水平上操纵数据.

因此,我有一个函数,它接收一个虚拟内存地址作为一个整数和"做东西"与此内存地址.我从C接口这个函数,所以它有类型(CUInt -> a).我要链接的内存是Word8一个文件.可悲的是,我不知道如何访问指针值Word8.

要清楚,我不需要Word8的值,我需要虚拟内存地址的值,这是指向它的指针的值.

memory haskell pointers

11
推荐指数
1
解决办法
2388
查看次数

在Haskell中键入匹配

如果SomeType定义为:

data SomeType = X {myBool :: Bool} 
                | Y {myString :: String} 
                | Z {myString :: String}
Run Code Online (Sandbox Code Playgroud)

我会更新一个任意的X,取决于他的类型如下:

changeST :: SomeType -> SomeType
changeST (X b) = (X True)
changeST (Y s) = (Y "newString")
changeST (Z s) = (Z "newString")
Run Code Online (Sandbox Code Playgroud)

第三行和第四行完全相同,它们更新给定类型的字符串.有没有办法用一个替换这两行,例如.通过将类型分配给变量?

haskell types pattern-matching matching

4
推荐指数
2
解决办法
386
查看次数

在Haskell代数数据类型中选择备选方案

当类型X定义为:

data X = 
    X { sVal :: String } |
    I { iVal :: Int } |
    B { bVal :: Bool }
Run Code Online (Sandbox Code Playgroud)

我希望Int里面有一个X值,如果有的话,否则为零.

returnInt :: X -> Int
Run Code Online (Sandbox Code Playgroud)

如何确定X参数的类型returnInt

haskell types algebraic-data-types data-structures

3
推荐指数
2
解决办法
929
查看次数