haskell - Haskell 中的错误。请指导我如何解决这个问题
问题描述
import Data.List
step :: [Int] -> String -> [Int]
step (x:y:ys) "*" = (x * y):ys
step (x:y:ys) "+" = (x + y):ys
step (x:y:ys) "-" = (y - x):ys
step xs numberString = read numberString:xs
这是我不断收到的代码和错误,请提供任何帮助。谢谢你。
*Main> step [2+6]: this is what i put into my terminal
<interactive>:5:1: error:
• No instance for (Show (String -> [Int]))
arising from a use of ‘print’
(maybe you haven't applied a function to enough arguments?)
• In a stmt of an interactive GHCi command: print it
*Main>
解决方案
step [2+6]
你只是部分应用你的函数,所以返回值不是一个 list ,[Int]
而是一个 function String -> [Int]
。(部分应用一个函数意味着只提供它需要的一些参数,并返回一个接收其余参数的函数。是的,你可以在 Haskell 中做到这一点!)
您看到的错误只会出现在终端中,因为 ghci 尝试应用于show
每条语句,但函数无法显示。
因此,如果您想完全应用您的函数来查看它的实际效果,您需要提供它需要的所有参数,即
step [1, 2, 3] "+"
推荐阅读
- bootstrap-4 - 带有覆盖文本引导程序 4 的轮播
- iphone - 在 Windows 10 上使用 VS Code 在 iphone 上调试颤振
- php - 帖子外的元框图像(wordpress)
- asp.net-core - 在 ASP.NET Core 中处理过期的刷新令牌
- visual-studio-code - 如何解决 Visual Code Marketplace 服务器错误 503 问题?
- functional-programming - 在 OCaml 中,为什么我们有 '+.'、'-.' 但我们只使用 '<' 而不是 '<.'?
- java - Netty 中的同步文件传输
- sas - 如果变量值出现两次,则拆分数据集
- julia - juliarc(Julia 启动文件)在哪里?
- ceph - Poweredge 上的 Ceph 用什么控制器