ACo*_*lie 13
这或多或少是您从Prelude中寻找的内容.从数字:
(注意:readInt是showIntAtBase的"双重",readDec是showInt的"双重".不一致的命名是历史事故.)
import Data.Char (digitToInt)
import Data.Maybe (listToMaybe)
import Numeric (readInt)
readBin :: Integral a => String -> Maybe a
readBin = fmap fst . listToMaybe . readInt 2 (`elem` "01") digitToInt
-- readBin "1001" == Just 9
Run Code Online (Sandbox Code Playgroud)
ice*_*man 10
从原始帖子开始已经有一段时间了,但为了将来读者的利益,我会使用以下内容:
import Data.Char (digitToInt)
import Data.List (foldl')
toDec :: String -> Int
toDec = foldl' (\acc x -> acc * 2 + digitToInt x) 0
Run Code Online (Sandbox Code Playgroud)
无需使用慢下来^,reverse,zipWith,length,等.
此外,使用严格的折叠可以减少内存需求.
| 归档时间: |
|
| 查看次数: |
9225 次 |
| 最近记录: |