diff --git a/egison.cabal b/egison.cabal
--- a/egison.cabal
+++ b/egison.cabal
@@ -1,5 +1,5 @@
 Name:                egison
-Version:             3.5.8
+Version:             3.5.9
 Synopsis:            Programming language with non-linear pattern-matching against non-free data
 Description:
   An interpreter for Egison, a **pattern-matching-oriented**, purely functional programming language.
diff --git a/lib/core/collection.egi b/lib/core/collection.egi
--- a/lib/core/collection.egi
+++ b/lib/core/collection.egi
@@ -91,41 +91,50 @@
           {[<cons _ $xs> (drop (- n 1) xs)]
            [<nil> {}]}))))
 
-(define $while
+(define $take-while
   (lambda [$pred $xs]
     (match xs (list something)
       {[<nil> {}]
        [<cons $x $rs>
         (if (pred x)
-            {x @(while pred rs)}
+            {x @(take-while pred rs)}
             {})]})))
 
-(define $while-by
+(define $take-while-by
   (lambda [$pred $xs]
     (match xs (list something)
       {[<nil> {}]
        [<cons $x $rs>
         (if (pred x)
-            {x @(while-by pred rs)}
+            {x @(take-while-by pred rs)}
             {x})]})))
 
-(define $until
+(define $taile-until
   (lambda [$pred $xs]
     (match xs (list something)
       {[<nil> {}]
        [<cons $x $rs>
         (if (not (pred x))
-            {x @(until pred rs)}
+            {x @(take-until pred rs)}
             {})]})))
 
-(define $until-by
+(define $take-until-by
   (lambda [$pred $xs]
     (match xs (list something)
       {[<nil> {}]
        [<cons $x $rs>
         (if (not (pred x))
-            {x @(until-by pred rs)}
+            {x @(take-until-by pred rs)}
             {x})]})))
+
+(define $drop-while
+  (lambda [$pred $xs]
+    (match xs (list something)
+      {[<nil> {}]
+       [<cons $x $rs>
+        (if (pred x)
+            (drop-while pred rs)
+            xs)]})))
 
 ;;
 ;; cons, car, cdr
diff --git a/lib/core/io.egi b/lib/core/io.egi
--- a/lib/core/io.egi
+++ b/lib/core/io.egi
@@ -20,6 +20,12 @@
          [(write-to-port port "\n")]
          })))
 
+(define $display (compose show print))
+
+(define $display-to-port
+  (lambda [$port $x]
+    (print-to-port port $ (show x))))
+
 (define $each-line
   (lambda [$proc]
     (do {[$eof (eof?)]}
diff --git a/lib/core/number.egi b/lib/core/number.egi
--- a/lib/core/number.egi
+++ b/lib/core/number.egi
@@ -44,7 +44,7 @@
 
 (define $find-factor
   (memoized-lambda [$n]
-    (match (while (lte? $ (floor (sqrt (itof n)))) primes) (list integer)
+    (match (take-while (lte? $ (floor (sqrt (itof n)))) primes) (list integer)
       {[<join _ <cons (& ?(divisor? n $) $x) _>> x]
        [_ n]})))
 
@@ -55,6 +55,14 @@
            {p @(prime-factorization (quotient n p))})]}))
 
 (define $p-f prime-factorization)
+
+(define $n-adic
+  (lambda [$n $x]
+    (if (eq? x 0)
+      {}
+      (let {[$q (quotient x n)]
+            [$r (remainder x n)]}
+        {@(n-adic n q) r}))))
 
 (define $even?
   (lambda [$n]
