Sha256: 474c79df261c738e28e612aa4c620842e11c13f79b33fed1098000ac77d14676
Contents?: true
Size: 816 Bytes
Versions: 159
Compression:
Stored size: 816 Bytes
Contents
fun rebase (inBase, digits, outBase) = let fun fromBase base = let fun f (x, NONE ) = NONE | f (x, SOME n) = if x >= 0 andalso x < base then SOME(n * base + x) else NONE in foldl f (SOME 0) end fun toBase base = let infix divMod fun a divMod b = (a div b, a mod b) fun swap (a, b) = (b, a) fun unfold f b = case f b of SOME(a, b') => a :: unfold f b' | NONE => [] fun f 0 = NONE | f x = SOME (swap (x divMod base)) in rev o (unfold f) end in if inBase < 2 orelse outBase < 2 orelse (List.length digits) = 0 orelse (List.length digits) = (List.length (List.filter (fn x => x = 0) digits)) then NONE else case fromBase inBase digits of SOME v => SOME (toBase outBase v) | NONE => NONE end
Version data entries
159 entries across 159 versions & 1 rubygems