main = do
putStrLn $myLast [1,2,3,4]
myLast :: [a] -> a
myLast [x] = x
myLast (_:xs) = myLast xs
当我尝试运行此代码时,我收到此消息:
“没有由文字‘1’产生的 (Num String) 实例
可能的修复:为(Num String)添加实例声明”
当我使用列表 ["1","2","3,"4"] 运行时,它运行良好。我没有指定类型,但它不适用于整数。
“没有...的实例”错误消息通常具有误导性。
你遇到的问题很简单
前奏> :t putStrLn
putStrLn::String -> IO ()
即该函数只能处理strings,而不是数字。一个常见的解决方案是首先将要显示的内容转换为字符串:putStrLn (show x)
,但实际上该组合作为一个更好的标准函数存在:
main = do
print $ myLast [1,2,3,4]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)