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)
本文记录了作者在BACnet协议下进行消息传递功能调试的过程,遇到了发送正确指令却收到通信错误报告的问题,并通过填充多个调度命令解决了这一问题。此外,文中还深入探讨了Church数的概念及其实现。
975

被折叠的 条评论
为什么被折叠?



