P.74 練習問題
;; list ;; MIT (define (my-list . a) a) ;; lambda (define my-list (lambda a a)) (my-list 1 2 3 4 5) ;; => (1 2 3 4 5) (my-list 1) ;; => (1) (my-list) ;; => ()
MIT記法と非MIT記法での可変長引数
;; MIT (define (func . a) (print a)) (func 1 2 3 func + '() "aaa" 4 5 6) ;; => (1 2 3 #<closure func> #<subr +> () aaa 4 5 6) ;; lambda (define func (lambda a (print a)) (func 1 2 3 func + '() "aaa" 4 5 6) ;; => ;; => (1 2 3 #<closure func> #<subr +> () aaa 4 5 6)
mapに複数のリストを渡してみる。
手続きも可変長引数を取れるように。
;; higher order varargs mapping (map (lambda a (print a) a) '(1 2 3) '(1 2 3 4 5)) ;; => (1 1) ;; => (2 2) ;; => (3 3) ;; => ((1 1) (2 2) (3 3))
print関数を自前で実装してみる。
;; print ;; MIT (define (my-print . a) (map (lambda (s)(display s)(newline)) a)) (my-print 1 2 3) ;; => 1 ;; => 2 ;; => 3 ;; => (#<undef> #<undef> #<undef>) ;; lambda (define my-print (lambda a (map (lambda (s)(display s)(newline)) a))) (my-print 1 2 3 4 5) ;; => 1 ;; => 2 ;; => 3 ;; => 4 ;; => 5 ;; => (#<undef> #<undef> #<undef> #<undef> #<undef>)
0 件のコメント:
コメントを投稿