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

GHC Numeric库readBin函数未被GHCI识别,readOct/readHex可正常使用

问题原因

Haskell的Numeric模块并未提供readBin函数,该模块仅内置了readOct(八进制解析)和readHex(十六进制解析)函数,这是标准库的设计选择。

替代方案

可以利用Numeric模块中的readInt函数自行实现readBin,readInt是通用的进制解析工具,支持自定义基数:

import Numeric (readInt)
import Data.Char (digitToInt)

-- 实现二进制字符串转数值的readBin函数
readBin :: (Eq a, Num a) => ReadS a
readBin = readInt 2  -- 指定基数为2
                  (\c -> c `elem` "01")  -- 验证字符是否为二进制位
                  digitToInt  -- 将字符转换为对应数字

测试示例

在GHCI中调用该函数:

Prelude Numeric Data.Char> readBin "1101"
[(13,"")]
Prelude Numeric Data.Char> readBin "10000000"
[(128,"")]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:39:52