|
|
@@ -1,146 +1,97 @@
|
|
|
-make "f [[x] [
|
|
|
- make "g [[y] [return add :x :y]]
|
|
|
- return g 42
|
|
|
-]]
|
|
|
-
|
|
|
-print f 233
|
|
|
-
|
|
|
-make "f1 [[x] [
|
|
|
- make "g1 [[y] [return add :x :y]]
|
|
|
- return :g1
|
|
|
- ]
|
|
|
+print sentence [a] "bc
|
|
|
+print sentence [a [a bd]] [c]
|
|
|
+print sentence "a "be
|
|
|
+print list "ab [b]
|
|
|
+print list [aa] [b]
|
|
|
+print list [ab] "b
|
|
|
+print join [ac] "b
|
|
|
+print join [ad] [b]
|
|
|
+print join [ak [b]] [c]
|
|
|
+print first [ae b c]
|
|
|
+print first [[af] b c]
|
|
|
+print first [[aa b] b c]
|
|
|
+print first [[ae [b]] c]
|
|
|
+print first "habc
|
|
|
+print first 3123
|
|
|
+print first true
|
|
|
+print islist butfirst [a b]
|
|
|
+print butfirst [a [aa b]]
|
|
|
+print butfirst [a [fa b] c]
|
|
|
+print butfirst [a b g c]
|
|
|
+print butfirst [a [a b] [c] k]
|
|
|
+print butfirst "abcdd
|
|
|
+print butlast [aa [b c]]
|
|
|
+print butlast [as b c]
|
|
|
+print butlast [ad b [c d] e]
|
|
|
+make "length
|
|
|
+[
|
|
|
+ [x]
|
|
|
+ [
|
|
|
+ if isempty :x
|
|
|
+ [return 0]
|
|
|
+ [return add length butfirst :x 1]
|
|
|
+ ]
|
|
|
]
|
|
|
-make "c1 f1 42
|
|
|
-make "c2 f1 24
|
|
|
-print c1 1
|
|
|
-print c2 2
|
|
|
-
|
|
|
-make "curry_two [[f x] [
|
|
|
- return [[y] [return f :x :y]]
|
|
|
-]]
|
|
|
-make "f2 [[x y] [
|
|
|
- return add :x :y
|
|
|
-]]
|
|
|
-make "f2p curry_two :f2 42
|
|
|
-
|
|
|
-print f2p 233
|
|
|
-
|
|
|
-make "fact_base [
|
|
|
- [rec x]
|
|
|
- [
|
|
|
- if eq :x 0
|
|
|
- [return 1]
|
|
|
- [return mul :x rec :rec sub :x 1]
|
|
|
- ]
|
|
|
-]
|
|
|
-
|
|
|
-make "fact_simple [
|
|
|
+print length [1 [2 3] 4 5]
|
|
|
+print join [] [2 3 5]
|
|
|
+make "reverse [
|
|
|
[x]
|
|
|
- [return fact_base :fact_base :x]
|
|
|
-]
|
|
|
-
|
|
|
-print fact_simple 5
|
|
|
-
|
|
|
-make "fact_nice [
|
|
|
- [rec]
|
|
|
[
|
|
|
- make "g [
|
|
|
- [x]
|
|
|
+ if isempty :x
|
|
|
+ [return :x]
|
|
|
[
|
|
|
- if eq :x 0
|
|
|
- [return 1]
|
|
|
- [
|
|
|
- make "tmp rec :rec
|
|
|
- return mul :x tmp sub :x 1
|
|
|
- ]
|
|
|
+ if islist :x
|
|
|
+ [return join reverse butfirst :x first :x]
|
|
|
+ [return word reverse butfirst :x first :x]
|
|
|
]
|
|
|
- ]
|
|
|
- return :g
|
|
|
]
|
|
|
]
|
|
|
-
|
|
|
-make "fact_curry fact_nice :fact_nice
|
|
|
-print fact_curry 5
|
|
|
-
|
|
|
-make "fact_nicer [
|
|
|
- [rec]
|
|
|
+print reverse [1 2 3 4]
|
|
|
+print reverse [1 [2 3 3] 4 5]
|
|
|
+make "find [
|
|
|
+ [lst x]
|
|
|
[
|
|
|
- make "g [
|
|
|
- [x]
|
|
|
+ if isempty :lst
|
|
|
+ [return false]
|
|
|
[
|
|
|
- if eq :x 0
|
|
|
- [return 1]
|
|
|
- [return mul :x rec sub :x 1]
|
|
|
+ if eq first :lst :x
|
|
|
+ [return true]
|
|
|
+ [return find butfirst :lst :x]
|
|
|
]
|
|
|
- ]
|
|
|
- return :g
|
|
|
]
|
|
|
]
|
|
|
-
|
|
|
-make "z_comb [
|
|
|
- [g]
|
|
|
+print find [1 2 3] 3
|
|
|
+print find [1 2 3] 5
|
|
|
+print find [1 [2 3] 4] 2
|
|
|
+make "index [
|
|
|
+ [lst x]
|
|
|
[
|
|
|
- make "t [
|
|
|
- [r]
|
|
|
+ if isempty :lst
|
|
|
+ [return -1]
|
|
|
[
|
|
|
- make "y [
|
|
|
- [yy]
|
|
|
+ if eq first :lst :x
|
|
|
+ [return 0]
|
|
|
[
|
|
|
- make "tmp r :r
|
|
|
- return tmp :yy
|
|
|
+ make "i index butfirst :lst :x
|
|
|
+ if eq :i -1
|
|
|
+ [return -1]
|
|
|
+ [return add :i 1]
|
|
|
]
|
|
|
- ]
|
|
|
- return g :y
|
|
|
]
|
|
|
- ]
|
|
|
- return t :t
|
|
|
- ]
|
|
|
-]
|
|
|
-
|
|
|
-make "fact_z z_comb :fact_nicer
|
|
|
-print fact_z 5
|
|
|
-
|
|
|
-make "logic_test [[b] [return b 1 0]]
|
|
|
-
|
|
|
-make "F_TRUE [[x y] [return :x]]
|
|
|
-make "F_FALSE [[x y] [return :y]]
|
|
|
-
|
|
|
-make "F_AND [[p q] [return p :q :p]]
|
|
|
-make "F_OR [[p q] [return p :p :q]]
|
|
|
-make "F_NOT [[p] [return p :F_FALSE :F_TRUE]]
|
|
|
-
|
|
|
-print logic_test F_AND F_AND :F_TRUE :F_TRUE :F_FALSE
|
|
|
-print logic_test F_AND F_OR :F_TRUE :F_FALSE :F_FALSE
|
|
|
-print logic_test F_NOT F_AND :F_TRUE :F_FALSE :F_TRUE
|
|
|
-print logic_test F_OR F_NOT :F_TRUE F_NOT :F_FALSE :F_TRUE
|
|
|
-
|
|
|
-make "church_test [
|
|
|
- [n]
|
|
|
- [
|
|
|
- make "inc [[x] [return add :x 1]]
|
|
|
- return n :inc 0
|
|
|
]
|
|
|
]
|
|
|
-
|
|
|
-make "O [
|
|
|
- [f x]
|
|
|
- [return :x]
|
|
|
-]
|
|
|
-
|
|
|
-make "succ [
|
|
|
- [n]
|
|
|
- [
|
|
|
- make "t [
|
|
|
- [f x]
|
|
|
- [
|
|
|
- make "tt n :f :x
|
|
|
- return f :tt
|
|
|
- ]
|
|
|
- ]
|
|
|
- return :t
|
|
|
- ]
|
|
|
+print index [1 2 3] 1
|
|
|
+print index [1 [2 3] 4] 2
|
|
|
+make "f
|
|
|
+[
|
|
|
+ []
|
|
|
+ [print "a]
|
|
|
]
|
|
|
-
|
|
|
-print church_test succ :O
|
|
|
-print church_test succ succ :O
|
|
|
-print church_test succ succ succ :O
|
|
|
+print "bbbb
|
|
|
+save "a.mua
|
|
|
+erall
|
|
|
+print isname "f
|
|
|
+print isname "run
|
|
|
+load "a.mua
|
|
|
+print isname "f
|
|
|
+load "b.mua
|