You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell报错parse error on input `=',无法打印原列表和排序后列表

Haskell代码问题修复

报错直接原因

你遇到的parse error on input '='是因为类型标注语法错误:Haskell不支持将变量类型声明和赋值逻辑写在同一行无分隔,正确写法是类型标注单独占一行,再写赋值逻辑。

其他存在的问题

  • 无意义的listBuilder函数,Haskell无法通过这种方式初始化全局变量
  • 输入拿到的是字符串类型,没有转为整数就存入数字列表
  • 完全错误的列表构建语法,num1 :: numList既不符合类型标注规则,也不能将元素加入列表
  • do块内的纯值绑定没有加let关键字,违反IO块的语法规则
  • 列表是[Integer]类型,不能直接和字符串拼接,需要先转成字符串

修复后可运行的完整代码

import Data.List

main :: IO ()
main = do
    putStrLn "Enter 5 Numbers"
    num1 <- read <$> getLine
    num2 <- read <$> getLine
    num3 <- read <$> getLine
    num4 <- read <$> getLine
    num5 <- read <$> getLine
    
    let numList :: [Integer]
        numList = [num1, num2, num3, num4, num5]
        sortedList :: [Integer]
        sortedList = sort numList
    print ("Old List: " ++ show numList)
    print ("Sorted List: " ++ show sortedList)

核心修改说明

  • 用read <$> getLine直接把输入的字符串转为整数类型
  • 统一在do块内用let绑定纯计算的变量,类型标注单独占一行
  • 用列表字面量[num1..num5]构建输入的数字列表
  • 用show函数把数字列表转为字符串后,再和提示文本拼接输出

内容的提问来源于stack exchange,提问作者AEric.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:54:05