And how do you formalize the screen? (BTW, this is just speculation on your part. The word "screen" doesn't actually appear anywhere in the article.)
You can't have it both ways. Either you are going to formalize everything, or you're going to punt at some point and yield to practical considerations. And formalizing I/O is particularly hard.
> I still don't understand the distinction you're making between representing as lists vs being lists.
(lambda () t) is a list. In McCarthy's original lisp, as in Bel, this list IS a function. This would work:
(setq l '(lambda () t))
(l) --> T
But in modern Lisps you have to EVALUATE this list in order to get a function that you can call. In Scheme: ts> (define l '(lambda () #t))
l
ts> l
(lambda () #t)
ts> (l)
Error: illegal function
ts> (define p (eval l))
p
ts> p
#<CLOSURE>
ts> (p)
#t
ts> (procedure? l)
#f
ts> (procedure? p)
#t
ts> (list? l)
#t
ts> (list? p)
#f