
I baugh the book more than one year ago. Due to busy development work and other stuff to learn, I have not read it. Now it is time for me to read this great book. I will write notes when reading it.
xxx/yyyK
import java.io.PrintStream;
public class Print {
public static void main(String[] args) {
PrintStream ps = System.out;
ps.print("100");
sleep2s();
ps.print("\r200");
sleep2s();
ps.print("\r300");
}
private static void sleep2s() {
try {
Thread.sleep(2 * 2000);
} catch (InterruptedException ie) {
throw new RuntimeException(ie);
}
}
}
1. Close Firefox.
2. Navigate to my Firefox profile folder.
3. Delete the mimetypes.rdf file.
4. Restart Firefox.
# [v1]
K11=v1
K12=v1
K13=v1
# [v2]
K21=v2
K22=v2
K23=v2
# [v2]
K31=v3
K32=v3
K33=v3
# [v1]
K11,K12,K13 = v1
# [v2]
K21, K22, K23 = v2
# [v2]
K31, K32, K33 = v3
#lang scheme
(define (find-value k)
(let* ([ks2v '(
; multi-key to one-value mappings
((K11 K12 K13) V1)
((K21 K22 K23 K24) V2)
((K31 K32 K33 K34) V3)
)]
[contain? (lambda (k keys)
(let ([equal2k? (lambda (a) (equal? k a))])
(ormap equal2k? keys)))]
[k2v (lambda (pair)
(if (contain? k (car pair))
(cadr pair)
#f))])
(ormap k2v ks2v)))
tidy -q --char-encoding raw -indent --show-warnings n --tidy-mark n -w 80
xmllint --encode UTF-8 --format
#lang slideshow
(define b-machine-states
'((init (c more))
(more (a more)
(d more)
(r end))
(end (r end))))
(define (b-machine stream)
(letrec ([walker (lambda (state stream)
(or (empty? stream)
(let ([transitions
(cdr (assv state b-machine-states))])
(let ([1st (first stream)])
(let ([new-state (assv 1st transitions)])
(if new-state
(walker (cadr new-state) (rest stream))
false))))))])
(walker 'init stream)))
(b-machine '(c a r))
(b-machine '(c a d r))
(b-machine '(c a x))
#lang scheme
(define b-machine
(letrec ([init
(lambda (stream)
(or (empty? stream)
(case (first stream)
[(c) (more (rest stream))]
[else false])))]
[more
(lambda (stream)
(or (empty? stream)
(case (first stream)
[(a) (more (rest stream))]
[(d) (more (rest stream))]
[(r) (end (rest stream))]
[else false])))]
[end
(lambda (stream)
(or (empty? stream)
(case (first stream)
[(r) (end (rest stream))]
[else false])))])
init))
(b-machine '(c a r))
(b-machine '(c a d r))
(b-machine '(c a x))
#lang scheme
(define-syntax automaton
(syntax-rules (-> :)
[(_ init-state
(state : (cndn -> new-state) ...)
...)
(letrec ([state
(lambda (stream)
(or (empty? stream)
(case (first stream)
[cndn (new-state (rest stream))]
...
[else false])))]
...)
init-state)]))
(define b-machine
(automaton init
(init : ((c) -> more))
(more : ((a) -> more)
((d) -> more)
((r) -> end))
(end : ((r) -> end))))
(b-machine '(c a r))
(b-machine '(c a d r))
(b-machine '(c a x))
(automaton init
(init : ((c) -> more))
(more : ((a) -> more)
((d) -> more)
((r) -> end))
(end : ((r) -> end)))
$b_machine_states = {
"init" => {"c" => "more"},
"more" => {"a" => "more",
"d" => "more",
"r" => "end"},
"end" => {"r" => "end"}}
def walker(state, stream)
if stream.empty?
return true
end
first = stream[0]
transitions = $b_machine_states[state]
new_state = transitions[first]
if new_state == nil
return false
else
rest = stream[1, stream.length()]
return walker(new_state, rest)
end
end
def b_machine(stream)
walker("init", stream)
end
print b_machine("car") , "\n"
print b_machine("cadr") , "\n"
print b_machine("cax") , "\n"
class Automaton
def accept(stream)
return init(stream)
end
private
def init(stream)
if stream.empty?
return true
end
first = stream[0]
case first
when "c"
return more(rest(stream))
else
false
end
end
def more(stream)
if stream.empty?
return true
end
first = stream[0]
case first
when "a"
return more(rest(stream))
when "d"
return more(rest(stream))
when "r"
return terminate(rest(stream))
else
return false
end
end
def terminate(stream)
if stream.empty?
return true
end
first = stream[0]
case first
when "r"
return terminate(rest(stream))
else
return false
end
end
def rest(stream)
return stream[1, stream.length()]
end
end
auto = Automaton.new()
print auto.accept("car") , "\n"
print auto.accept("cadr") , "\n"
print auto.accept("cax"), "\n"
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]
"00"="Consolas"
"000"="Bitstream Vera Sans Mono"
#include
int plus_one(int n) {
return n + 1;
}
void caller(int (*f) (int)) {
int result = f(3);
printf("3 plus 1 is %d\n", result);
}
int main() {
caller(plus_one);
return 0;
}
(let ((one 1))
(defun plus_1 (x)
(+ x one)))
(let ((one 5))
(plus_1 3))
(let ((y 7)) (define (scope-test x) (list x y)))
(let ((y 5)) (scope-test 3))
D:\Documents\Prolog>plcon
Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 5.6.64)
Copyright (c) 1990-2008 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
1 ?- consult(woman).
% woman compiled 0.00 sec, 1,060 bytes
true.
2 ?-
:-dynamic pregnant/.
human(susan).
human(jane).
pregnant(susan).
woman(X) :- pregnant(X), human(X).
2 ?- assert(pregnant(jane)).
true.
3 ?- woman(X).
X = susan ;
X = jane.
4 ?- halt.
procedure main()
write("=================================================")
every i := 1 to 10 by 2 do {
write(i)
}
write("=================================================")
every i := 1 + upto(' ', "a ss ss") do {
write(i)
}
write("=================================================")
i := 1
every write(i + upto(' ', "a ss ss"))
write("=================================================")
if 2 < 3 then {
write("2 < 3")
}
write("=================================================")
if (i := find("abc", "abcabcabc")) > 6 then {
write(i)
}
write("=================================================")
if (i := find("x", "xaax")) = find("x", "bxxx") then {
write(i)
}
end
# suspend is followed by a value
procedure FollowedByValue()
i := 1
while i <= 3 do {
suspend i
i +:= 1
}
end
# suspend is followed by a generator expression
procedure FollowedByGenExpr()
suspend(1|2|3)
end
# suspend is followed by a generator function invocation
procedure FollowedByGenFuncInvocation()
suspend FollowedByValue()
end
procedure main()
write("=================================================")
every write(FollowedByValue())
write("=================================================")
every write(FollowedByGenExpr())
write("=================================================")
every write(FollowedByGenFuncInvocation())
end
def from_1_to_5():
for i in [1, 2, 3, 4, 5]:
yield i
for num in from_1_to_5():
print num
def iterator
for i in [1, 2, 3, 4, 5]
yield(i)
end
end
# invoke iterator in a way similar to Python
call_block do |num|
puts "#{num}"
end
# invoke iterator with the use of block
call_block { |num| puts "#{num}" }
(defun foo (n) (lambda (i) (incf n i)))
(setq starting 10)
(setq acc (foo starting))
(funcall acc 1)
(define-syntax let
(syntax-rules ()
((_ ((x v) ...) e1 e2 ...)
((lambda (x ...) e1 e2 ...) v ...))))