编写Haskell自定义last'函数在GHCI调用时出现变量未定义错误求助
问题修复方案
错误原因
你在GHCI中执行last' xs时报错,核心问题是**xs变量未在当前作用域定义**——你在代码里定义的测试列表是ys = [1,2,3,4,5],而非xs。
修复方法
有三种直接的解决方式:
- 直接用你已经定义好的
ys调用函数:
*Main> last' ys 5
- 直接传递字面量列表进行测试,不需要提前定义变量:
*Main> last' [10,20,30,40] 40
- 先在GHCI中临时定义
xs变量,再调用函数:
*Main> let xs = [6,7,8,9] *Main> last' xs 9
额外提示
你的last'实现存在边界问题:如果传入空列表[],reverse []返回空列表,head会直接抛出运行时错误。如果需要更健壮的实现,可以考虑用模式匹配处理空列表的情况,比如:
last' :: [a] -> Maybe a last' [] = Nothing last' [x] = Just x last' (_:xs) = last' xs
内容的提问来源于stack exchange,提问作者Rodaina Mahmoud
相关产品推荐
相关产品推荐

