January 8 2007 月曜日

时间:2022-01-12 00:10:20

  Today I debuged the functions to communicate in BACnet protocol.  I found a strange phenomenon, I sent
a correct message including a schedule command out, received a message to report a communication error.
However, I filled three or four schedule commands, I can get a correct result message.

  Due to no debugging tools it is not easy to watch values of variables at running program.  I have to add
more and more "printf()" and "fprintf()" into my codes.  So, my code looks worse and worse.

  I looked through the Church number again.

  Church number

(define (f x) (cons 'x x)) ;; by running.

(define (zero f)
  (lambda (x)
    x))

(define (one f)
  (lambda (x)
    (f x)))

(define (two f)
  (lambda (x)
    (f (f x))))

(define (three f)
  (lambda (x)
    (f (f (f x)))))

(define (add-one n)
  (lambda (f)
    (lambda (x)
      (f ((n f) x)))))

(define (add a b)
  (lambda (f)
    (lambda (x)
      ((a f) ((b f) x)))))

(define (mul a b)
  (lambda (f) (lambda (x) ((a (b f)) x))))

  Now, let's run those numbers. :-)  Type following code into your interpreter, please.

(define six (mul two three))
((six f) '())
=> (x x x x x x)

(define five (add two three))
((five f) '())
=> (x x x x x)