zoukankan      html  css  js  c++  java
  • SICP: 第二章之序列操作:程序的共性

    #lang racket
    
    ;guo lv qi
    (define (filter predicate sequence)
      (cond ((null? sequence) '())
        ((predicate (car sequence))
         (cons (car sequence)
               (filter predicate (cdr sequence))))
        (else (filter predicate (cdr sequence)));else
        );cond
      );filter
    
    (define (accumulate op initial sequence)
      (if (null? sequence)
          initial
          (op (car sequence)
          (accumulate op initial (cdr sequence))));if
      );accumulate
    
    ;mei ju int low~high
    (define (enumerate-interval low high)
      (if (> low high)
          '()
          (cons low (enumerate-interval (+ low 1) high)))
      );enumerlate-interval
    
    ;mei ju tree's leaf
    (define (enumerate-tree-leaf tree)
      (cond ((null? tree) '())
        ((not (pair? tree)) (list tree))
        (else (append (enumerate-tree-leaf (car tree))
                  (enumerate-tree-leaf (cdr tree)))));cond
      );enumerate-tree-leaf
    
    ;append
    (define (append lst1 lst2)
      (if (null? lst1)
          lst2
          (cons (car lst1) (append (cdr lst1) lst2)));if
      );append
    
    ;(enumerate-tree-leaf (list 1 (list 2 (list 3 4)) 5))
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (define (sum-odd-squares tree)
      (accumulate + 
              0 
              (map (lambda (x)(* x x))
               (filter odd?
                  (enumerate-tree-leaf tree));flter
               );map
              );accumulate
      );sum-odd-squares
    
    (define (odd? a)
      (= 1 (remainder a 2))
      );odd?
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (define (even-fibs n)
      (accumulate cons
             '()
             (filter (lambda(x) (not (odd? x)))
                 (map fib
                  (enumerate-interval 0 n)));filter
       );accumulate
      );even-fib
    
    (define (fib n)
      (define (fib-iter a b count)
        (if (= count 0)
        a
        (fib-iter b (+ a b) (- count 1))
         );if
        );fib-iter
      (fib-iter 0 1 n)
      );fib
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
    (define (list-fib-square n)
      (accumulate cons
              '()
              (map (lambda (x) (* x x))
               (map fib
                (enumerate-interval 0 n))));accumulate
      );list-fib-square
    
    (define tree (list 1 (list 2 (list 3 4))))
    (sum-odd-squares tree)
    
    (even-fibs 10)
    
    (list-fib-square 10)
  • 相关阅读:
    CSU1256 天朝的单行道(spfa)
    WordPress For SAE进入后台
    Android studio 使用NDK工具实现JNI编程
    android动画具体解释一 概述
    VC6.0编译DLL,使用VS2010调用问题及解决方法
    android 地址控件概述
    android 多线程概述
    android 中的 window,view,activity具体关系
    比较windows phone程序启动和android程序启动原理
    比较windows phone 的回退事件与android的回退事件
  • 原文地址:https://www.cnblogs.com/wizzhangquan/p/4442776.html
Copyright © 2011-2022 走看看