相关疑难解决方法(0)

Haskell:I/O和从函数返回

请耐心等待,因为我对函数式编程和Haskell都很陌生.我试图在Haskell中编写一个函数,它接受一个I​​ntegers列表,打印所述列表的头部,然后返回列表的尾部.该函数需要是[Integer] - > [Integer]类型.为了给出一些上下文,我正在编写一个解释器,当在关联列表中查找其各自的命令时调用此函数(键是命令,值是函数).

这是我写的代码:

dot (x:xs) = do print x
      return xs
Run Code Online (Sandbox Code Playgroud)

编译器给出以下错误消息:

forth.hs:12:1:
Couldn't match expected type `[a]' against inferred type `IO [a]'
  Expected type: ([Char], [a] -> [a])
  Inferred type: ([Char], [a] -> IO [a])
In the expression: (".", dot)
Run Code Online (Sandbox Code Playgroud)

我怀疑点函数中的打印调用是导致推断类型为IO [a]的原因.有什么方法可以忽略返回类型的打印,因为我需要返回的是列表的尾部被传递到点.

提前致谢.

io monads haskell types

6
推荐指数
3
解决办法
8040
查看次数

标签 统计

haskell ×1

io ×1

monads ×1

types ×1