Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (*
- ** binrev
- *)
- (* ****** ****** *)
- #define
- LIBATSCC2JS_targetloc
- "contrib/libatscc2js/ATS2-0.3.2"
- (* ****** ****** *)
- #include
- "{$LIBATSCC2JS}/staloadall.hats"
- (* ****** ****** *)
- staload
- "{$LIBATSCC2JS}/SATS/print.sats"
- (* ****** ****** *)
- #define ATS_MAINATSFLAG 1
- #define ATS_DYNLOADNAME "my_dynload"
- fun
- count(n: int): int = let
- //
- fun loop(current:int):int =
- if current = 0 then 0
- else loop(current/2) + 1
- //
- in
- loop(n)
- end
- fun
- fact2(n:int): int =
- if n = 0 then 1
- else 2*fact2(n-1)
- //
- (* ****** ****** *)
- fun
- binrev(n: int): int = let
- //
- fun total(current:int,num:int):int =
- if current = 0 then 0
- else total(current/2,num-1) + current % 2 * fact2(num)
- //
- in
- total(n,count(n)-1)
- end
- //
- (* ****** ****** *)
- val N = 0
- val () = println! ("binrev(", N, ") = ", binrev(N))
- val () = println! ("binrev(1) = ", binrev(1))
- val () = println! ("binrev(2) = ", binrev(2))
- val () = println! ("binrev(3) = ", binrev(3))
- val () = println! ("binrev(10) = ", binrev(10))
- %{$
- //
- ats2jspre_the_print_store_clear();
- my_dynload();
- alert(ats2jspre_the_print_store_join());
- //
- %} // end of [%{$]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement