Added concat example
This commit is contained in:
parent
9d3384805b
commit
77655f3b7f
|
@ -0,0 +1,8 @@
|
|||
define (: ?x ?y ;) (define ?x ?y)
|
||||
: (?x dup) (?x ?x) ;
|
||||
: (?x ?y swap) (?y ?x) ;
|
||||
: (?x drop) () ;
|
||||
: (?x ?y p*) (?x * ?y) ;
|
||||
: square (dup p*) ;
|
||||
|
||||
10 square
|
|
@ -0,0 +1,141 @@
|
|||
define [-- ?x] {}
|
||||
|
||||
define [form ?x ?y] {
|
||||
define ?x ?y
|
||||
}
|
||||
|
||||
define [rule ?x ?y] {
|
||||
define ?x ?y
|
||||
}
|
||||
|
||||
define [?x -> ?y] {
|
||||
define ?x ?y
|
||||
}
|
||||
|
||||
[(?x) = (?x)] -> {
|
||||
true
|
||||
}
|
||||
|
||||
[(?x) = (?y)] -> {
|
||||
false
|
||||
}
|
||||
|
||||
[false or false] -> {
|
||||
false
|
||||
}
|
||||
|
||||
[true or false] -> {
|
||||
true
|
||||
}
|
||||
|
||||
[false or true] -> {
|
||||
true
|
||||
}
|
||||
|
||||
[true or true] -> {
|
||||
true
|
||||
}
|
||||
|
||||
[quote ?x] -> {
|
||||
quote ?x
|
||||
}
|
||||
|
||||
[unquote (quote ?x)] -> {
|
||||
?x
|
||||
}
|
||||
|
||||
form [
|
||||
if ?condition
|
||||
?true
|
||||
else
|
||||
?false
|
||||
]
|
||||
{
|
||||
if/else ?condition {
|
||||
quote ?true
|
||||
} {
|
||||
quote ?false
|
||||
}
|
||||
}
|
||||
|
||||
form [
|
||||
if ?condition
|
||||
?branch
|
||||
]
|
||||
{
|
||||
if/q ?condition {
|
||||
quote ?branch
|
||||
}
|
||||
}
|
||||
|
||||
rule [
|
||||
if/q (true)
|
||||
?branch
|
||||
]
|
||||
{
|
||||
unquote ?branch
|
||||
}
|
||||
|
||||
rule [
|
||||
if/q (false)
|
||||
?branch
|
||||
]
|
||||
{}
|
||||
|
||||
rule [
|
||||
if/else (true)
|
||||
?true
|
||||
?false
|
||||
]
|
||||
{
|
||||
unquote ?true
|
||||
}
|
||||
|
||||
rule [
|
||||
if/else (false)
|
||||
?true
|
||||
?false
|
||||
]
|
||||
{
|
||||
unquote ?false
|
||||
}
|
||||
|
||||
|
||||
[factorial (?x)] -> {
|
||||
if ((?x) = (1)) {
|
||||
1
|
||||
}
|
||||
else {
|
||||
?x * factorial (?x - 1)
|
||||
}
|
||||
}
|
||||
|
||||
[fibonacci (?number)] -> {
|
||||
if((?number) = (0) or (?number) = (1)) {
|
||||
?number
|
||||
}
|
||||
else {
|
||||
fibonacci (?number - 1) + fibonacci (?number - 2)
|
||||
}
|
||||
}
|
||||
|
||||
[range (?low) (?high)] -> {
|
||||
if((?low) = (?high + 1)) {
|
||||
nil
|
||||
}
|
||||
else {
|
||||
?low : range (?low + 1) (?high)
|
||||
}
|
||||
}
|
||||
|
||||
[fold (?operation) (?initial) (nil)] -> {
|
||||
?initial
|
||||
}
|
||||
|
||||
[fold (?operation) (?initial) (?head : ?tail)] -> {
|
||||
?operation ?head (fold (?operation) (?initial) ?tail)
|
||||
}
|
||||
|
||||
[sum ?list] -> {
|
||||
fold (add) (0) ?list
|
||||
}
|
Loading…
Reference in New Issue