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

Haskell中如何拼接整数列表并输出为连续字符串?

核心错误说明

  1. 基础类型认知错误:整数列表(x:xs)的类型为[Int],不是Int
  2. 函数误用:chr是将整数作为ASCII编码转对应字符,输入4得到的是ASCII控制字符,不是字符'4'
  3. 运算符类型不匹配:++仅支持两个列表拼接,chr x返回Char类型,不能直接和String(即[Char])用++拼接
  4. 缺少递归终止条件:没有定义空列表的处理逻辑,递归遍历到列表末尾时会触发模式匹配错误

正确实现

递归手写版本(适配所有整数)

如果输入整数可能是多位数(例如[12,3,45]输出"12345"),使用show函数做转换:

printL :: [Int] -> String
printL [] = ""
printL (x:xs) = show x ++ printL xs

单数字输入优化版本

如果确认输入列表中的整数都在0-9范围内,可以用intToDigit减少转换开销:

import Data.Char (intToDigit)

printL :: [Int] -> String
printL [] = ""
printL (x:xs) = intToDigit x : printL xs

极简高阶函数版本

直接使用标准库组合函数实现,不需要手写递归:

printL :: [Int] -> String
printL = concatMap show

调用printL [4,3,4]均会返回"434",符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:00:02