aboutsummaryrefslogtreecommitdiffstats
path: root/test.fp
diff options
context:
space:
mode:
Diffstat (limited to 'test.fp')
-rw-r--r--test.fp45
1 files changed, 7 insertions, 38 deletions
diff --git a/test.fp b/test.fp
index 2ae975d..222d919 100644
--- a/test.fp
+++ b/test.fp
@@ -1,56 +1,25 @@
(
; core utilities
- ($x ^x ^x) $dup
($_) $drop
($x $y ^x ^y) $swap
($a $b $c ^b ^a ^c) $rot
(sub) $-
(0 swap - -) $+
- (()) $nil
- (nil eq) $null?
($x x) $force
+ (32 emit) $bl
(10 emit) $cr
- (print) $print
- (4 +) $cell+
- ($a $d 2 alloc $p
- ^a ^p poke
- ^d ^p cell+ poke
- ^p
- ) $cons
- (peek) $car
- (cell+ peek) $cdr
; if-stmt
($c $t $f c ^f ^t rot cswap $_ force) $if
($f $t $c $fn ^f ^t ^c fn) $endif
; range
- ($self $start $end
- ^if (^start ^end eq)
- ^nil
- (^start ^end ^start 1 + self swap cons)
+ ($self $fn $start $end
+ ^if (^start ^end eq) ()
+ (^start fn ^end ^start 1 + ^fn self)
endif
- ) $range
+ ) $each
- ; map [$fn $list -> $out-list]
- ($self $fn $list
- ^if (^list null?)
- ^nil
- (^list car fn ^list cdr ^fn self swap cons)
- endif
- ) $map
-
- ; each [$fn $list]
- ($fn (fn ^nil) map drop) $each
-
- ; implementation
- (0 1 ($self $a $b $n
- ^if (^n 0 eq) (^b) (
- ^n 1 - ^a ^b + ^b self
- ) endif
- ) force) $fibonacci
-
- 10 1 range
- ^fibonacci map
- ^print each
+ 10 0 ($i 10 0 ($j ^i 48 + emit ^j 48 + emit bl) each) each
+ cr
)