Advertisement
zerooneday

ex3_3

Jan 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. (*
  2. ** binrev
  3. *)
  4.  
  5. (* ****** ****** *)
  6. #define
  7. LIBATSCC2JS_targetloc
  8. "contrib/libatscc2js/ATS2-0.3.2"
  9.  
  10. (* ****** ****** *)
  11.  
  12. #include
  13. "{$LIBATSCC2JS}/staloadall.hats"
  14.  
  15. (* ****** ****** *)
  16.  
  17. staload
  18. "{$LIBATSCC2JS}/SATS/print.sats"
  19.  
  20. (* ****** ****** *)
  21.  
  22. #define ATS_MAINATSFLAG 1
  23. #define ATS_DYNLOADNAME "my_dynload"
  24.  
  25. fun
  26. count(n: int): int = let
  27. //
  28. fun loop(current:int):int =
  29. if current = 0 then 0
  30. else loop(current/2) + 1
  31. //
  32. in
  33. loop(n)
  34. end
  35.  
  36. fun
  37. fact2(n:int): int =
  38. if n = 0 then 1
  39. else 2*fact2(n-1)
  40. //
  41. (* ****** ****** *)
  42. fun
  43. binrev(n: int): int = let
  44. //
  45.  
  46. fun total(current:int,num:int):int =
  47. if current = 0 then 0
  48. else total(current/2,num-1) + current % 2 * fact2(num)
  49. //
  50. in
  51. total(n,count(n)-1)
  52. end
  53. //
  54. (* ****** ****** *)
  55. val N = 0
  56. val () = println! ("binrev(", N, ") = ", binrev(N))
  57. val () = println! ("binrev(1) = ", binrev(1))
  58. val () = println! ("binrev(2) = ", binrev(2))
  59. val () = println! ("binrev(3) = ", binrev(3))
  60. val () = println! ("binrev(10) = ", binrev(10))
  61.  
  62.  
  63. %{$
  64. //
  65. ats2jspre_the_print_store_clear();
  66. my_dynload();
  67. alert(ats2jspre_the_print_store_join());
  68. //
  69. %} // end of [%{$]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement