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

PureScript中ASCII颜色前缀无法使用问题求助

修复PureScript中ANSI颜色转义的解析错误

错误原因

  1. 非法八进制转义:PureScript字符串的八进制转义(\0xx)仅支持0-7的数字,你代码里的\097包含数字9,属于非法字符,直接导致解析失败。
  2. 错误的ESC起始码:ANSI颜色序列的起始是ESC字符(ASCII值27),正确转义应为八进制\033或十六进制\x1B,你使用的\031、\032都不是ESC的有效转义。
  3. 颜色代码不匹配:所有分支都用了0;33m(黄色),没有对应各颜色的正确ANSI编号。

修复后的代码

data Color = White | Red | Green | Yellow

colorizeWith :: Color -> String -> String
colorizeWith Green  s = "\x1B[0;32m" <> s <> "\x1B[0m" -- 绿色前景色
colorizeWith Red    s = "\x1B[0;31m" <> s <> "\x1B[0m" -- 红色前景色
colorizeWith Yellow s = "\x1B[0;33m" <> s <> "\x1B[0m" -- 黄色前景色
colorizeWith White  s = "\x1B[0;37m" <> s <> "\x1B[0m" -- 白色前景色

关键修正说明

  • 改用十六进制转义\x1B表示ESC字符,比八进制\033更直观,同时规避八进制数字的限制问题。
  • 为每个Color分支匹配正确的ANSI前景色代码:
    • 红色 → 31
    • 绿色 → 32
    • 黄色 → 33
    • 白色 → 37
  • 移除包含非法数字的\097转义,替换为标准的ESC转义序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:05:40