mirror of https://github.com/Wilfred/difftastic/
160 lines
1.9 KiB
Scheme
160 lines
1.9 KiB
Scheme
===
|
|
symbol
|
|
===
|
|
+
|
|
-
|
|
*
|
|
/
|
|
!
|
|
even?
|
|
odd?
|
|
set!
|
|
hello
|
|
ar!$->2
|
|
->
|
|
variable
|
|
123app123
|
|
变量
|
|
|
|
---
|
|
(program
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol))
|
|
|
|
===
|
|
list
|
|
===
|
|
(quote)
|
|
(sym)
|
|
(define x 1)
|
|
(if (= 1 1) 1 0)
|
|
#(1 2)
|
|
#vu8(0 1)
|
|
|
|
---
|
|
(program
|
|
(list (symbol))
|
|
(list (symbol))
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(number))
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(number)
|
|
(number))
|
|
(number)
|
|
(number))
|
|
(vector
|
|
(number)
|
|
(number))
|
|
(byte_vector
|
|
(number)
|
|
(number)))
|
|
|
|
===
|
|
procedure
|
|
===
|
|
(lambda (x) (+ x 1))
|
|
|
|
(define (fib n)
|
|
(if (< n 2) 1
|
|
(+ (fib (- n 1))
|
|
(fib (- n 2)))))
|
|
|
|
---
|
|
(program
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol))
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(number)))
|
|
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(symbol))
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(number))
|
|
(number)
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(number)))
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(number)))))))
|
|
|
|
===
|
|
macro
|
|
===
|
|
(define ~>
|
|
(symtax-rules ()
|
|
[(_ val)
|
|
val]
|
|
[(_ val (f args ...) body ...)
|
|
(~> (f val args ...)
|
|
body ...)]))
|
|
|
|
---
|
|
(program
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(list)
|
|
(list
|
|
(list
|
|
(symbol)
|
|
(symbol))
|
|
(symbol))
|
|
(list
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(symbol))
|
|
(symbol)
|
|
(symbol))
|
|
(list
|
|
(symbol)
|
|
(list
|
|
(symbol)
|
|
(symbol)
|
|
(symbol)
|
|
(symbol))
|
|
(symbol)
|
|
(symbol))))))
|