二進数変換

30分プログラム、その770。整数を二進数に変換してみる。
SMLには右シフトとかのビット演算ないらしく、ちょっととまどった。

使い方

- bits 0;
val it = [0] : int list
- bits 3;
val it = [1,1] : int list
- bits 2;
val it = [1,0] : int list

ソースコード

fun bits n =
    let
	fun bits_rev n =
	    if n = 0 then
		[]
	    else
		(n mod 2) :: bits_rev (n div 2)
    in
	if n = 0 then
	    [0]
	else
	    List.rev (bits_rev n)
    end;